HEX
Server: LiteSpeed
System: Linux atali.colombiahosting.com.co 5.14.0-570.12.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 06:11:55 EDT 2025 x86_64
User: coopserp (1713)
PHP: 8.2.29
Disabled: dl,exec,passthru,proc_open,proc_close,shell_exec,memory_limit,system,popen,curl_multi_exec,show_source,symlink,link,leak,listen,diskfreespace,tmpfile,ignore_user_abord,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setid,posix_times,posix_ttyname,posix_uname,proc_get_status,proc_nice,proc_terminate
Upload Files
File: /home/coopserp/public_html/pagelayer-pro.tar
css/premium-frontend.css000064400000071360151526520740011357 0ustar00/*
	Pagelayer Premium Frontend Framework
*/

/* Image hotspot */

.pagelayer-image-hotspots-anim:hover:before{
transform: scale(2);
}
.pagelayer-image-hotspots-anim .fas{
position: relative;
}

.pagelayer-image-hotspots-anim::before {
content: "";
transform: scale(1);
position: absolute;
top:0;
left:0;
bottom:0;
right:0;
pointer-events: none;
animation: pagelayer-hotspot 2s infinite;
}

@keyframes pagelayer-hotspot {
0% {transform: scale(1);opacity: 1;}
100% {transform: scale(1.5); opacity: 0;}
}

.pagelayer-hotspots-icon-holder .pagelayer-tooltip-text{
visibility:hidden;
}

.pagelayer-hotspots-hover .pagelayer-hotspots-icon-holder:hover .pagelayer-tooltip-text,
.pagelayer-hotspots-always .pagelayer-hotspots-icon-holder .pagelayer-tooltip-text,
.pagelayer-hotspots-icon-holder.pagelayer-clicked .pagelayer-tooltip-text{
visibility:visible;
}

/* Image Hotspot end */

/* Video Slider */
.pagelayer-imgsl-box{
position:relative;
}

.pagelayer-video_slider .pagelayer-imgsl-prev a:after{
content: "\f104";
}

.pagelayer-video_slider .pagelayer-imgsl-next a:after{
content: "\f105";
}

.pagelayer-video_slider .pagelayer-imgsl-controls li a:after{
font-family: "FontAwesome", "Font Awesome 5 Free";
background-image: none;
}

/* Video Slider End*/


/* Glow Button */

.pagelayer-btn-anim-glow{
color: #fff;
background: #111;
cursor: pointer;
position: relative;
z-index: 0;
display:inline-block;
line-height:1em;
}

.pagelayer-btn-anim-glow:before{
content: '';
background: linear-gradient(45deg, #ff0000, #ff7300, #fffb00, #48ff00, #00ffd5, #002bff, #7a00ff, #ff00c8, #ff0000);
position: absolute;
top: -2px;
left:-2px;
background-size: 400%;
z-index: -1;
filter: blur(5px);
width: calc(100% + 4px);
height: calc(100% + 4px);
animation: glowing 20s linear infinite;
opacity: 0;
transition: opacity .3s ease-in-out;
}

.pagelayer-btn-anim-glow:active {
color: #000
}

.pagelayer-btn-anim-glow:active:after {
background: transparent;
}

.pagelayer-btn-anim-glow:hover:before {
opacity: 1;
}

.pagelayer-btn-anim-glow:after {
z-index: -1;
content: '';
position: absolute;
background: #111;
left: 0;
top: 0;
}

@keyframes glowing {
0% { background-position: 0 0; }
50% { background-position: 400% 0; }
100% { background-position: 0 0; }
}
/* Glow Button End */

/* Thin Button */
.pagelayer-btn-anim-thin{
transition: all 0.5s;
position: relative;
display: inline-block;
cursor: pointer;
line-height:1em;
z-index: 0;
}

.pagelayer-btn-anim-thin::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
transition: all 0.5s;
background-color: inherit;
border-color: inherit;
border-radius: inherit;
}

.pagelayer-btn-anim-thin::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
transition: all 0.5s;
background-color: inherit;
border-color: inherit;
border-radius: inherit;
}

.pagelayer-btn-anim-thin:hover::before {
transform: rotate(-45deg);
border-color: inherit;
border-radius: inherit;
}

.pagelayer-btn-anim-thin:hover::after {
transform: rotate(45deg);
border-color: inherit;
border-radius: inherit;
}
/* Thin Button End */

/* Slide Button */
.pagelayer-btn-anim-slide{
position: relative;
display: inline-block;
cursor: pointer;
transition: all .35s;
line-height:1em;
}

.pagelayer-btn-text{
position: relative;
z-index: 1;
}

.pagelayer-btn-anim-left:after{
position: absolute;
content: "";
top: 0;
left: 0;
width: 0;
height: 100%;
background: #00ff72;
transition: all .35s;
border-radius: 5px 5px 5px 5px;
}

.pagelayer-btn-anim-right:after{
position: absolute;
content: "";
top: 0;
right: 0;
width: 0;
height: 100%;
background: #00ff72;
transition: all .35s;
border-radius: 5px 5px 5px 5px;
}

.pagelayer-btn-anim-slide:hover{
color: #fff;
}

.pagelayer-btn-anim-slide:hover:after{
width: 100%;
}

/* Slide Button end*/

/* Slide overlay */
.pagelayer-slide-bg-overlay{
position:absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}

.pagelayer-content-slide-bg{
position:absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
animation-timing-function:ease; 
animation-fill-mode: forwards;
}

.pagelayer-owl-item:not(.active) .pagelayer-content_slide .pagelayer-content-slide-bg,
.pagelayer-owl-item:not(.active) .pagelayer-content_slide .pagelayer-wow{
animation-name: none !important;	
}

@keyframes pagelayerKenBurn {0%{transform: scale(1.0);}100%{transform: scale(1.2);}}
@keyframes pagelayerKenBurnReverse{0%{transform: scale(1.2);}100%{transform-origin: bottom left;transform: scale(1.0);}}

.pagelayer-slide-dot-pos-top .pagelayer-owl-dots{
position: absolute; 
top: 0 ;
left: 50%;
transform: translateX(-50%); 
}

.pagelayer-slide-dot-pos-left .pagelayer-owl-dots{
position:absolute;
left:0;
display:flex;
flex-direction:column;
top: 50% !important;
transform: translateY(-50%); 
}

.pagelayer-slide-dot-pos-right .pagelayer-owl-dots{
position:absolute;
right:0;
display:flex;
flex-direction:column;
top: 50% !important;
transform: translateY(-50%); 
}

.pagelayer-slide-arrow-pos-top .pagelayer-owl-prev,
.pagelayer-slide-arrow-pos-top .pagelayer-owl-next{
position:relative;
top:unset;
transform:none;
}

.pagelayer-slide-arrow-pos-top .pagelayer-owl-holder {
display:flex !important;
flex-direction:column;
}

.pagelayer-slide-arrow-pos-top .pagelayer-owl-stage-outer {
order:2 !important;
}

.pagelayer-slide-arrow-pos-top .pagelayer-owl-nav {
order:1 !important;
display:flex; 
}

.pagelayer-slide-arrow-pos-top .pagelayer-owl-dots {
order:3 !important;
}

.pagelayer-slide-arrow-pos-bottom .pagelayer-owl-prev,
.pagelayer-slide-arrow-pos-bottom .pagelayer-owl-next {
position:relative; 
top:unset; 
transform:none;
}

.pagelayer-slide-arrow-pos-bottom .pagelayer-owl-nav {
display:flex;
}

.pagelayer-slide-dot-number .pagelayer-owl-dots {
counter-reset: plSlidePager;
}

.pagelayer-slide-dot-number .pagelayer-owl-dot span::before {
counter-increment: plSlidePager;
content: counter(plSlidePager);
font-weight: 600;
}

/* Audio */

.mejs-container,
.mejs-controls{
	background: none !important;
}

.mejs-container{
width: 100% !important;
height:unset !important;
}

.mejs-playpause-button button,
.mejs-volume-button button{
position: relative !important;
margin: 0 !important;
padding: 15px !important;
width: unset !important;
}

.mejs-playpause-button button:after,
.mejs-volume-button button:after{
font-size: inherit;
font-family: "FontAwesome", "Font Awesome 5 Free";
position: absolute;
top: 50%;
font-weight: 900;
left: 50%;
transform: translate(-35%, -50%);
}

.mejs-play button:after{
content: '\f04b';
}

.mejs-replay button:after{
content: '\f01e';
}

.mejs-mute button:after{
content: '\f028';
}

.mejs-unmute button:after{
content: '\f026';
}

.mejs-button>button{
background: none !important;
}
.mejs-pause button:after{
content: '\f04c';
}

.mejs-controls,
.mejs-horizontal-volume-total,
.mejs-horizontal-volume-current{
position:unset !important;
}

.mejs-controls > * {
width: unset !important;
display: flex !important;
align-items: center;
padding: 0 5px !important;
}

.mejs-controls{
padding:0 !important;
}

.mejs-time-slider,
.mejs-time-rail{
margin: 0 !important;
}

.mejs-horizontal-volume-current{
height: 100% !important;
}

.mejs-time-total{
width: calc( 100% - 10px ) !important;
}

.pagelayer-audio-container *{
height: unset !important;
}

.mejs-time-handle,
.mejs-time-handle-content{
height: 100% !important;
top: 0 !important;
}

.pagelayer-audio-container .mejs-time-buffering,
.pagelayer-audio-container .mejs-time-loaded,
.pagelayer-audio-container .mejs-time-current,
.pagelayer-audio-container .mejs-time-hovered,
.pagelayer-audio-container .mejs-time-float,
.pagelayer-audio-container .mejs-time-float-corner,
.pagelayer-audio-container .mejs-time-float,
.pagelayer-audio-container .mejs-horizontal-volume-current{
height:100% !important;
}

/* Audio end */

/*** Menu List ***/

.pagelayer-menu-item,
.pagelayer-menu-title{
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}

.pagelayer-menu-separeter,
.pagelayer-menu-details{
-webkit-box-flex: 1;
-webkit-flex-grow: 1;
-ms-flex-positive: 1;
flex-grow: 1;
}

.pagelayer-menu-includes{
margin-top: -7px;
}


/*** Postfolio ***/

.pagelayer-postfolio-container{
display: grid;
}

.pagelayer-postfolio-thumb{
display:inline-block;
position:relative;
background-size:cover !important;
background-position:center !important;
}

.pagelayer-postfolio-content{
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}

.pagelayer-postfolio-content .pagelayer-entry-title{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 95%;
text-align: center;
}

.pagelayer-postfolio-content .pagelayer-entry-title,
.pagelayer-postfolio-content:hover .pagelayer-entry-title{
padding:0;
margin:0;
opacity: 0;
}

.pagelayer-postfolio-filter{
text-align:center;
}

.pagelayer-postfolio-btn{
display:inline-block;
padding: 5px 15px;
cursor:pointer;
}

/*** Postfolio End ***/

/* Search Form */
.pagelayer-search-classic .pagelayer-search-fields{
display: flex;
overflow:hidden;
}

.pagelayer-search-classic .pagelayer-search-fields input.pagelayer-search-input{
border-width:0px;
}

.pagelayer-search-classic .pagelayer-search-fields .pagelayer-search-submit{
border-radius:0px;
}

.pagelayer-search-toggle,
.pagelayer-search-full-screen .pagelayer-search-fields{
display:none;
}

.pagelayer-search-full-screen .pagelayer-search-toggle{
display:inline-block;
text-align: center;
}

.pagelayer-search-full-screen .pagelayer-search-fields.show{
position: fixed;
top: 0;
left: 0;
background: #211c1c;
bottom: 0;
right: 0;
z-index: 99;
align-items: center;
display: flex;
text-align: center;
flex-direction: column;
}

.pagelayer-search-full-screen .pagelayer-search-input,
.pagelayer-search-full-screen .pagelayer-search-input:focus{
width: 60%;
text-align: center;
background: transparent;
border-width: 0;
border-bottom-width: 2px;
position: absolute;
top: 50%;
color:#fff;
}

.pagelayer-search-full-screen .pagelayer-search-submit{
display:none;
}

/* Search Form end*/

/* Slide */
.pagelayer-slide-btns>div{
display: inline-block;
}

.pagelayer-slides{
overflow:hidden;
}

.pagelayer-slides .pagelayer-slide,
.pagelayer-slides .pagelayer-content-slide{
height:80vh;
}

.pagelayer-content-slide > *{
flex:1
}

.pagelayer-slides .pagelayer-content-slide{
align-items: center;
display: flex;
flex-wrap:wrap;
}

.pagelayer-slides *{
line-height:1.4;
}

.pagelayer-slide{
height:100%;
}

.pagelayer-slide-holder{
width:50%;
position:relative;
}
/* Slide End */

/* Author Box*/
.pagelayer-author-image{
width: 100px;
}

.pagelayer-author-btn{
display: inline-block;
}

.pagelayer-layout-left{
display:flex;
}

.pagelayer-layout-left .pagelayer-author-profile-desc,
.pagelayer-layout-right .pagelayer-author-profile-desc{
flex:1;
}

.pagelayer-layout-center{
display:black;
}

.pagelayer-layout-right{
display:flex;
flex-direction: row-reverse;
}
/* Author Box end*/

/* Login Box start */

.pagelayer-login-input-field{
display:block;
width:100%;
margin-left:auto;
margin-right:auto;
}

.pagelayer-login-form .pagelayer-rememberMe{
display:inline-block !important;
margin:5px;
}

.pagelayer-login-form .pagelayer-login-wrappers:last-child{
margin-bottom: none !important;
}

.pagelayer-login-input-left{
margin-left: unset;
}

.pagelayer-login-input-right{
margin-right: unset;
}

.pagelayer-login-div label{
display: inline-block;
}

/* Login Box end */

/* SiteMap start */
.pagelayer-sitemap-flex-wrapper{
display:flex;
flex-flow:row wrap;
}
.pagelayer-sitemap-section{

}
/* SiteMap end */

/* Post slider Start*/
.pagelayer-posts-slider-post{
margin:10px;
border:1px solid #c5c5c5;
box-shadow:1px 1px 10px #c6bfbf;
}

.pagelayer-posts-slider-img{
width:100%;
height:12em;
object-fit: cover;
-o-object-fit: cover;
}

.pagelayer-posts-slider-content{
padding:0px 10px 20px;
}

.pagelayer-posts-slider-content p{
margin:0px;
}

.pagelayer-posts-slider-title{
font-size: 20px;
color:#000000;
font-weight: 600;
line-height: 1.2;
margin-top:20px !Important;
margin-bottom: 20px !Important;
}

.pagelayer-posts-slider-excerpt p{
color:#636060;
}

.pagelayer-posts-slider-main{
padding:0px;
list-style-type: none;
}

.pagelayer-posts-slider-post .blog-grid-button{
display: none;
}

.pagelayer-posts-slider-container[hide-posts-title="true"] .pagelayer-posts-slider-title,
.pagelayer-posts-slider-container[hide-posts-image="true"] .pagelayer-posts-slider-featured-img,
.pagelayer-posts-slider-container[hide-posts-date="true"] .pagelayer-post-slider-date,
.pagelayer-posts-slider-container[hide-post-link="true"] .pagelayer-posts-slider-link{
display:none;
}

.pagelayer-prev-arrow:before{
font-family: "fontawesome" !Important; 
content: "\f053" !Important;
color: Red !Important;
font-size:30px !Important;
}

.pagelayer-next-arrow:before{
font-family: "fontawesome" !Important; 
content: "\f054" !Important;
color: Red !Important;
font-size:30px !Important;
}

.pagelayer-posts-slider-main .slick-slide{
display: none;
float: left;
height: auto;
min-height: 1px;
}
/*post slider css end*/

/*fb buttons css start*/
.pagelayer-fb-btn-details{
  padding:20px;
}

/*Review Start*/
.pagelayer-review-author{
position: relative;
}

.pagelayer-review-author .pagelayer-icon-holder{
position: absolute;
top:0px;
right:10px;
}

.pagelayer-review-slide{
border:1px solid #000000;
margin: 0px 0px 5px 0px;
}

.pagelayer-review-slide hr{
margin:0;
}

.pagelayer-review-author-img,
.pagelayer-review-author-details{
display:inline-block;
vertical-align: middle;
}

.pagelayer-review-author-img img{
max-width: 150px;
object-fit: cover;
-o-object-fit: cover;
}

.pagelayer-review-author-details{
vertical-align: middle;
}

.pagelayer-review-text,
.pagelayer-review-author{
margin:5px 10px;
}
/*Review End*/

/*WooCommerce Menu Cart*/
.pagelayer-cart-button-icon[data-counter]:before{
display:none;
}

.pagelayer-menu-cart-toggle[pagelayer-icon="bubble"] .pagelayer-cart-button-icon[data-counter]:before{
content: attr(data-counter);
display: block;
position: absolute;
min-width: 1.6em;
height: 1.6em;
line-height: 1.5em;
top: -.7em;
right: -.7em;
border-radius: 100%;
color: #ffffff;
background-color: #000;
text-align: center;
font-size: 10px;
}

.pagelayer-menu-cart-toggle[pagelayer-icon="plain"] .pagelayer-cart-button-icon[data-counter]:before {
content: attr(data-counter);
display: inline-block;
}

.pagelayer-menu-cart-toggle[pagelayer-empty-indicator="true"] .pagelayer-cart-button-icon[data-counter="0"]:before{
display:none;
}

.pagelayer-menu-cart-hidden{
display:none;
}

.pagelayer-cart-button-icon{
position:relative;
}

.pagelayer-menu-cart-container{
background-color:#e1e1e1;
z-index:999;
padding:20px;
display:none;
}

[pagelayer-container-position="fixed_right"] .pagelayer-menu-cart-container{
position:fixed;
top:0;
right:0;
height:100%;
}

[pagelayer-container-position="fixed_left"] .pagelayer-menu-cart-container{
position:fixed;
top:0;
left:0;
height:100%;
}

[pagelayer-container-position="dropdown"] .pagelayer-menu-cart-container{
position:absolute;
left:auto;
right:auto;
}

.pagelayer-menu-cart-close{
cursor:pointer;
}

.pagelayer-cart-button{
display:inline-block;
}

.pagelayer-menu-cart-container{
overflow-y:auto;
}

.pagelayer-menu-cart-container .woocommerce-mini-cart-item img,
.pagelayer-menu-cart-container .woocommerce-mini-cart-item a{
margin-right:10px;
}

.pagelayer-menu-cart-container .woocommerce-mini-cart-item{
list-style:none
}
/*WooCommerce Menu Cart End*/

/* Call to action */

.pagelayer-cta-img-holder{
overflow:hidden;
width:100%;
}

.pagelayer-cta-image{
-o-object-fit: cover;
object-fit: cover;
/* height:100%; */
background-size: cover;
background-position: center;
}

.pagelayer-cta-image:before{
content:'';
position:absolute;
width:100%;
height:100%;
z-index:1;
}

.pagelayer-call[class*="pagelayer-cta-align"]{
display:flex;
flex-wrap:wrap;
position:relative;
}

.pagelayer-cta-align-right{
flex-direction:row-reverse;
}

.pagelayer-cta-content-holder{
display:flex;
flex-grow:1;
}

.pagelayer-cta-content{
width:100%;
}

.pagelayer-cta-ribbon:before {
content: "";
height: 0;
width: 0;
display: block;
position: absolute;
border-top: solid;
border-bottom: solid;
z-index: -1;
}

.pagelayer-cta-ribbon:after{
content: "";
width: 100%;
left:0;
position:absolute;
}

.pagelayer-cta-ribbon-left:before{
right: 0;
border-right: solid transparent;
}

.pagelayer-cta-ribbon-right:before{
left: 0;
border-left: solid transparent;
}

.pagelayer-cta-ribbon-text{
height:100%;
}

.pagelayer-cta-ribbon-text:before{
content: "";
height: 0;
width: 0;
display: block;
position: absolute;
top: 0;
border-top: solid;
border-bottom: solid;
border-right: solid transparent;
border-left: solid transparent;
}

.pagelayer-cta-layout-overlay .pagelayer-cta-image{
width:100%;
}

.pagelayer-cta-layout-overlay .pagelayer-cta-content-holder{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.pagelayer-cta-zoomin:hover .pagelayer-cta-image{
-ms-transform: scale(1.5);
-webkit-transform: scale(1.5);
transform:scale(1.5);
}

.pagelayer-cta-zoomout:hover .pagelayer-cta-image{
-ms-transform: scale(0.5);
-webkit-transform: scale(0.5);
transform:scale(0.5);
}

.pagelayer-cta-moveup:hover .pagelayer-cta-image{
background-position: top;
}

.pagelayer-cta-movedown:hover .pagelayer-cta-image{
background-position: bottom;
}

.pagelayer-cta-moveleft:hover .pagelayer-cta-image{
background-position: left;
}

.pagelayer-cta-moveright:hover .pagelayer-cta-image{
background-position: right;
}

.pagelayer-cta-content-holder{
z-index:1;
}

/* Call to action end */

/* Table start */
.pagelayer-table{
overflow-x: auto;
}

.pagelayer-table-holder{
width:100%;
}

.pagelayer-table-holder > tbody > tr > td{
word-break:break-word;
}
/* Table end */

/* Pop-up templates start */
.pagelayer-popup-modal{
position: fixed;
height: 100%;
width: 100%;
top: 0;
left: 0;
z-index: 9999;
display:none;
align-items:center;
justify-content:center;
pointer-events:none;
}

.pagelayer-popup-modal-content{
width: 375px;
background-color:#ffffff;
min-height:70px;
position:relative;
pointer-events:all;
}

.pagelayer-popup-content{
height:100%;
overflow:auto;
}

.pagelayer-popup-close{
position:absolute;
top:2%;
left:95%;
cursor:pointer;
display:none;
}

/* Pop-up templates end */

/* Image Portfolio */

.pagelayer-category-holder{
text-align:center;
padding-bottom:20px;
}

.pagelayer-pfbtn{
border:none;
padding:10px 10px;
background-color:#333;
color:#fff;
margin:0 5px;
cursor:pointer;
}

.pagelayer-img_portfolio-holder>div{
width:33%;
}

.pagelayer-single_img{
padding:10px;
}

.pagelayer-pf-img{
position:relative;
}

.pagelayer-pf-img .pagelayer-image-overlay-content{
text-align: center;
width:100%;
}

.pagelayer-single_img .pagelayer-image-overlay{
height: 0%;
opacity:1;
overflow:hidden;
background-color:rgba(3,3,3,0.5);
align-items: center;
}

.pagelayer-single_img:hover .pagelayer-image-overlay{
height: 100%;
}

.pagelayer-overlay-heading{
color:#ffffff;
}

.pagelayer-single_img .pagelayer-image-overlay-text{
color: #c7b7b7;
}

.pagelayer-single_img .pagelayer-image-overlay-icon{
font-size: 40px;
color: #ffffff;
}

.pagelayer-scrolling-effects{
transition: background .3s,border .3s,-webkit-border-radius .3s,-webkit-box-shadow .3s !important;
-webkit-transition: background .3s,border .3s,-webkit-border-radius .3s,-webkit-box-shadow .3s !important; 
transition-delay:0s !important;
-webkit-transition-delay:0s !important;
transition-timing-function: cubic-bezier(0,.32,.07,1.03) !important;
-webkit-transition-timing-function: cubic-bezier(0,.32,.07,1.03) !important;
position:relative;
z-index:1;
}

.pagelayer-mouse-effects{
transition-delay:0s !important;
-webkit-transition-delay:0s !important;
transition-timing-function: cubic-bezier(0,.32,.07,1.03) !important;
-webkit-transition-timing-function: cubic-bezier(0,.32,.07,1.03) !important;
position:relative;
z-index:1;
}


/*Timeline widget*/

/* The actual timeline (the vertical ruler) */
.pagelayer-timeline {
position: relative;
margin: 0 auto;
}

/* The actual timeline (the vertical ruler) */
.pagelayer-timeline::after {
content: '';
position: absolute;
width: 6px;
top: 0;
bottom: 0;
left: 50%;
margin-left: -3px;
}

/* Container around content */
.pagelayer-timeline-container {
padding: 10px 40px;
position: relative;
background-color: inherit;
width: 100%;
display:flex;
box-sizing: border-box;
}

.pagelayer-timeline .pagelayer-timeline-container{
padding-bottom:50px;
}

.pagelayer-timeline-center-circle-container{
height:inherit;
width:40px;
position:relative;
margin-left:auto;
margin-right:auto;
box-sizing: border-box;
}

/* The circles on the timeline */
.pagelayer-timeline-center-circle{
position: absolute;
text-align:center;
background-color: white;
display: flex;
flex-direction: column;
justify-content: center;
z-index: 1;
box-sizing: border-box;
}

.pagelayer-timeline-circle-text p{
margin-top:auto;
margin-bottom:auto;
}

/* Place the container to the left */
.pagelayer-timeline-container-left {
width:50%;
}

.pagelayer-timeline-container-left .pagelayer-timeline-content{
margin-left:auto;
margin-right:10%; 
}

/* Place the container to the right */
.pagelayer-timeline-container-right {
width:50%;
}

.pagelayer-timeline-container-right .pagelayer-timeline-content{
margin-left:10%;
margin-right:auto; 
}

/*both side container css*/
.pagelayer-timeline-left .pagelayer-timeline-container-right,
.pagelayer-timeline-right .pagelayer-timeline-container-left{
visibility:hidden;
}

/* The actual content */
.pagelayer-timeline-content {
padding: 20px 30px;
position: relative;
word-break: break-word;
box-sizing: border-box;
overflow:hidden;
}

.pagelayer-timeline-content .pagelayer-heading-holder *{
margin:0px;
}

@media screen and (max-width: 600px) {
.pagelayer-timeline::after {
left: 31px;
}
.pagelayer-timeline-center-circle-container {
position:absolute;
height:100%;
left:11px;
top:0;
}

.pagelayer-timeline-container{
display:inline-block;
}

.pagelayer-timeline-container-left, .pagelayer-timeline-container-right{
width:100%;
margin:10px !important;
margin-left: 30px !important;
}

.pagelayer-timeline-container-left .pagelayer-timeline-content, .pagelayer-timeline-container-right .pagelayer-timeline-content{
margin:0;
}
}

/*Timeline widget end*/

/*facebook page css start*/

.pagelayer-fb-page-container, .pagelayer-fb-embed-container{
text-align:center;
}

.pagelayer-fb-embed-container .fb-embed{
width:100%;
}

.pagelayer-fb-btn-container .fb-like iframe{
width:auto !important;
}

/*facebook page css end*/

/* pagelayer sticky */
.pagelayer-sticky-ele{
transition: none;
}
/*pagelayer sticky end*/

/* Product image css */
.pagelayer-woo-gallery-left ol{
padding: 0px !important;
margin: 0px !important;
order: 1;
display: grid;
grid-template-columns: repeat(1,auto);
overflow: hidden;
list-style: none;
}

.pagelayer-woo-gallery-left ol li img,
.gallery-thumb-position-left ol li{
width: 100% !important;
height:100%
}

.pagelayer-woo-gallery-left .flex-viewport{
order:2;
}

.pagelayer-woo-gallery-left .woocommerce-product-gallery{	
grid-template-columns: 20% 80%;
display: grid;
overflow: hidden;
box-sizing: border-box;
}

.pagelayer-woo-gallery-right ol{
text-align: left;
display: grid;
grid-template-columns: repeat(1,auto);
overflow: hidden;
list-style: none;
padding: 0px !important;
margin: 0px !important;
}

.pagelayer-woo-gallery-right ol li img,
.gallery-thumb-position-right ol li{
width: 100% !important;
height:100%;
}

.pagelayer-woo-gallery-right .woocommerce-product-gallery{	
grid-template-columns: 80% 20%;
display: grid;
overflow: hidden;
padding: 0;
margin: 0;
}

.pagelayer-woo-gallery-top .flex-viewport{
order:2;
}

.pagelayer-woo-gallery-top ol{
width: 100%;
order: 1;
text-align: left;
display: flex !important;
overflow: hidden;
list-style: none;
padding: 0px !important;
margin: 0px !important;
}

.pagelayer-woo-gallery-top ol li{
flex: 1;
width: 100%;
}

.pagelayer-woo-gallery-top ol li img{
width: 100%;
height: 100%;
}

.pagelayer-woo-gallery-top .woocommerce-product-gallery{	
grid-template-columns: repeat(1, auto);
display: grid;
overflow: hidden;
padding: 0;
margin: 0;
}

.pagelayer-woo-gallery-bottom ol{
width: 100%;
text-align: left;
display: flex !important;
overflow: hidden;
list-style: none;
padding: 0px !important;
margin: 0px !important;
}

.pagelayer-woo-gallery-bottom ol li{
flex: 1;
width: 100%;
}

.pagelayer-woo-gallery-bottom ol li img{
width: 100%;
height: 100%;
}

.pagelayer-woo-gallery-top .woocommerce-product-gallery{	
grid-template-columns: repeat(1, auto);
display: grid;
overflow: hidden;
padding: 0;
margin: 0;
}

.pagelayer-product-images-container .woocommerce-product-gallery,
.pagelayer-product-images-container .flex-control-nav li{
width: 100% !important;
}

.pagelayer-data-tabs-container .woocommerce div.product .woocommerce-tabs ul.tabs li {
margin:0 -2px !important;
border:auto !important;
}

.pagelayer-data-tabs-container .wc-tabs{
margin-bottom:0px !important;
}
/* Product image end*/

/* Before After Start*/
.pagelayer-before-after-container{
width:100%;
height: auto;
margin:0;
}

.pagelayer-before-after-slider{
width:100%;
position:relative;
overflow:hidden;
line-height: 0 !important;
}

.pagelayer-after-image{
position:absolute;
width: 100%;
height:100%;
top:0;
left:0;
overflow:hidden;
z-index:1;
line-height: 0 !important;
clip-path:polygon(50% 0%, 100% 0%, 100% 100%, 50% 100%);
}

.pagelayer-before-image{
height: 100% !important;
}

.pagelayer-before-after-slider-vertical .pagelayer-after-image{
clip-path:polygon(0% 50%, 100% 50%, 100% 100%, 0% 100%);
}

.pagelayer-before-image img,
.pagelayer-after-image img{
width: 100%;
background: hsla(0,0%,100%,.65);
height: 100%;
user-select: none;
object-fit: fill;
}

.pagelayer-resizer{
position: absolute;
display: flex !important;
align-items: center;
top: 0;
height: 100%;
width: 4px;
left: 50%;
background: white;
-ms-touch-action: pan-y;
touch-action: pan-y;
z-index: 1;
cursor: e-resize !important;
}

.pagelayer-before-after-slider-horizontal.resize{
cursor: e-resize !important;
}

.pagelayer-before-after-slider-vertical.resize{
cursor: n-resize !important;
}

.pagelayer-before-after-slider-vertical .pagelayer-resizer{
width: 100%;
height: 4px;
top: 50%;
left: 0% !important;
z-index: 1;
cursor: n-resize !important;
}

.pagelayer-resizer:before{
background: #42414f;
font-weight: 900;
display: flex;
justify-content: center;
align-items: center;
color: white;
position: absolute;
min-width: 20px;
min-height: 20px;
border-radius: 50%;
border: 2px solid;
border-color: rgb(255, 255, 255);
top: 50%;
left: 50%;
box-sizing: unset;
padding: 5px;
transform: translateX(-50%) translateY(-50%);
}

.pagelayer-before-btn,
.pagelayer-after-btn{
font-size: 14px;
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 0;
color: white;
background-color: #129efaff;
font-size: 13px;
padding: 8px 17px;
border: 0px solid #42414f;
cursor: pointer;
border-radius: 2px;
text-align: center;
z-index: 1;
}

.pagelayer-after-btn{
left: auto;
right: 0;
}

.pagelayer-before-after-slider-vertical .pagelayer-before-btn{
top: 0;
left: 50%;
transform: translateX(-50%);
}

.pagelayer-before-after-slider-vertical .pagelayer-after-btn{
left: 50%;
transform: translateX(-50%);
bottom:0%;
top:initial;
right: auto;
}

.pagelayer-before-after-container[data-resize-event="none"] .pagelayer-resizer{
cursor: auto !important;
}

.pagelayer-before-after-container[data-resize-event="none"] .pagelayer-resizer:before{
display:none;
}
/* Before After End*/

/* Image Map Widget */
.pagelayer-imgmap-container {
position: relative;
overflow: hidden;
}

.pagelayer-imgmap-wrapper {
position: absolute;
width: 100%;
height: 100%;
}

.pagelayer-imgmap-svg {
width: 100%;
height: 100%;
margin: 0 !important;
}js/combined.js000064400001243444151526520740007321 0ustar00/*
PAGELAYER
http://pagelayer.com/
(c) Pagelayer Team
*/

var pagelayer_doc_width;

// Things to do on document load
jQuery(document).ready(function(){
	
	// Current width
	pagelayer_doc_width = jQuery(document).width();
	
	// Rows
	jQuery('.pagelayer-row-stretch-full').each(function(){
		pagelayer_pl_row_full(jQuery(this));
	});
	
	jQuery('.pagelayer-anim_heading').each(function(){
		pagelayer_anim_heading(jQuery(this));
	});
	
	// Setup any sliders
	jQuery('.pagelayer-image_slider').each(function(){
		pagelayer_pl_image_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-accordion').each(function(){
		pagelayer_pl_accordion(jQuery(this));
	});
	
	jQuery('.pagelayer-collapse').each(function(){
		pagelayer_pl_collapse(jQuery(this));
	});
	
	jQuery('.pagelayer-tabs').each(function(){
		pagelayer_pl_tabs(jQuery(this));
	});
	
	jQuery('.pagelayer-video').each(function(){
		pagelayer_pl_video(jQuery(this));
	});
	
	jQuery('.pagelayer-image').each(function(){
		pagelayer_pl_image(jQuery(this));
	});
	
	jQuery('.pagelayer-grid_gallery').each(function(){
		pagelayer_pl_grid_lightbox(jQuery(this));
	});
	
	jQuery('.pagelayer-row, .pagelayer-inner_row, .pagelayer-col').each(function(){
		pagelayer_pl_row_video(jQuery(this));
	});
	
	jQuery('.pagelayer-parallax-window img').each(function(){
		pagelayer_pl_row_parallax(jQuery(this));
	});
	
	jQuery('.pagelayer-recaptcha, .pagelayer-g-recaptcha-v3-token').each(function(){
		pagelayer_recaptcha_loader(jQuery(this));
	});
	
	jQuery('.pagelayer-wp_menu').each(function(){
		pagelayer_primary_menu(jQuery(this));
	});
	
	jQuery('.pagelayer-contact').each(function(){
		pagelayer_contact_form(jQuery(this));
	});
	
	jQuery('.pagelayer-countdown').each(function(){
		pagelayer_countdown(jQuery(this));
	});
	
	jQuery('.pagelayer-testimonial_slider').each(function(){
		pagelayer_pl_testimonial_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-social_grp').each(function(){
		pagelayer_pl_social_profile(jQuery(this));
	});
	
	jQuery('.pagelayer-scroll-to-element').each(function () {
		pagelayer_button_element_scroll(jQuery(this));
	});

	jQuery('.pagelayer-bgimg-slider').each(function () {
		pagelayer_pl_row_slider(jQuery(this));
	});

	jQuery('.pagelayer-stars-container').each(function(){
		pagelayer_stars(jQuery(this));
	});
	
	jQuery('.pagelayer-infinite-posts').each(function(){
		pagelayer_infinite_posts(jQuery(this));
	});
	
	jQuery('.pagelayer-youtube-video').each(function(){
		pagelayer_create_yt_player(jQuery(this));
	});

	// We need to call the is visible thing to show the widgets loading effect
	if(jQuery('.pagelayer-counter-content,.pagelayer-progress-container').length > 0){

		// First Call
		pagelayer_counter();
		pagelayer_progress();
		
		jQuery(window).scroll(function() {
			pagelayer_progress();
			pagelayer_counter();
		});
	}
	
	new WOW({boxClass:'pagelayer-wow'}).init();
	
	// Remove pagelayer-wow temporary style after wow init added from wp_head
	jQuery('#pagelayer-wow-animation-style').remove();
	
});

// For automatic row change
jQuery(window).resize(function() {
	
	// Primary Menu
	jQuery('.pagelayer-wp_menu').each(function(){
		pagelayer_primary_menu(jQuery(this));
	});
	
	var new_vw = jQuery(document).width();
	
	if(new_vw == pagelayer_doc_width){
		return false;
	}
	
	pagelayer_doc_width = new_vw;
	
	// Remove style
	jQuery('.pagelayer-row-stretch-full').removeAttr('style');
	
	// Set a timeout to prevent bubbling
	setTimeout(function(){
		
		jQuery('.pagelayer-row-stretch-full').each(function(){
			pagelayer_pl_row_full(jQuery(this));
		});
	
	}, 200);
	
});

// Get document for gutenberg
function pagelayerGetDocumentElement(){
	
	// Find the iframe element with the name "editor-canvas".
	const editorIframe = document.querySelectorAll( 'iframe[name="editor-canvas"]' );

	if(! editorIframe?.[ 0 ]){
		return document;
	}
	
	// Get the document of the iframe.
	const iframeDocument = editorIframe[ 0 ]?.contentWindow?.document || editorIframe[ 0 ]?.contentDocument;

	if ( ! iframeDocument ) {
		return document;
	}
	
	// Set the root element to the iframe document.
	return iframeDocument;
};

// Get Window for gutenberg
function pagelayerGetCurrentWindow(){
	var doc = pagelayerGetDocumentElement();
	return doc.defaultView || window;
}

// Modify jQuery for gutenberg tablet and mobile
function pagelayer_query(sel, doc) {
	doc = doc || pagelayerGetDocumentElement();
	return jQuery(sel, doc);
}

// Check if element is visible
function pagelayer_isVisible(ele) {
	
	var win = pagelayerGetCurrentWindow();
	
	var offset = win.innerHeight;
	var viewTop = win.pageYOffset;
	var viewBottom = viewTop + offset - Math.min(ele.height(), ele.innerHeight());
	var top = ele.offset().top;
	var bottom = top + ele.innerHeight();
	
	if(top <= viewBottom && bottom >= viewTop){
		return true;
	}
	
	return false;
}

// Get media mode
function pagelayer_get_media_mode(){
	
	var win = pagelayerGetCurrentWindow();
	
	if(win.matchMedia("(min-width: "+ (pagelayer_settings['tablet_breakpoint'] + 1) +"px)").matches){
		return 'desktop';
	}
	
	if(win.matchMedia("(max-width: "+ pagelayer_settings['tablet_breakpoint'] +"px) and (min-width: "+ (pagelayer_settings['mobile_breakpoint'] + 1) +"px)").matches){
		return 'tablet';
	}
	
	if(win.matchMedia("(max-width: "+ pagelayer_settings['mobile_breakpoint'] +"px)").matches){
		return 'mobile';
	}
	
	return 'desktop';
}
	  
// Row background video and parallax
function pagelayer_pl_row_video(jEle){
	
	var vEle = jEle.children('.pagelayer-background-video');
	
	// Not a video in the element
	if(vEle.length < 1){
		return true;
	}
	
	var setup = vEle.attr('pagelayer-setup');
	if(setup && setup.length > 0){
		return true;
	}

	var frame_width = vEle.width();
	var frame_height = (frame_width/100)*56.25;
	var height = vEle.height();
	
	if(frame_height < height){
		frame_height = height;
	}
	
	vEle.children().css({'width':frame_width+'px','height':frame_height+'px'});

	if(vEle.find('.pagelayer-youtube-video').length > 0){
		pagelayer_create_yt_player(vEle.find('.pagelayer-youtube-video'));
	}

	vEle.attr('pagelayer-setup', 1);
	
}

function pagelayer_create_yt_player(jEle){

	var pEle = jEle.parent(),
	aspectRatioSetting = '16:9',
	containerWidth = pEle.outerWidth(),
	containerHeight = pEle.outerHeight(),
	aspectRatioArray = aspectRatioSetting.split(':'),
	aspectRatio = aspectRatioArray[0] / aspectRatioArray[1],
	isWidthFixed = containerWidth / containerHeight > aspectRatio,
	width= isWidthFixed ? containerWidth : containerHeight * aspectRatio,
	height= isWidthFixed ? containerWidth / aspectRatio : containerHeight;
	
	var yt_api_interval = setInterval(function(){
		
		if(!(window.YT && YT.loaded)){
			return
		}
		
		clearInterval(yt_api_interval);
		
		var settings ={};
		settings.loop = jEle.attr('data-loop');
		settings.videoid = jEle.attr('data-videoid');
		settings.mute = jEle.attr('data-mute');

		var player;
		
		var onPlayerReady = function(event) {
			event.target.playVideo();
		}

		player = new YT.Player(jEle[0], {
				width: width,
				height: height,
				videoId: settings.videoid,
				playerVars: {
				controls: 0,
				rel: 0,
				loop: settings.loop,
				mute:settings.mute,
				playsinline: 1,
				playlist: settings.videoid,	
			},
			events: {
				'onReady': onPlayerReady,
			}
		});

	}, 500);

}

// Row background parallax
function pagelayer_pl_row_parallax(jEle){
	
	//Parallax background
	var setup = jEle.attr('pagelayer-setup');
	if(setup && setup.length > 0){
		return true;
	}
	
	new pagelayerParallax(jEle);
	jEle.attr('pagelayer-setup', 1);
}

// Adjust rows
function pagelayer_pl_row_full(jEle, html){
	
	html = html || pagelayer_query('html');
	
	// Get current width
	var vw = html[0].clientWidth;
	
	// Now give the row the width
	jEle.css({'width': vw, 'max-width': '100vw'});
	
	// Set the offset
	jEle.offset({left: 0});
	
	// Set a timeout as well as some themes can interfere with us
	setTimeout(function(){
		jEle.offset({left: 0});
	}, 500);
	
};

// Modal open
function pagelayer_render_pl_modal(e){
	jQuery(e.target).closest('.pagelayer-modal-container').find('.pagelayer-modal-content').show();
};

// Modal close
function pagelayer_pl_modal_close(e){
	jQuery(e.target).closest('.pagelayer-modal-content').hide();
}

// Setup the image slider
function pagelayer_pl_image_slider(jEle){
	
	var ul = jEle.find('.pagelayer-image-slider-ul');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);

}

function pagelayer_get_tab_ele(temp_tabCont){
	
	if(!pagelayer_empty(temp_tabCont.children('.pagelayer-ele-wrap').length)){
		return temp_tabCont.children('.pagelayer-ele-wrap').children('.pagelayer-tab');
	}else{
		return temp_tabCont.children('.pagelayer-tab');
	}
}

function pagelayer_tab_show(el, pl_id) {
	
	var parent_id = jQuery(el).closest('.pagelayer-tabs').attr('pagelayer-id');
	
	var temp_tabCont = pagelayer_query('[pagelayer-id='+pl_id+']').closest('.pagelayer-tabcontainer');
	pagelayer_get_tab_ele(temp_tabCont).hide();
	
	pagelayer_query('[pagelayer-id='+pl_id+']').show();
	
	jQuery(el).parent().find('.pagelayer-tablinks').each(function(){
		jQuery(this).removeClass('active');
	});
	
	jQuery(el).addClass("active");
}

var pagelayer_tab_timers = {};

function pagelayer_pl_tabs(jEle) {
	
	var default_active = '';
	var jEle_id = jEle.attr('pagelayer-id');
	var hashTabId = '';	

	var tabCont = jEle.children('.pagelayer-tabcontainer');
	var children = pagelayer_get_tab_ele(tabCont);
	
	// Loop thru
	children.each(function(){
		var tEle = jQuery(this);
		var pl_id = tEle.attr('pagelayer-id');
				
		var title = tEle.attr('pagelayer-tab-title') || 'Tab';
		var id = tEle.attr('id');
		var func = "pagelayer_tab_show(this, '"+pl_id+"')";
		
		var icon = '';
		if(tEle.attr('pagelayer-tab-icon')){
			icon = tEle.attr('pagelayer-tab-icon');
		}
		
		// Set the default tab
		if(tEle.attr('pagelayer-default_active') && !pagelayer_empty(pl_id)){
			default_active = pl_id;
		}
		
		jEle.children('.pagelayer-tabs-holder').append('<span tab-id="'+pl_id+'" id="'+id+'" class="pagelayer-tablinks" onclick="'+func+'"> <i class="'+icon+'"></i> <span>'+title+'</span></span>');
	});

	// Default Active by Hash
	var hash = location.hash.slice(1);
	if (!pagelayer_empty(hash)) {
		var hashTab = jEle.find('#' + hash);
		
		if (!pagelayer_empty(hashTab) && hashTab.length > 0) {
			var currentTab = hashTab.closest('.pagelayer-tablinks');
			if (currentTab.length > 0) {
				var currentTabId = currentTab.attr('tab-id');
				hashTabId = currentTabId;
			}
		}
	}
  
	if(hashTabId.length > 0){
		pagelayer_tab_show(jEle.find('[tab-id=' + hashTabId + ']'), hashTabId);
	// Set the default tab
	}else if(default_active.length > 0){
		pagelayer_tab_show(jEle.find('[tab-id='+default_active+']'), default_active);
	// Set the first tab as active
	}else{
		var first_tab = jEle.find('[tab-id]').first();
		pagelayer_tab_show(first_tab, first_tab.attr('tab-id'));
	}

	try{
		clearInterval(pagelayer_tab_timers[jEle_id]);
	}catch(e){};
	
	var rotate = parseInt(jEle.attr('pagelayer-tabs-rotate'));
	
	// Are we to rotate
	if(rotate > 0){
		
		var i= 0;
		pagelayer_tab_timers[jEle_id] = setInterval(function () {
			
			if(i >= children.length){
				i = 0;
			}
			
			var tabCont = jEle.children('.pagelayer-tabcontainer');
			var tmp_pl_ele = pagelayer_get_tab_ele(tabCont)[i];
			
			var tmp_btn_ele = jEle.find('.pagelayer-tablinks')[i]
			var tmp_pl_id = jQuery(tmp_pl_ele).attr('pagelayer-id');
			
			jEle.find('.pagelayer-tablinks').each(function(){
				jQuery(this).removeClass('active');
			});
			
			jQuery(tmp_btn_ele).addClass("active");
			pagelayer_tab_show(tmp_btn_ele, tmp_pl_id);
			
			i++;
	   
		}, rotate);
	}
	
}

// Setup the Accordion
function pagelayer_pl_accordion(jEle){
	
	var holder = jEle.find('.pagelayer-accordion-holder');
	var accHolder = jEle.find('.pagelayer-accordion_item');
	var scrolltop = false;
	
	if(accHolder.length < 1){
		return false;
	}
		
	var icon = holder.attr('data-icon');
	var active_icon = holder.attr('data-active_icon');
	
	accHolder.find('.pagelayer-accordion-tabs span i').attr('class', icon);
	var currentActiveTab = jEle.find('.pagelayer-accordion_item.active').first();
	
	// Any URL HASH ?
	var hash = location.hash.slice(1);	
	if(!pagelayer_empty(hash)){
		var scrollTab = jEle.find('#'+hash);
	
		if(!pagelayer_empty(scrollTab) && scrollTab.length > 0){
			currentActiveTab = scrollTab.closest('.pagelayer-accordion_item');
		}
	}
	
	holder.unbind('click');
	holder.on('click', '.pagelayer-accordion-tabs', function(){
		
		var currentTab = jQuery(this).closest('.pagelayer-accordion_item');
		
		if(currentTab.hasClass('active') && currentTab.children('.pagelayer-accordion-panel').is(':visible')){
			currentTab.removeClass('active').children('.pagelayer-accordion-panel').slideUp('slow');
			currentTab.find('.pagelayer-accordion-tabs span i').attr('class', icon);
			return true;
		}
		
		accHolder.find('.pagelayer-accordion-tabs span i').attr('class', icon);
		accHolder.removeClass('active').filter(function(index){
			return accHolder[index]!=currentTab[0];
		}).children('.pagelayer-accordion-panel').slideUp('slow');							
	
		currentTab.addClass('active').children('.pagelayer-accordion-panel').slideDown('slow');
		currentTab.find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
		
	});
	
	// To prevent default active click in gutenberg
	var setup = jEle.attr('pagelayer-setup');
	
	// Already setup ?
	if(setup && setup.length > 0){
		return;
	}
	
	jEle.attr('pagelayer-setup', 1);
	
	// If active first tab from all active tabs
	currentActiveTab.removeClass('active');
	currentActiveTab.find('.pagelayer-accordion-tabs').click();
}

// Setup the Collapse
function pagelayer_pl_collapse(jEle){
	
	var holder = jEle.find('.pagelayer-collapse-holder');
	var tabs = jEle.find('.pagelayer-accordion_item');
		
	if(tabs.length < 1){
		return false;
	}
		
	var setup = tabs.attr('pagelayer-setup');
	var icon = holder.attr('data-icon');
	var active_icon = holder.attr('data-active_icon');
	
	// Any URL HASH ?
	var hash = location.hash.slice(1);	
	if(!pagelayer_empty(hash)){
		var scrollTab = jEle.find('#'+hash);
	
		if(!pagelayer_empty(scrollTab) && scrollTab.length > 0){
			scrollTab.closest('.pagelayer-accordion_item').addClass('active');
		}
	}
	
	var activeTabs = jEle.find('.pagelayer-accordion_item.active');

	tabs.find('.pagelayer-accordion-tabs span i').attr('class', icon);
	jQuery(activeTabs).addClass('active').children('.pagelayer-accordion-panel').slideDown('slow');
	jQuery(activeTabs).find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
		
	// Already setup ?
	if(setup && setup.length > 0){
		tabs.find('.pagelayer-accordion-tabs').unbind('click');
	}

	tabs.find('.pagelayer-accordion-tabs').click(function(){
		
		var currentTab = jQuery(this).closest('.pagelayer-accordion_item');
		
		if(currentTab.hasClass('active')){
			currentTab.removeClass('active').children('.pagelayer-accordion-panel').slideUp('slow');
			currentTab.find('.pagelayer-accordion-tabs span i').attr('class', icon);
			return true;
		}
			
		currentTab.addClass('active').children('.pagelayer-accordion-panel').slideDown('slow');
		currentTab.find('.pagelayer-accordion-tabs span i').attr('class', active_icon);
		
	});
	
	// Set that we have setup everything
	tabs.attr('pagelayer-setup', 1);
	
}

// Counter
function pagelayer_counter(){
	
	pagelayer_query('.pagelayer-counter-content').each(function(){
		
		var jEle = jQuery(this);
		
		if(pagelayer_isVisible(jEle)){
			
			var setup = jEle.attr('pagelayer-setup');
			
			// Already setup ?
			if(setup && setup.length > 0){
				return true;
			}
			
			var options = {};
			options['duration'] = jEle.children('.pagelayer-counter-display').attr('pagelayer-counter-animation-duration');
			options['delimiter'] = jEle.children('.pagelayer-counter-display').attr('pagelayer-counter-seperator-type');
			options['toValue'] = jEle.children('.pagelayer-counter-display').attr('pagelayer-counter-last-value');					
			jEle.children('.pagelayer-counter-display').numerator( options );
		
			// Set that we have setup everything
			jEle.attr('pagelayer-setup', 1);
			
		}
	});
}

function pagelayer_progress(){
	pagelayer_query('.pagelayer-progress-container').each(function(){
		var jEle = jQuery(this);
		
		if(pagelayer_isVisible(jEle)){
			
			var setup = jEle.attr('pagelayer-setup');
			if(setup && setup.length > 0){
				return true;
			}
			
			var progress_width = jEle.children('.pagelayer-progress-bar').attr('pagelayer-progress-width');
			if(progress_width == undefined){
				progress_width = "1";
			}
			
			var width = 0;
			var interval;
			
			var progress = function(){
				if (width >= progress_width) {
					clearInterval(interval);
				} else {
					width++;
					jEle.children('.pagelayer-progress-bar').css('width', width + '%'); 
					jEle.find('.pagelayer-progress-percent').text(width * 1  + '%');
				}
			}
			interval = setInterval(progress, 30);
			jEle.attr('pagelayer-setup', 1);
			
		}
	});
}

// Dismiss Alert Function
function pagelayer_dismiss_alert(x){
	
	if(!pagelayer_empty(pagelayer_is_live)){
		return;
	}
	
	jQuery(x).parent().parent().fadeOut();
}

// Video light box handler
function pagelayer_pl_video(jEle){
	var videoIframe = jEle.find('.pagelayer-video-iframe');
	// Adding loop, autoplay and mute properties on video before loading 
	videoIframe.on('load', function() {
		
		// Checking of video source if it is youtube or vimeo because 
		// TODO: Need to check, if this is not local file then return
		if(jQuery(this)[0].src.indexOf('youtube.com') != -1 || jQuery(this)[0].src.indexOf('vimeo.com') != -1){
			return;
		}
		
		var vidElm = jQuery(this).contents().find('video');
		var vidSrc = (pagelayer_empty(vidElm[0].src)) ? vidElm.children()[0].src : vidElm[0].src;	
		
		if(vidSrc[vidSrc.indexOf('&loop=')+6] == 1){
			vidElm.attr('loop','loop');
		}
		if(vidSrc[vidSrc.indexOf('&autoplay=')+10] == 0){
			vidElm.removeAttr('autoplay');
			vidElm[0].pause();
		}else if(vidSrc[vidSrc.indexOf('&autoplay=')+10] == 1){
			vidElm.attr('autoplay','');
			vidElm.attr('playsinline','');			
		}
		if(vidSrc[vidSrc.indexOf('&mute=')+6] == 1){
			vidElm[0].muted = "muted";
			vidElm.attr('muted','');	
		}
	});
	
	// A tag will be there ONLY if the lightbox is on
	var overlayval = jEle.find('.pagelayer-video-overlay');	
	var a = jEle.find(".pagelayer-video-holder a");
	
	// No lightbox
	if(a.length < 1 && pagelayer_empty(overlayval)){
		return;
	}

	a.nivoLightbox({
		effect: "fadeScale",
	});
	
	jEle.find(".pagelayer-video-holder .pagelayer-video-overlay").on("click", function(ev) {

		var target = jQuery(ev.target);

		if (!target.parent("a").length) {
			videoIframe[0].src = videoIframe[0].src.replace("&autoplay=0", "rel=0&autoplay=1");
			jQuery(this).hide();
		}
	});
	
}

// Image light box handler
function pagelayer_pl_image(jEle){
	
	// Drag and Drop function for image
	if (typeof pagelayer_preDAndD_image !== "undefined") {
		pagelayer_preDAndD_image(jEle);
	}
	
	// A tag will be there ONLY if the lightbox is on
	var a = jEle.find("[pagelayer-image-link-type=lightbox]");
	
	// No lightbox
	if(a.length < 1){
		return;
	}
	
	a.nivoLightbox({
		effect: "fadeScale",
	});
}

function pagelayer_stars(jEle){

	var setup = jEle.attr('pagelayer-setup');
	if(setup && setup.length > 0){
		return true;
	}
	var count = jEle.attr('pagelayer-stars-count');
		
	if (isNaN(count)) {
		count = '0';
	}
		
	i = 0;
	var stars = "";
	while(i < count){			
		stars +='<div class="pagelayer-stars-icon pagelayer-stars-empty"><i class="fas fa-star" aria-hidden="true"></i></div>';
		i++;
	}

	jEle.empty();
	jEle.append(stars);
	var starsval = jEle.attr('pagelayer-stars-value');
		
	if (isNaN(starsval)) {
		starsval = count;
	}

	starsval = starsval.split('.');		
	var fullstars = starsval[0];
	var value =  starsval[1];
	var halfstar = parseInt(fullstars) + 1;
	var emptystars = parseInt(fullstars) + 2;
	jEle.children('.pagelayer-stars-icon').attr("class","pagelayer-stars-icon");
	jEle.children('.pagelayer-stars-icon:nth-child(-n+'+ fullstars +')').addClass('pagelayer-stars-full'); 
	if(value != undefined){
		jEle.children('.pagelayer-stars-icon:nth-child('+ halfstar +')').addClass('pagelayer-stars-'+value);		
	}else{
		jEle.children('.pagelayer-stars-icon:nth-child('+ halfstar +')').addClass('pagelayer-stars-empty');
	}
	jEle.children('.pagelayer-stars-icon:nth-child(n+'+ emptystars +')').addClass('pagelayer-stars-empty'); 		
	jEle.attr('pagelayer-setup', 1);
}

// Grid Gallery pagination Off On function
function pagelayer_pl_grid_paginate(gridCont, pagination, pageValue, gridValue){
	gridCont.hide();
	pagination.removeClass('active');
	pagination.eq(pageValue).addClass('active');
	gridCont.eq(gridValue).show();
}

//Grid Gallery Lightbox
function pagelayer_pl_grid_lightbox(jEle){
	
	// Grid Gallery pagination settings
	var gridCont = jEle.find('.pagelayer-grid-gallery-container').children();
	var pagination = jEle.find('.pagelayer-grid-gallery-pagination ul').children();
	gridCont.hide();
	gridCont.eq(0).show();
	// Adding event listners to pagination
	jEle.find('.pagelayer-grid-page-item').each(function(){
		jQuery(this).on('click', function(event){
			var text = jQuery(this).text();
			switch(text){
				case '«':
					pagelayer_pl_grid_paginate(gridCont, pagination, 1, 0);
					break;
				case '»':
					pagelayer_pl_grid_paginate(gridCont, pagination, (pagination.length-2), (gridCont.length-1));
					break;
				default:
					pagelayer_pl_grid_paginate(gridCont, pagination, text, text-1);
					break;
			}
		});
	});	

	// A tag will be there ONLY if the lightbox is on
	var a = jEle.find("[pagelayer-grid-gallery-type=lightbox]");
	
	// No lightbox
	if(a.length < 1){
		return;
	}
	
	a.nivoLightbox({
		effect: "fadeScale",
		keyboardNav: true,
		clickImgToClose: false,
		clickOverlayToClose: true,
	});
}

// Is string?
function pagelayer_is_string(str){
   
   if(typeof str == 'string'){
	   return true;
   }
   
   return false;
}

// PHP equivalent empty()
function pagelayer_empty(mixed_var) {

  var undef, key, i, len;
  var emptyValues = [undef, null, false, 0, '', '0'];

  for (i = 0, len = emptyValues.length; i < len; i++) {
	if (mixed_var === emptyValues[i]) {
	  return true;
	}
  }

  if (typeof mixed_var === 'object') {
	for (key in mixed_var) {
	  // TODO: should we check for own properties only?
	  //if (mixed_var.hasOwnProperty(key)) {
	  return false;
	  //}
	}
	return true;
  }

  return false;
};

function pagelayer_fetch_dataAttrs(ele, prefix){
	
	var options = {};
	
	jQuery.each(ele.get(0).attributes, function(i, attrib){
		
		//console.log(attrib);
		if(attrib.name.includes(prefix)){
			
			var opt_name = attrib.name.substring(prefix.length);
			
			// Check for any Uppercase attribute
			if(opt_name.includes('-')){
				
				opt_name = opt_name.split('-');
				//console.log(opt_name);
				var opt_arr = [];
				jQuery.each(opt_name, function(key, value) {
					if(key != 0){
						opt_arr.push(value.charAt(0).toUpperCase() + value.slice(1));
					}else{
						opt_arr.push(value);
					}
				});
				//console.log(opt_arr);
				opt_name = opt_arr.join('');
			}
			
			// Make the values correct
			var val = attrib.value;
			if(val == 'true') val = true;
			if(val == 'false') val = false;
			if(jQuery.isNumeric(val)) val = parseInt(val);
			
			options[opt_name] = val;
		}
	});
	
	//console.log(options);
	
	if(options['controls']){
		switch(options['controls']){
			case 'arrows':
				options['nav'] = true;
				options['dots'] = false;
				break;
			case 'pager':
				options['dots'] = true;
				options['nav'] = false;
				break;
			case 'none':
				options['nav'] = false;
				options['dots'] = false;
				break;
		}
	}else{
		options['nav'] = true;
		options['dots'] = true;
	}
	
	if(options['animateIn']){
		switch(options['controls']){
			case 'horizontal':
				options['animateIn'] = 'slideInLeft';
				break;
			case 'vertical':
				options['animateIn'] = 'slideInDown';
				break;
			case 'kenburns':
				options['animateIn'] = 'zoomIn';
				break;
			default:
				options['animateIn'] = options['animateIn'];
		}
	}
	
	if(!options['items']){
		options['items'] = 1;
	}
	
	options['responsive'] = {
		0:{items: 1},
		500:{items: options['items']}
	}

	options['responsiveRefreshRate'] = 1000;
	
	// If we are in editor don't loop the Owl items
	if (window.location.href.indexOf('pagelayer-live=1') > -1) {
		//console.log('here');
		options['loop'] = false;
	}
	
	return options;
}

function pagelayer_owl_init(jEle, ul, options){
	
	//console.log(options);
	var setup = jEle.attr('pagelayer-setup');
	var id = jEle.closest('[pagelayer-id]').attr('[pagelayer-id]');
	
	if( options.navtext ) {
		var right = options.navtext.replace('left','right');
		options.navText = [`<i class="${options.navtext}"></i>`, `<i class="${right}"></i>`];
	}
	
	// Already setup ?
	if(setup && setup.length > 0){
		return true;
	}
	
	const wind = pagelayerGetCurrentWindow();
	options['responsiveBaseElement'] = wind;
	
	var owlCar = ul.pagelayerOwlCarousel(options);
	
	// Refreshing Image slider after first load of page.
	var referrerOwl = function(){
		setTimeout(function(){
			owlCar.trigger('refresh.owl.carousel');
		},700);
	}
	
	referrerOwl();
	
	// To prevent slider drag inside the editable area
	jEle.on('mousedown', function(e){
		var target = e.target;
		
		var isEditable = jQuery(target).closest('[contenteditable="true"]');
		
		if(isEditable.length < 1){
			return;
		}
		
		isEditable.on('mousedown.owl.core dragstart.owl.core selectstart.owl.core touchstart.owl.core touchcancel.owl.core', function(e){
			e.stopPropagation();
		});
		
	});
	
	// Gutenberg responsive Handler
	if(wind != window){		
		jQuery(wind).unbind('resize.pl_'+id, referrerOwl);
		jQuery(wind).on('resize.pl_'+id, referrerOwl);
	}
	
	// Set that we have setup everything
	jEle.attr('pagelayer-setup', 1);
	
}

// recaptcha handler
function pagelayer_recaptcha_loader(jEle, loadScript){
	
	loadScript = loadScript || false;
	
	// Render recaptcha
	var reParam = '';
	var sitekey = jEle.data("sitekey");
	
	if(!pagelayer_empty(pagelayer_recaptch_lang)){
		reParam = '&hl='+pagelayer_recaptch_lang;
	}
	
	// Add recaptcha script
	if(pagelayer_empty(window.grecaptcha) && !pagelayer_empty(loadScript)){
		var render = (pagelayer_recaptch_version == 'v3') ? sitekey : 'explicit';
		pagelayer_query('body').append('<script src="https://www.google.com/recaptcha/api.js?render='+render+reParam+'" async defer></script>');
	}
	
	// Render recaptcha
	var recaptcha_interval = setInterval(function(){
		
		if(!pagelayer_empty(window.grecaptcha)){
			grecaptcha.ready(function() {
				try{
					// Call grecaptcha.execute() to trigger reCAPTCHA v3 and get a token
					if(pagelayer_recaptch_version == 'v3'){
						var form = jEle.closest('form');
						form.find('[type="submit"]').off('click').on('click', function(e){
							e.preventDefault();
							grecaptcha.execute(sitekey, { action: 'submit' }).then(function (token) {
								// Append the token to the form or element to be submitted
								form.find('input.pagelayer-g-recaptcha-v3-token').val(token);
								if(form[0].requestSubmit){
									form[0].requestSubmit();
								}else{
									form.submit();
								}
							});
						});
					}else{					
						var widgetID = grecaptcha.render(jEle.get(0), {'sitekey' : sitekey});
						jEle.attr('recaptcha-widget-id', widgetID);
					}
				}catch(e){
					console.log("There is some issue in rendering reCaptcha. Please check your recaptcha site-key !");
				}
				
			});
			clearInterval(recaptcha_interval);
		}

	}, 500);
 
}

// Scroll to element button effect
function pagelayer_button_element_scroll(jEle) {

	var speed = parseInt(jEle.attr('pagelayer_scrollto_speed') * 1000);
	var idspacing = 0;
	var scrollId = jEle.attr('pagelayer_scrollto_id');

	if(jEle.attr('pagelayer_scrollto_type') == 'toid'){

		var scrolltoEle = pagelayer_query('#' + scrollId);

		if(pagelayer_empty(scrollId) || scrolltoEle.length < 1){
			return;
		}

		var idpos = parseInt(scrolltoEle.offset().top);
		var spacing = parseInt(jEle.attr('pagelayer_scrollto_id_viewport'));

		if (isNaN(spacing)) {
			spacing = 0;
		}

		idspacing = idpos + spacing;
		
	}

	jEle.on('click', function (e) {
		e.preventDefault();
		pagelayer_query('html, body').animate({ scrollTop: idspacing }, speed);
	});
	
}

////////////
// Freemium
////////////

// Contact Form handler - Premium
function pagelayer_contact_form(jEle){
	
	jEle = jQuery(jEle);
	var id = jEle.attr('pagelayer-id');
	
	// Set pagelayer id to input field
	jEle.find('form input[name="cfa-pagelayer-id"]').val(id);
 
}

// Contact Form Submit handler - Premium
function pagelayer_contact_submit(jEle, e){
	e.preventDefault();
	
	// Checking for required checkboxes.
	for(var checkbox_div of jQuery(jEle).find('.pagelayer-contact-checkbox')){
		checkbox_div = jQuery(checkbox_div);
		if(checkbox_div.attr('required') == 'required'){
			if(pagelayer_empty(checkbox_div.find('input:checked').length)){
				alert('Kindly select the required checkbox');
				return;
			}
		}		
	}
	
	// Trigger an action
	jQuery(document).trigger('pagelayer_contact_submit', e, jEle);
	
	// Disabling submit button with loading animation.
	jQuery(jEle).find('.pagelayer-contact-submit-btn').prop('disabled', true);
	jQuery(jEle).find('.pagelayer-contact-submit-btn .fa-spin').show('0.6');
	
	//var fdata = jQuery(jEle).closest('form').serialize();
	var redirect = jQuery(jEle).find('input[name="cfa-redirect"]');
	var formData = new FormData( jQuery(jEle)[0] );
	var par = jQuery(jEle).parent();
	
	// Append the nonce
	formData.append('pagelayer_nonce', pagelayer_global_nonce);
	
	// Hide any message
	par.find(".pagelayer-message-box").hide();
	
	// Message pos to use ?
	var msg_pos = 'top';	
	if(par.parent().hasClass('pagelayer-message-box-bottom')){
		msg_pos = 'bottom';
	}
	
	par.find(".pagelayer-message-box").removeClass('pagelayer-cf-msg-err pagelayer-cf-msg-suc');
	
	jQuery.ajax({
		url: pagelayer_ajaxurl+'action=pagelayer_contact_submit',
		type: "POST",
		data: formData,
		processData: false,
		contentType: false,
		cache:false,
		success:function(result){
			var json = jQuery.parseJSON(result);
			
			jQuery(jEle).find('.pagelayer-contact-submit-btn').prop('disabled', false);
			jQuery(jEle).find('.pagelayer-contact-submit-btn .fa-spin').hide('0.6');
			
			if('success' in json){
				par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-suc').html(json['success']).fadeIn();
				
				if(redirect.length > 0 && !pagelayer_empty(redirect.val())){
					window.location.href = redirect.val();
				}
			}else{
				par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-err').html(json['failed']).fadeIn();
			}
		},
		error:function(result){
			par.find(".pagelayer-message-"+msg_pos).addClass('pagelayer-cf-msg-err').html(json['failed']).fadeIn();
		}
	});
	jEle.reset();
	
	jQuery(jEle).find('.pagelayer-recaptcha').each(function(){
		var widgetID = jQuery(this).attr('recaptcha-widget-id');
		
		if(!pagelayer_empty(window.grecaptcha)){
			grecaptcha.reset(widgetID);
		}
	});
	
	return false;
}

// Primary Menu Handler - Premium
function pagelayer_primary_menu(jEle){
	
	var container = jEle.find('.pagelayer-wp-menu-container');
	var menu_bar = jEle.find('.pagelayer-primary-menu-bar i');
	var menu_holder = jEle.find('.pagelayer-wp-menu-holder');
	var layout = menu_holder.attr('data-layout');
	var submenu_ind = menu_holder.attr('data-submenu_ind');
	var responsive = menu_holder.attr('data-responsive');
	var drop_breakpoint = menu_holder.attr('data-drop_breakpoint');
	var close = jEle.find('.pagelayer-wp_menu-close');
	
	var media_mode =  pagelayer_get_media_mode();
	
	if( (drop_breakpoint == 'tablet' && (media_mode == 'tablet' || media_mode == 'mobile')) || (drop_breakpoint == 'mobile' && media_mode == 'mobile') ){
		
		menu_holder.addClass('pagelayer-wp-menu-dropdown');
		container.addClass('pagelayer-menu-type-dropdown');
		container.removeClass('pagelayer-menu-type-'+layout);
		layout = 'dropdown';
		
	}else{
		menu_holder.removeClass('pagelayer-wp-menu-dropdown');
		container.removeClass('pagelayer-menu-type-dropdown');
		container.addClass('pagelayer-menu-type-'+layout);
	}
	
	// Set mega menu width
	// Wait for all other animations to finish
	setTimeout(function(){

		container.find('.pagelayer-mega-menu-item, .pagelayer-mega-column-item').each(function(){
  
			var liEle = jQuery(this),
			lEle = liEle.find('.pagelayer-nav_menu_item').first(),
			megaHolder = lEle.closest('.pagelayer-mega-menu'),				
			setClass = 'pagelayer-set-position';				
			
			if(liEle.hasClass('pagelayer-mega-column-item')){
				megaHolder = liEle.children('.sub-menu');
			}
			
			if(megaHolder.length < 1){
				return;
			}
						
			var Css = {};
			
			// Remove all css settings
			jQuery(document).unbind('scroll.megaMenu');
			megaHolder.css({'width' : '', 'left' : '', 'max-width' : '', 'max-height' : ''});
			
			if(layout == 'dropdown'){
				return;
			}
			
			// Set active to get position
			megaHolder.addClass(setClass);
			
			var megaLeft = megaHolder.offset().left,
			megaWidth = lEle.attr('pagelayer-mega-width'),
			wContainer = lEle.closest('.pagelayer-wp-menu-container'),
			megaCustomWidth = lEle.attr('pagelayer-mega-custom-width') || '',
			widthEle;
			
			// Is vertical menu?
			if(layout == 'vertical'){
				var docWidth = jQuery('body').width();
				var vWidth = docWidth - megaLeft;
				
				Css['max-width'] = vWidth;
				Css['width'] = vWidth;
				
				if(megaWidth == 'custom'){
					Css['width'] = megaCustomWidth;
				}
				
				megaHolder.css(Css);
				megaHolder.removeClass(setClass);
				return;
			}

			var megaMenuHeight = function(e){
				
				if(!pagelayer_empty(e) && megaHolder.is(':visible')){
					return;
				}

				var windowHeight = jQuery(window).height();
				var ulBottom = megaHolder.closest('.pagelayer-wp_menu-ul')[0].getBoundingClientRect().bottom;
				megaHolder.css('max-height', windowHeight - ulBottom);
			};

			megaMenuHeight();
			jQuery(document).on('scroll.megaMenu', megaMenuHeight);
			
			switch(megaWidth){
				case 'row_container':
					widthEle = lEle.closest('.pagelayer-row[pagelayer-id]');
					Css['width'] = widthEle.width();
					break;
				case 'custom':
					widthEle = lEle.closest('li');
					Css['width'] = megaCustomWidth;					
					break;
				default :
					widthEle = wContainer;
					Css['width'] = widthEle.width();
			}
			
			if(widthEle.length > 0){
				var wLeft = widthEle.offset().left;
				
				if( wLeft < megaLeft ){
					Css['left'] = (wLeft) - (megaLeft);
				}
			
			}
			
			megaHolder.css(Css);
			var mRect = megaHolder[0].getBoundingClientRect();
			var wRect = wContainer[0].getBoundingClientRect();
			
			// Set mega menu position
			if(megaWidth != 'custom' || mRect.right < wRect.right){
				megaHolder.removeClass(setClass);
				return;
			}
			
			var left = parseInt(megaHolder.css('left'));
			var moveLeft = mRect.right - wRect.right;
			
			if(mRect.left < moveLeft){
				moveLeft = moveLeft - (moveLeft - mRect.left);
			}
			
			left = left - moveLeft;
			megaHolder.css({'left': left});
			megaHolder.removeClass(setClass);
		});
  
	}, 500);
	
	// Menu toggle
	var toggle_class;
	jQuery(menu_bar).unbind('click');
	jQuery(menu_bar).click(function(){
		jQuery(container).toggleClass('pagelayer-togglt-on');
		
		toggle_class = jQuery(this).data('icon');
		toggle_class = ( pagelayer_empty(toggle_class) ? 'fas fa-bars' : toggle_class );
		
		if(jQuery(container).hasClass('pagelayer-togglt-on')){
			jQuery(this).removeClass(toggle_class);
			jQuery(this).addClass('fas fa-times');
		}else{
			jQuery(this).removeClass('fas fa-times');
			jQuery(this).addClass(toggle_class);
		}
	});
	
	// If has sub-menu the as icon
	var sub_menuEle = jQuery(container).find('.pagelayer-wp_menu-ul li.menu-item-has-children:not(.pagelayer-mega-menu-item), .pagelayer-wp_menu-ul li.pagelayer-mega-menu-item');
	
	var aEle_sub_menu = sub_menuEle.children('a');
	var afterIconSpan = aEle_sub_menu.children('.after-icon')
	if (aEle_sub_menu.children('.after-icon').length < 1) {
		aEle_sub_menu.append('<span class="after-icon fa fa-' + submenu_ind + '"></span>');
	}else{
		// For gutenberg
		afterIconSpan.attr('class', 'after-icon fa fa-' + submenu_ind);
	}

	// Toggle Sub nav
	var after_icon = jQuery(container).find('.pagelayer-wp_menu-ul li.menu-item-has-children .after-icon, .pagelayer-wp_menu-ul li.pagelayer-mega-menu-item .after-icon');
	
	after_icon.unbind('click');
	after_icon.click(function(e){
		e.preventDefault();
		if(window.matchMedia("(max-width: "+pagelayer_settings['tablet_breakpoint']+"px)").matches || layout != 'horizontal'){
			jQuery(this).closest('li').toggleClass('pagelayer-active-sub-menu');

		}else{
			jQuery(this).closest('li').removeClass('pagelayer-active-sub-menu');
		}
	});
	
	close.unbind('click');
	close.click(function(){
		jQuery(container).toggleClass('pagelayer-togglt-on');
		jQuery(menu_bar).removeClass('fas fa-times');
		jQuery(menu_bar).addClass(toggle_class);
	});
	
	// To edit the mega menu in live editor
	jQuery(document).trigger('pagelayer_primary_menu_setup_end', [jEle]);	
}

var count_int ={};
// Show countdown render
function pagelayer_countdown(jEle){
	
	var expiry_date = jEle.find('.pagelayer-countdown-container').attr('pagelayer-expiry-date');
	var timetype = jEle.find('.pagelayer-countdown-container').attr('pagelayer-time-type');
	var jEle_id = jEle.attr('pagelayer-id');
	
	if(pagelayer_empty(expiry_date) || expiry_date == "{{date}}"){
		var expiry_date = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
	}
	
	var now;
	if(timetype == "server"){
		now = new Date(pagelayer_server_time*1000).getTime();
	}else{
		now = new Date().getTime();
	}

	var countDownDate = new Date(expiry_date).getTime();
	var distance = countDownDate - now;

	clearInterval(count_int[jEle_id]);
	count_int[jEle_id] = setInterval(function() {
		
		// Time calculations for days, hours, minutes and seconds
		var days = Math.floor(distance / (1000 * 60 * 60 * 24));
		var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
		var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
		var seconds = Math.floor((distance % (1000 * 60)) / 1000);
		
		jEle.find('.pagelayer-days-count').html(days);
		jEle.find('.pagelayer-hours-count').html(hours);
		jEle.find('.pagelayer-minutes-count').html(minutes);
		jEle.find('.pagelayer-seconds-count').html(seconds);
		
		// If the count down is over, write some text 
		if(distance < 0) {
			clearInterval(count_int[jEle_id]);
			jEle.find('.pagelayer-countdown-expired').show();
			jEle.find('.pagelayer-countdown-counter').hide();
		}
		
		distance = distance - 1000;
		
	}, 1000);
}

function pagelayer_pl_testimonial_slider(jEle){
	var ul = jEle.find('.pagelayer-testimonials-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);
}

var pagelayerAnimTimer = {};
function pagelayer_anim_heading(jEle){
	var animationDelay = 2500,
		//loading bar effect
		barAnimationDelay = 3800,
		barWaiting = barAnimationDelay - 3000, //3000 is the duration of the transition on the loading bar - set in the scss/css file
		//letters effect
		lettersDelay = 50,
		//type effect
		typeLettersDelay = 150,
		selectionDuration = 500,
		typeAnimationDelay = selectionDuration + 800,
		//clip effect 
		revealDuration = 600,
		revealAnimationDelay = 1500;
	
	var id = jEle.attr('pagelayer-id');
	
	if(pagelayer_empty(pagelayerAnimTimer[id])){
		pagelayerAnimTimer[id] = {};
	}
	
	// Clear the previous animations
	for( var time in pagelayerAnimTimer[id] ){
		clearTimeout(pagelayerAnimTimer[id][time]);
	}
	
	initHeadline();

	function initHeadline(){
		
		// Re-set styles
		jEle.find('.pagelayer-aheading-holder').find('span').css('opacity', '');
		
		//insert <i> element for each letter of a changing word
		singleLetters(jEle.find('.pagelayer-aheading-holder.letters').find('span'));
		//initialise headline animation
		animateHeadline(jEle.find('.pagelayer-aheading-holder'));
	}

	function singleLetters($words){
		$words.each(function(){
			var word = jQuery(this),
				letters = word.text().split(''),
				selected = word.hasClass('pagelayer-is-visible');
			for (i in letters) {
				if(word.parents('.pagelayer-aheading-rotate2').length > 0) letters[i] = '<b>' + letters[i] + '</b>';
				letters[i] = (selected) ? '<strong class="pagelayer-aheading-in">' + letters[i] + '</strong>': '<strong>' + letters[i] + '</strong>';
			}
			var newLetters = letters.join('');
			word.html(newLetters).css('opacity', 1);
		});
	}

	function animateHeadline($headlines){
		var duration = animationDelay;
		$headlines.each(function(){
			var headline = jQuery(this);
			
			if(headline.hasClass('pagelayer-aheading-loading-bar')){
				duration = barAnimationDelay;
				setTimeout(function(){ headline.find('.pagelayer-words-wrapper').addClass('pagelayer-is-loading') }, barWaiting);
			}else if(headline.hasClass('pagelayer-aheading-clip')){
				var spanWrapper = headline.find('.pagelayer-words-wrapper'),
					newWidth = spanWrapper.width() + 10;
				spanWrapper.css('width', newWidth);
			} else if (!headline.hasClass('type') ){
				var words = headline.find('.pagelayer-words-wrapper span'),
					width = 0;
				words.each(function(){
					var wordWidth = jQuery(this).width();
					if (wordWidth > width) width = wordWidth;
				});
				headline.find('.pagelayer-words-wrapper').css('width', width);
			};

			//trigger animation
			setTimeout(function(){
				hideWord( headline.find('.pagelayer-is-visible').eq(0) );
			}, duration);
		});
	}

	function hideWord($word){
		var nextWord = takeNext($word);
		
		if($word.parents('.pagelayer-aheading-holder').hasClass('letters')){
			var bool = ($word.children('strong').length >= nextWord.children('strong').length) ? true : false;
			hideLetter($word.find('strong').eq(0), $word, bool, lettersDelay);
			showLetter(nextWord.find('strong').eq(0), nextWord, bool, lettersDelay);

		}else if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-clip')){
			$word.parents('.pagelayer-words-wrapper').animate({ width : '2px' }, revealDuration, function(){
				switchWord($word, nextWord);
				showWord(nextWord);
			});

		}else if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-loading-bar')){
			$word.parents('.pagelayer-words-wrapper').removeClass('pagelayer-is-loading');
			switchWord($word, nextWord);
			
			clearTimeout(pagelayerAnimTimer[id][0]);
			pagelayerAnimTimer[id][0] = setTimeout(function(){
				hideWord(nextWord);
			}, barAnimationDelay);
			clearTimeout(pagelayerAnimTimer[id][1]);
			pagelayerAnimTimer[id][1] = setTimeout(function(){
				$word.parents('.pagelayer-words-wrapper').addClass('pagelayer-is-loading');
			}, barWaiting);

		}else{
			switchWord($word, nextWord);
			clearTimeout(pagelayerAnimTimer[id][2]);
			pagelayerAnimTimer[id][2] = setTimeout(function(){
				hideWord(nextWord) ;
			}, animationDelay);
		}
	}

	function showWord($word, $duration){
		if($word.parents('.pagelayer-aheading-holder').hasClass('pagelayer-aheading-clip')){
			$word.parents('.pagelayer-words-wrapper').animate({ 'width' : $word.width() + 10 }, revealDuration, function(){ 
				clearTimeout(pagelayerAnimTimer[id][3]);
				pagelayerAnimTimer[id][3] = setTimeout(function(){
					hideWord($word);
				}, revealAnimationDelay); 
			});
		}
	}

	function hideLetter($letter, $word, $bool, $duration){
		$letter.removeClass('pagelayer-aheading-in').addClass('pagelayer-aheading-out');
		
		if(!$letter.is(':last-child')){
			clearTimeout(pagelayerAnimTimer[id][4]);
			pagelayerAnimTimer[id][4] = setTimeout(function(){
				hideLetter($letter.next(), $word, $bool, $duration);
			}, $duration);  
		}else if($bool){ 
			clearTimeout(pagelayerAnimTimer[id][5]);
			pagelayerAnimTimer[id][5] = setTimeout(function(){
				hideWord(takeNext($word));
			}, animationDelay);
		}

		if($letter.is(':last-child') && pagelayer_query('html').hasClass('pagelayer-no-csstransitions')){
			var nextWord = takeNext($word);
			switchWord($word, nextWord);
		} 
	}

	function showLetter($letter, $word, $bool, $duration){
		$letter.addClass('pagelayer-aheading-in').removeClass('pagelayer-aheading-out');

		if(!$word.hasClass('pagelayer-is-visible')){ 
			$word.parent().children().removeClass('pagelayer-is-visible');
			$word.addClass('pagelayer-is-visible');
		}

		if(!$letter.is(':last-child')){ 
			clearTimeout(pagelayerAnimTimer[id][6]);
			pagelayerAnimTimer[id][6] = setTimeout(function(){
				showLetter($letter.next(), $word, $bool, $duration);
			}, $duration); 
		}else{
			if(!$bool) { 
				clearTimeout(pagelayerAnimTimer[id][7]);
				pagelayerAnimTimer[id][7] = setTimeout(function(){ 
					hideWord($word);
				}, animationDelay) 
			}
		}
	}

	function takeNext($word){
		return (!$word.is(':last-child')) ? $word.next() : $word.parent().children().eq(0);
	}

	function switchWord($oldWord, $newWord){
		$oldWord.removeClass('pagelayer-is-visible').addClass('pagelayer-is-hidden');
		if(!$newWord.hasClass('pagelayer-is-visible')){
			$newWord.removeClass('pagelayer-is-hidden').addClass('pagelayer-is-visible');
		}
	}
}

var pagelayerSetInterval = {};
function pagelayer_pl_row_slider(jEle){
	var index = 0;
 
	var id = jEle.closest('[pagelayer-id]').attr('pagelayer-id');
	var imageEls = jEle.find('.pagelayer-bgimg-slide'); // Get the images to be cycled.
	var speed = parseFloat(jEle.attr('data-speed')); // Get the speed of loop.
	imageEls.first().addClass('pagelayer-slide-show');
	
	clearInterval(pagelayerSetInterval[id]);
	pagelayerSetInterval[id] = setInterval(function (){
		// Get the next index.  If at end, restart to the beginning.
		index = index + 1 < imageEls.length ? index + 1 : 0;
		
		// Show the next
		imageEls.eq(index).addClass('pagelayer-slide-show');
		
		// Hide the previous
		imageEls.eq(index - 1).removeClass('pagelayer-slide-show');
	}, speed);
}

function pagelayer_pl_social_profile(jEle){
	var icon_holder = jEle.find('.pagelayer-icon-holder');
	
	// Assigning animation classes to icon holder
	if(!pagelayer_empty(jEle.attr('pagelayer-animation'))){
		icon_holder.addClass('pagelayer-animation-'+jEle.attr('pagelayer-animation'));
	}
}

// Post infinite scroll handler
function pagelayer_infinite_posts(jEle) {
	
	var loader = jEle.find('.pagelayer-btn-load');
	var autoScroll = jEle.find('.pagelayer-infinite-scroll-auto').length < 1;
	
	loader.on('click', function(){
	
		var bEle = jQuery(this);
		var loaded = jEle.attr('pagelayer-post-data-loading');
		
		// Is loading?
		if(!pagelayer_empty(loaded)){
			return;
		}
		
		jEle.attr('pagelayer-post-data-loading', 1);

		var current = bEle.attr('data-current') || 1;
		var nextPage = parseInt(current) + 1;
		var load_btn = jEle.find('.pagelayer_load_button');

		bEle.hide();
		load_btn.find('.pagelayer-loader-holder').show();

		if(jEle.find('.pagelayer-post-max').attr('data-max') <= 1) {
			load_btn.text(load_btn.data('text'));
			return;
		}
		
		// Get Data from local variable
		var data = window['pagelayer_local_scripts']['pagelayer_post_' + jEle.attr("pagelayer-id")];
		
		// Add next page number to load
		if(!pagelayer_empty(data.atts)){
			data.atts['paged'] = nextPage;
		}
		
		// Get the Posts
		jQuery.ajax({
			url: pagelayer_ajaxurl + 'action=pagelayer_infinite_posts',
			type: 'POST',
			data: {
				pagelayer_nonce: pagelayer_global_nonce,
				data: data,
			},
			success: function(result){
				
				var json = jQuery.parseJSON(result);
				var content = jQuery(json['posts']).find('.pagelayer-posts-container').html();
				
				jEle.find('.pagelayer-posts-container').append(content);

				load_btn.find('.pagelayer-loader-holder').hide();

				if (jEle.find('.pagelayer-post-max').attr('data-max') == nextPage) {
					load_btn.text(load_btn.data('text'));
				}else if(autoScroll){
					bEle.show();
				}
				
				bEle.attr('data-current', nextPage);
			},
			complete: function(){
				jEle.removeAttr('pagelayer-post-data-loading');
			}
		});	
		
	});
	
	// If already scrolled
	if(pagelayer_isVisible(loader)){
		loader.click();
	}
	
	// Auto scroll?
	if(autoScroll){
		return;
	}
	
	var win = jQuery(pagelayerGetCurrentWindow());
	
	win.on('scroll.archive_posts', function(){
		var current = parseInt(loader.attr('data-current')) || 1;
		var total = loader.attr('data-max');
		
		if(win.scrollTop() + win.height() < jEle.height() || current >= total) {
			return;
		}
	
		loader.click();
	});
	
}

////////////////
// Freemium End
////////////////


/*
 * Nivo Lightbox v1.3.1
 * http://dev7studios.com/nivo-lightbox
 *
 * Copyright 2013, Dev7studios
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
!function(t,i,o,e){function n(i,o){this.el=i,this.$el=t(this.el),this.options=t.extend({},l,o),this._defaults=l,this._name=a,this.init()}var a="nivoLightbox",l={effect:"fade",theme:"default",keyboardNav:!0,clickImgToClose:!1,clickOverlayToClose:!0,onInit:function(){},beforeShowLightbox:function(){},afterShowLightbox:function(t){},beforeHideLightbox:function(){},afterHideLightbox:function(){},beforePrev:function(t){},onPrev:function(t){},beforeNext:function(t){},onNext:function(t){},errorMessage:"The requested content cannot be loaded. Please try again later."};n.prototype={init:function(){var i=this;t("html").hasClass("nivo-lightbox-notouch")||t("html").addClass("nivo-lightbox-notouch"),"ontouchstart"in o&&t("html").removeClass("nivo-lightbox-notouch"),this.$el.on("click",function(t){i.showLightbox(t)}),this.options.keyboardNav&&t("body").off("keyup").on("keyup",function(o){var e=o.keyCode?o.keyCode:o.which;27==e&&i.destructLightbox(),37==e&&t(".nivo-lightbox-prev").trigger("click"),39==e&&t(".nivo-lightbox-next").trigger("click")}),this.options.onInit.call(this)},showLightbox:function(i){var o=this,e=this.$el,n=this.checkContent(e);if(n){i.preventDefault(),this.options.beforeShowLightbox.call(this);var a=this.constructLightbox();if(a){var l=a.find(".nivo-lightbox-content");if(l){if(t("body").addClass("nivo-lightbox-body-effect-"+this.options.effect),this.processContent(l,e),this.$el.attr("data-lightbox-gallery")){var h=t('[data-lightbox-gallery="'+this.$el.attr("data-lightbox-gallery")+'"]');t(".nivo-lightbox-nav").show(),t(".nivo-lightbox-prev").off("click").on("click",function(i){i.preventDefault();var n=h.index(e);e=h.eq(n-1),t(e).length||(e=h.last()),t.when(o.options.beforePrev.call(this,[e])).done(function(){o.processContent(l,e),o.options.onPrev.call(this,[e])})}),t(".nivo-lightbox-next").off("click").on("click",function(i){i.preventDefault();var n=h.index(e);e=h.eq(n+1),t(e).length||(e=h.first()),t.when(o.options.beforeNext.call(this,[e])).done(function(){o.processContent(l,e),o.options.onNext.call(this,[e])})})}setTimeout(function(){a.addClass("nivo-lightbox-open"),o.options.afterShowLightbox.call(this,[a])},1)}}}},checkContent:function(t){var i=t.attr("href"),o=i.match(/(youtube|youtube-nocookie|youtu|vimeo)\.(com|be)\/(video\/(.)+|watch\?v=([\w-]+)|([\w-]+))/);return null!==i.match(/\.(jpeg|jpg|gif|png)$/i)||(!!o||("ajax"==t.attr("data-lightbox-type")||("#"==i.substring(0,1)&&"inline"==t.attr("data-lightbox-type")||"iframe"==t.attr("data-lightbox-type"))))},processContent:function(o,e){var n=this,a=e.attr("href"),l=a.match(/(youtube|youtube-nocookie|youtu|vimeo)\.(com|be)\/(video\/(.)+|watch\?v=([\w-]+)|([\w-]+))/);if(o.html("").addClass("nivo-lightbox-loading"),this.isHidpi()&&e.attr("data-lightbox-hidpi")&&(a=e.attr("data-lightbox-hidpi")),null!==a.match(/\.(jpeg|jpg|gif|png)$/i)){var h=t("<img>",{src:a,class:"nivo-lightbox-image-display"});h.one("load",function(){var e=t('<div class="nivo-lightbox-image" />');e.append(h),o.html(e).removeClass("nivo-lightbox-loading"),e.css({"line-height":t(".nivo-lightbox-content").height()+"px",height:t(".nivo-lightbox-content").height()+"px"}),t(i).resize(function(){e.css({"line-height":t(".nivo-lightbox-content").height()+"px",height:t(".nivo-lightbox-content").height()+"px"})})}).each(function(){this.complete&&t(this).load()}),h.error(function(){var i=t('<div class="nivo-lightbox-error"><p>'+n.options.errorMessage+"</p></div>");o.html(i).removeClass("nivo-lightbox-loading")})}else if(l){var s="",r="nivo-lightbox-video";if("youtube"==l[1]&&(s="//www.youtube.com/embed/"+l[5],r="nivo-lightbox-youtube"),"youtube-nocookie"==l[1]&&(s=a,r="nivo-lightbox-youtube"),"youtu"==l[1]&&(s="//www.youtube.com/embed/"+l[3],r="nivo-lightbox-youtube"),"vimeo"==l[1]&&(s="//player.vimeo.com/video/"+(l[3].replace('video/','')),r="nivo-lightbox-vimeo"),s){var c=t("<iframe>",{src:s,class:r,frameborder:0,vspace:0,hspace:0,scrolling:"auto"});o.html(c),c.load(function(){o.removeClass("nivo-lightbox-loading")})}}else if("ajax"==e.attr("data-lightbox-type"))t.ajax({url:a,cache:!1,success:function(e){var n=t('<div class="nivo-lightbox-ajax" />');n.append(e),o.html(n).removeClass("nivo-lightbox-loading"),n.outerHeight()<o.height()&&n.css({position:"relative",top:"50%","margin-top":-(n.outerHeight()/2)+"px"}),t(i).resize(function(){n.outerHeight()<o.height()&&n.css({position:"relative",top:"50%","margin-top":-(n.outerHeight()/2)+"px"})})},error:function(){var i=t('<div class="nivo-lightbox-error"><p>'+n.options.errorMessage+"</p></div>");o.html(i).removeClass("nivo-lightbox-loading")}});else if("#"==a.substring(0,1)&&"inline"==e.attr("data-lightbox-type"))if(t(a).length){var g=t('<div class="nivo-lightbox-inline" />');g.append(t(a).clone().show()),o.html(g).removeClass("nivo-lightbox-loading"),g.outerHeight()<o.height()&&g.css({position:"relative",top:"50%","margin-top":-(g.outerHeight()/2)+"px"}),t(i).resize(function(){g.outerHeight()<o.height()&&g.css({position:"relative",top:"50%","margin-top":-(g.outerHeight()/2)+"px"})})}else{var v=t('<div class="nivo-lightbox-error"><p>'+n.options.errorMessage+"</p></div>");o.html(v).removeClass("nivo-lightbox-loading")}else{if("iframe"!=e.attr("data-lightbox-type"))return!1;var b=t("<iframe>",{src:a,class:"nivo-lightbox-item",frameborder:0,vspace:0,hspace:0,scrolling:"auto"});o.html(b),b.load(function(){o.removeClass("nivo-lightbox-loading")})}if(e.attr("title")){var x=t("<span>",{class:"nivo-lightbox-title"});x.text(e.attr("title")),t(".nivo-lightbox-title-wrap").html(x)}else t(".nivo-lightbox-title-wrap").html("")},constructLightbox:function(){if(t(".nivo-lightbox-overlay").length)return t(".nivo-lightbox-overlay");var i=t("<div>",{class:"nivo-lightbox-overlay nivo-lightbox-theme-"+this.options.theme+" nivo-lightbox-effect-"+this.options.effect}),o=t("<div>",{class:"nivo-lightbox-wrap"}),e=t("<div>",{class:"nivo-lightbox-content"}),n=t('<a href="#" class="nivo-lightbox-nav nivo-lightbox-prev">Previous</a><a href="#" class="nivo-lightbox-nav nivo-lightbox-next">Next</a>'),a=t('<a href="#" class="nivo-lightbox-close" title="Close">Close</a>'),l=t("<div>",{class:"nivo-lightbox-title-wrap"}),h=/*@cc_on!@*/0;h&&i.addClass("nivo-lightbox-ie"),o.append(e),o.append(l),i.append(o),i.append(n),i.append(a),t("body").append(i);var s=this;return s.options.clickOverlayToClose&&i.on("click",function(i){(i.target===this||t(i.target).hasClass("nivo-lightbox-content")||t(i.target).hasClass("nivo-lightbox-image"))&&s.destructLightbox()}),s.options.clickImgToClose&&i.on("click",function(i){(i.target===this||t(i.target).hasClass("nivo-lightbox-image-display"))&&s.destructLightbox()}),a.on("click",function(t){t.preventDefault(),s.destructLightbox()}),i},destructLightbox:function(){var i=this;this.options.beforeHideLightbox.call(this),t(".nivo-lightbox-overlay").removeClass("nivo-lightbox-open"),t(".nivo-lightbox-nav").hide(),t("body").removeClass("nivo-lightbox-body-effect-"+i.options.effect);var o=/*@cc_on!@*/0;o&&(t(".nivo-lightbox-overlay iframe").attr("src"," "),t(".nivo-lightbox-overlay iframe").remove()),t(".nivo-lightbox-prev").off("click"),t(".nivo-lightbox-next").off("click"),t(".nivo-lightbox-content").empty(),this.options.afterHideLightbox.call(this)},isHidpi:function(){var t="(-webkit-min-device-pixel-ratio: 1.5),                              (min--moz-device-pixel-ratio: 1.5),                              (-o-min-device-pixel-ratio: 3/2),                              (min-resolution: 1.5dppx)";return i.devicePixelRatio>1||!(!i.matchMedia||!i.matchMedia(t).matches)}},t.fn[a]=function(i){return this.each(function(){t.data(this,a)||t.data(this,a,new n(this,i))})}}(jQuery,window,document);

/*! WOW wow.js - v1.3.0 - 2016-10-04
* https://wowjs.uk
* Copyright (c) 2016 Thomas Grainger; Licensed MIT */!function(a,b){if("function"==typeof define&&define.amd)define(["module","exports"],b);else if("undefined"!=typeof exports)b(module,exports);else{var c={exports:{}};b(c,c.exports),a.WOW=c.exports}}(this,function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function d(a,b){return b.indexOf(a)>=0}function e(a,b){for(var c in b)if(null==a[c]){var d=b[c];a[c]=d}return a}function f(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)}function g(a){var b=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],c=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],d=arguments.length<=3||void 0===arguments[3]?null:arguments[3],e=void 0;return null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e}function h(a,b){null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)&&a["on"+b]()}function i(a,b,c){null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c}function j(a,b,c){null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]}function k(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight}Object.defineProperty(b,"__esModule",{value:!0});var l,m,n=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),o=window.WeakMap||window.MozWeakMap||function(){function a(){c(this,a),this.keys=[],this.values=[]}return n(a,[{key:"get",value:function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b];if(c===a)return this.values[b]}}},{key:"set",value:function(a,b){for(var c=0;c<this.keys.length;c++){var d=this.keys[c];if(d===a)return this.values[c]=b,this}return this.keys.push(a),this.values.push(b),this}}]),a}(),p=window.MutationObserver||window.WebkitMutationObserver||window.MozMutationObserver||(m=l=function(){function a(){c(this,a),"undefined"!=typeof console&&null!==console&&(console.warn("MutationObserver is not supported by your browser."),console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content."))}return n(a,[{key:"observe",value:function(){}}]),a}(),l.notSupported=!0,m),q=window.getComputedStyle||function(a){var b=/(\-([a-z]){1})/g;return{getPropertyValue:function(c){"float"===c&&(c="styleFloat"),b.test(c)&&c.replace(b,function(a,b){return b.toUpperCase()});var d=a.currentStyle;return(null!=d?d[c]:void 0)||null}}},r=function(){function a(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c(this,a),this.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null,resetAnimation:!0},this.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),this.vendors=["moz","webkit"],this.start=this.start.bind(this),this.resetAnimation=this.resetAnimation.bind(this),this.scrollHandler=this.scrollHandler.bind(this),this.scrollCallback=this.scrollCallback.bind(this),this.scrolled=!0,this.config=e(b,this.defaults),null!=b.scrollContainer&&(this.config.scrollContainer=document.querySelector(b.scrollContainer)),this.animationNameCache=new o,this.wowEvent=g(this.config.boxClass)}return n(a,[{key:"init",value:function(){this.element=window.document.documentElement,d(document.readyState,["interactive","complete"])?this.start():i(document,"DOMContentLoaded",this.start),this.finished=[]}},{key:"start",value:function(){var a=this;if(this.stopped=!1,this.boxes=[].slice.call(this.element.querySelectorAll("."+this.config.boxClass)),this.all=this.boxes.slice(0),this.boxes.length)if(this.disabled())this.resetStyle();else for(var b=0;b<this.boxes.length;b++){var c=this.boxes[b];this.applyStyle(c,!0)}if(this.disabled()||(i(this.config.scrollContainer||window,"scroll",this.scrollHandler),i(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live){var d=new p(function(b){for(var c=0;c<b.length;c++)for(var d=b[c],e=0;e<d.addedNodes.length;e++){var f=d.addedNodes[e];a.doSync(f)}});d.observe(document.body,{childList:!0,subtree:!0})}}},{key:"stop",value:function(){this.stopped=!0,j(this.config.scrollContainer||window,"scroll",this.scrollHandler),j(window,"resize",this.scrollHandler),null!=this.interval&&clearInterval(this.interval)}},{key:"sync",value:function(){p.notSupported&&this.doSync(this.element)}},{key:"doSync",value:function(a){if("undefined"!=typeof a&&null!==a||(a=this.element),1===a.nodeType){a=a.parentNode||a;for(var b=a.querySelectorAll("."+this.config.boxClass),c=0;c<b.length;c++){var e=b[c];d(e,this.all)||(this.boxes.push(e),this.all.push(e),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(e,!0),this.scrolled=!0)}}}},{key:"show",value:function(a){return this.applyStyle(a),a.className=a.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(a),h(a,this.wowEvent),this.config.resetAnimation&&(i(a,"animationend",this.resetAnimation),i(a,"oanimationend",this.resetAnimation),i(a,"webkitAnimationEnd",this.resetAnimation),i(a,"MSAnimationEnd",this.resetAnimation)),a}},{key:"applyStyle",value:function(a,b){var c=this,d=a.getAttribute("data-wow-duration"),e=a.getAttribute("data-wow-delay"),f=a.getAttribute("data-wow-iteration");return this.animate(function(){return c.customStyle(a,b,d,e,f)})}},{key:"resetStyle",value:function(){for(var a=0;a<this.boxes.length;a++){var b=this.boxes[a];b.style.visibility="visible"}}},{key:"resetAnimation",value:function(a){if(a.type.toLowerCase().indexOf("animationend")>=0){var b=a.target||a.srcElement;b.className=b.className.replace(this.config.animateClass,"").trim()}}},{key:"customStyle",value:function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a}},{key:"vendorSet",value:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];a[""+c]=d;for(var e=0;e<this.vendors.length;e++){var f=this.vendors[e];a[""+f+c.charAt(0).toUpperCase()+c.substr(1)]=d}}}},{key:"vendorCSS",value:function(a,b){for(var c=q(a),d=c.getPropertyCSSValue(b),e=0;e<this.vendors.length;e++){var f=this.vendors[e];d=d||c.getPropertyCSSValue("-"+f+"-"+b)}return d}},{key:"animationName",value:function(a){var b=void 0;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=q(a).getPropertyValue("animation-name")}return"none"===b?"":b}},{key:"cacheAnimationName",value:function(a){return this.animationNameCache.set(a,this.animationName(a))}},{key:"cachedAnimationName",value:function(a){return this.animationNameCache.get(a)}},{key:"scrollHandler",value:function(){this.scrolled=!0}},{key:"scrollCallback",value:function(){if(this.scrolled){this.scrolled=!1;for(var a=[],b=0;b<this.boxes.length;b++){var c=this.boxes[b];if(c){if(this.isVisible(c)){this.show(c);continue}a.push(c)}}this.boxes=a,this.boxes.length||this.config.live||this.stop()}}},{key:"offsetTop",value:function(a){for(;void 0===a.offsetTop;)a=a.parentNode;for(var b=a.offsetTop;a.offsetParent;)a=a.offsetParent,b+=a.offsetTop;return b}},{key:"isVisible",value:function(a){var b=a.getAttribute("data-wow-offset")||this.config.offset,c=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset,d=c+Math.min(this.element.clientHeight,k())-b,e=this.offsetTop(a),f=e+a.clientHeight;return d>=e&&f>=c}},{key:"disabled",value:function(){return!this.config.mobile&&f(navigator.userAgent)}}]),a}();b["default"]=r,a.exports=b["default"]});

/* 
 *   jQuery Numerator Plugin 0.2.1
 *   https://github.com/garethdn/jquery-numerator
 *
 *   Copyright 2015, Gareth Nolan
 *   http://ie.linkedin.com/in/garethnolan/

 *   Based on jQuery Boilerplate by Zeno Rocha with the help of Addy Osmani
 *   http://jqueryboilerplate.com
 *
 *   Licensed under the MIT license:
 *   http://www.opensource.org/licenses/MIT
 */

;(function (factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        // AMD is used - Register as an anonymous module.
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        factory(require('jquery'));
    } else {
        // Neither AMD nor CommonJS used. Use global variables.
        if (typeof jQuery === 'undefined') {
            throw 'jquery-numerator requires jQuery to be loaded first';
        }
        factory(jQuery);
    }
}(function ($) {

    var pluginName = "numerator",
    defaults = {
        easing: 'swing',
        duration: 500,
        delimiter: undefined,
        rounding: 0,
        toValue: undefined,
        fromValue: undefined,
        queue: false,
        onStart: function(){},
        onStep: function(){},
        onProgress: function(){},
        onComplete: function(){}
    };

    function Plugin ( element, options ) {
        this.element = element;
        this.settings = $.extend( {}, defaults, options );
        this._defaults = defaults;
        this._name = pluginName;
        this.init();
    }

    Plugin.prototype = {

        init: function () {
            this.parseElement();
            this.setValue();
        },

        parseElement: function () {
            var elText = $.trim($(this.element).text());

            this.settings.fromValue = this.settings.fromValue || this.format(elText);
        },

        setValue: function() {
            var self = this;

            $({value: self.settings.fromValue}).animate({value: self.settings.toValue}, {

                duration: parseInt(self.settings.duration, 10),

                easing: self.settings.easing,

                start: self.settings.onStart,

                step: function(now, fx) {
                    $(self.element).text(self.format(now));
                    // accepts two params - (now, fx)
                    self.settings.onStep(now, fx);
                },

                // accepts three params - (animation object, progress ratio, time remaining(ms))
                progress: self.settings.onProgress,

                complete: self.settings.onComplete
            });
        },

        format: function(value){
            var self = this;

            if ( parseInt(this.settings.rounding ) < 1) {
                value = parseInt(value, 10);
            } else {
                value = parseFloat(value).toFixed( parseInt(this.settings.rounding) );
            }

            if (self.settings.delimiter) {
                return this.delimit(value)
            } else {
                return value;
            } 
        },

        // TODO: Add comments to this function
        delimit: function(value){
            var self = this;

            value = value.toString();

            if (self.settings.rounding && parseInt(self.settings.rounding, 10) > 0) {
                var decimals = value.substring( (value.length - (self.settings.rounding + 1)), value.length ),
                    wholeValue = value.substring( 0, (value.length - (self.settings.rounding + 1)));

                return self.addDelimiter(wholeValue) + decimals;
            } else {
                return self.addDelimiter(value);
            }
        },

        addDelimiter: function(value){
            return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.settings.delimiter);
        }
    };

    $.fn[ pluginName ] = function ( options ) {
        return this.each(function() {
            if ( $.data( this, "plugin_" + pluginName ) ) {
                $.data(this, 'plugin_' + pluginName, null);
            }
            $.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
        });
    };

}));

/**
 * simple-parallax-js - simpleParallax is a simple and lightweight JS plugin that gives your website parallax animations on the images
 * @version v4.2.1
 * @date: 09-03-2019 17:4:39
 * @link https://simpleparallax.com/
 */
"use strict";var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},_createClass=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}!function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?module.exports=t(e):e.pagelayerParallax=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:void 0,function(o){var i=function(){for(var e,t="transform webkitTransform mozTransform oTransform msTransform".split(" "),n=0;void 0===e;)e=null!=document.createElement("div").style[t[n]]?t[n]:void 0,n++;return e}();!function(){for(var a=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!o.requestAnimationFrame;++t)o.requestAnimationFrame=o[e[t]+"RequestAnimationFrame"],o.cancelAnimationFrame=o[e[t]+"CancelAnimationFrame"]||o[e[t]+"CancelRequestAnimationFrame"];o.requestAnimationFrame||(o.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),i=Math.max(0,16-(n-a)),s=o.setTimeout(function(){e(n+i)},i);return a=n+i,s}),o.cancelAnimationFrame||(o.cancelAnimationFrame=function(e){clearTimeout(e)})}(),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null});var s=[],t=-1,a=void 0,r=void 0,l=void 0,h=void 0,m=!1,u=function(){function n(e,t){_classCallCheck(this,n),this.element=e,this.elementContainer=e,this.defaults={delay:.6,orientation:"up",scale:1.3,overflow:!1,transition:"cubic-bezier(0,0,0,1)",breakpoint:!1},this.settings=_extends(this.defaults,t),this.settings.breakpoint&&document.documentElement.clientWidth<=this.settings.breakpoint||(this.init=this.init.bind(this),this.animationFrame=this.animationFrame.bind(this),this.handleResize=this.handleResize.bind(this),this.isImageLoaded(this.element)?this.init():this.element.addEventListener("load",this.init),s.push(this),m||(m=!0,this.getViewportOffsetHeight(),this.animationFrame()))}return _createClass(n,[{key:"init",value:function(){this.isInit||(!1===this.settings.overflow&&this.wrapElement(),this.setStyle(),this.getElementOffset(),this.getTranslateValue(),this.animate(),o.addEventListener("resize",this.handleResize),this.isInit=!0)}},{key:"isImageLoaded",value:function(){return!!this.element.complete&&(void 0===this.element.naturalWidth||0!==this.element.naturalWidth)}},{key:"isVisible",value:function(){return this.elementBottomX>a&&this.elementTopX<r}},{key:"wrapElement",value:function(){var e=this.element.closest("picture")||this.element,t=document.createElement("div");t.classList.add("pagelayerParallax"),t.style.overflow="hidden",e.parentNode.insertBefore(t,e),t.appendChild(e),this.elementContainer=t}},{key:"unWrapElement",value:function(){var e=this.elementContainer.parentNode;if(e){for(;this.elementContainer.firstChild;)e.insertBefore(this.elementContainer.firstChild,this.elementContainer);e.removeChild(this.elementContainer)}}},{key:"setStyle",value:function(){!1===this.settings.overflow&&(this.element.style[i]="scale("+this.settings.scale+")"),0<this.settings.delay&&(this.element.style.transition="transform "+this.settings.delay+"s "+this.settings.transition),this.element.style.willChange="transform"}},{key:"unSetStyle",value:function(){this.element.style.willChange="",this.element.style[i]="",this.element.style.transition=""}},{key:"getElementOffset",value:function(){var e=this.elementContainer.getBoundingClientRect();this.elementHeight=e.height,this.elementTopX=e.top+o.pageYOffset,this.elementBottomX=this.elementHeight+this.elementTopX}},{key:"getViewportOffsetTop",value:function(){a=o.pageYOffset}},{key:"getViewportOffsetHeight",value:function(){l=document.documentElement.clientHeight}},{key:"getViewportOffsetBottom",value:function(){r=a+l}},{key:"handleResize",value:function(){this.getViewportOffsetHeight(),this.getElementOffset(),this.getRangeMax()}},{key:"getRangeMax",value:function(){var e=this.element.clientHeight;this.rangeMax=e*this.settings.scale-e,"down"!==this.settings.orientation&&"right"!==this.settings.orientation||(this.rangeMax*=-1)}},{key:"getTranslateValue",value:function(){var e=((r-this.elementTopX)/((l+this.elementHeight)/100)).toFixed(1);return e=Math.min(100,Math.max(0,e)),this.oldPercentage!==e&&(this.rangeMax||this.getRangeMax(),this.translateValue=(e/100*this.rangeMax-this.rangeMax/2).toFixed(0),this.oldTranslateValue!==this.translateValue&&(this.oldPercentage=e,this.oldTranslateValue=this.translateValue,!0))}},{key:"animate",value:function(){var e=0,t=0,n=void 0;"left"===this.settings.orientation||"right"===this.settings.orientation?t=this.translateValue+"px":e=this.translateValue+"px",n=!1===this.settings.overflow?"translate3d("+t+", "+e+", 0) scale("+this.settings.scale+")":"translate3d("+t+", "+e+", 0)",this.element.style[i]=n}},{key:"proceedElement",value:function(e){e.isVisible()&&e.getTranslateValue()&&e.animate()}},{key:"animationFrame",value:function(){if(this.getViewportOffsetTop(),t!==a){this.getViewportOffsetBottom();for(var e=0;e<s.length;e++)this.proceedElement(s[e]);h=o.requestAnimationFrame(this.animationFrame),t=a}else h=o.requestAnimationFrame(this.animationFrame)}},{key:"destroy",value:function(){this.isDestroyed||(this.unSetStyle(),!1===this.settings.overflow&&this.unWrapElement(),s.splice(s.indexOf(this),1),s.length||(m=!1,o.cancelAnimationFrame(h)),o.removeEventListener("resize",this.handleResize))}},{key:"isDestroyed",get:function(){return-1===s.indexOf(this)}}]),n}();return function(e,t){var n=[];if(e.length)for(var i=0;i<e.length;i++)n.push(new u(e[i],t));else n.push(new u(e,t));return n}});

/**
 * Owl Carousel v2.3.4
 * Copyright 2013-2018 David Deutsch
 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
 */
!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",slideTransition:"",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"pagelayer-owl-refresh",loadedClass:"pagelayer-owl-loaded",loadingClass:"pagelayer-owl-loading",rtlClass:"pagelayer-owl-rtl",responsiveClass:"pagelayer-owl-responsive",dragClass:"pagelayer-owl-drag",itemClass:"pagelayer-owl-item",stageClass:"pagelayer-owl-stage",stageOuterClass:"pagelayer-owl-stage-outer",grabClass:"pagelayer-owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(a("<div/>",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(".pagelayer-owl-item");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var a,b,c;a=this.$element.find("img"),b=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousemove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return"left"===c&&b>i-f&&b<i+f?e=a:"right"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,"<",i)&&this.op(b,">",h[a+1]!==d?h[a+1]:i-g)&&(e="left"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,">",h[this.minimum()])?e=b=this.minimum():this.op(b,"<",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn("Can not detect viewport width."),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:a<c;case">":return d?a<c:a>c;case">=":return d?a<=c:a>=c;case"<=":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.pagelayerOwlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.pagelayerOwlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("pagelayer-owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".pagelayer-owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src")||f.attr("data-srcset");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):f.is("source")?f.one("load.owl.lazy",a.proxy(function(){this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("srcset",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":'url("'+g+'")',opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"===a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on("load",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:"pagelayer-owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .pagelayer-owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".pagelayer-owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".pagelayer-owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?"width:"+c.width+"px;height:"+c.height+"px;":"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(c){e='<div class="pagelayer-owl-video-play-icon"></div>',d=k.lazyLoad?a("<div/>",{class:"pagelayer-owl-video-tn "+j,srcType:c}):a("<div/>",{class:"pagelayer-owl-video-tn",style:"opacity:1;background-image:url("+c+")"}),b.after(d),b.after(e)};if(b.wrap(a("<div/>",{class:"pagelayer-owl-video-wrapper",style:g})),this._core.settings.lazyLoad&&(i="data-src",j="pagelayer-owl-lazy"),h.length)return l(h.attr(i)),h.remove(),!1;"youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".pagelayer-owl-video-frame").remove(),this._playing.removeClass("pagelayer-owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('<div class="pagelayer-owl-video-frame" />').insertAfter(e.find(".pagelayer-owl-video")),this._playing=e.addClass("pagelayer-owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("pagelayer-owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,
animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated pagelayer-owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated pagelayer-owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated pagelayer-owl-animated-out pagelayer-owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label="Previous">&#x2039;</span>','<span aria-label="Next">&#x203a;</span>'],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"pagelayer-owl-nav",navClass:["pagelayer-owl-prev","pagelayer-owl-next"],slideBy:1,dotClass:"pagelayer-owl-dot",dotsClass:"pagelayer-owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","button",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)"$relative"===b&&e.navContainer?this._controls[b].html(""):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.pagelayerOwlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);

/*!
 * Chart.js v2.8.0
 * https://www.chartjs.org
 * (c) 2019 Chart.js Contributors
 * Released under the MIT License
 */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],function(t){return e(function(){try{return t("moment")}catch(t){}}())}):t.Chart=e(t.moment)}(this,function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:i,rgb2hsv:n,rgb2hwb:a,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:l,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:u,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return a(u(t))},hsl2cmyk:function(t){return o(u(t))},hsl2keyword:function(t){return s(u(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return a(h(t))},hsv2cmyk:function(t){return o(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:c,hwb2hsl:function(t){return i(c(t))},hwb2hsv:function(t){return n(c(t))},hwb2cmyk:function(t){return o(c(t))},hwb2keyword:function(t){return s(c(t))},cmyk2rgb:f,cmyk2hsl:function(t){return i(f(t))},cmyk2hsv:function(t){return n(f(t))},cmyk2hwb:function(t){return a(f(t))},cmyk2keyword:function(t){return s(f(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return n(w(t))},keyword2hwb:function(t){return a(w(t))},keyword2cmyk:function(t){return o(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return l(w(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return x(m(t))},lab2xyz:v,lab2rgb:y,lab2lch:x,lch2lab:k,lch2xyz:function(t){return v(k(t))},lch2rgb:function(t){return y(k(t))}};function i(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(r+s)/2,[e,100*(s==r?0:i<=.5?l/(s+r):l/(2-s-r)),100*i]}function n(t){var e,i,n=t[0],a=t[1],o=t[2],r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return i=0==s?0:l/s*1e3/10,s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function a(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function o(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function s(t){return _[JSON.stringify(t)]}function l(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=l(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function u(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var d=0;d<3;d++)(n=r+1/3*-(d-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[d]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function c(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,d=s+l;switch(d>1&&(s/=d,l/=d),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function f(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function m(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function v(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function y(t){return p(v(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},_={};for(var C in M)_[JSON.stringify(M[C])]=C;var S=function(){return new T};for(var P in e){S[P+"Raw"]=function(t){return function(i){return"number"==typeof i&&(i=Array.prototype.slice.call(arguments)),e[t](i)}}(P);var I=/(\w+)2(\w+)/.exec(P),A=I[1],D=I[2];(S[A]=S[A]||{})[D]=S[P]=function(t){return function(i){"number"==typeof i&&(i=Array.prototype.slice.call(arguments));var n=e[t](i);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(P)}var T=function(){this.convs={}};T.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},T.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},T.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=S[i][t](n),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){T.prototype[t]=function(e){return this.routeSpace(t,arguments)}});var F=S,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},R={getRgba:O,getHsla:z,getRgb:function(t){var e=O(t);return e&&e.slice(0,3)},getHsl:function(t){var e=z(t);return e&&e.slice(0,3)},getHwb:B,getAlpha:function(t){var e=O(t);if(e)return e[3];if(e=z(t))return e[3];if(e=B(t))return e[3]},hexString:function(t,e){var e=void 0!==e&&3===t.length?e:t[3];return"#"+H(t[0])+H(t[1])+H(t[2])+(e>=0&&e<1?H(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return N(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:N,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return W(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:W,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return V(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return j[t.slice(0,3)]}};function O(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(n){a=(n=n[1])[3];for(var o=0;o<e.length;o++)e[o]=parseInt(n[o]+n[o],16);a&&(i=Math.round(parseInt(a+a,16)/255*100)/100)}else if(n=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){a=n[2],n=n[1];for(o=0;o<e.length;o++)e[o]=parseInt(n.slice(2*o,2*o+2),16);a&&(i=Math.round(parseInt(a,16)/255*100)/100)}else if(n=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=parseInt(n[o+1]);i=parseFloat(n[4])}else if(n=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=Math.round(2.55*parseFloat(n[o+1]));i=parseFloat(n[4])}else if(n=t.match(/(\w+)/)){if("transparent"==n[1])return[0,0,0,0];if(!(e=L[n[1]]))return}for(o=0;o<e.length;o++)e[o]=E(e[o],0,255);return i=i||0==i?E(i,0,1):1,e[3]=i,e}}function z(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function B(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function N(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function W(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function V(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function E(t,e,i){return Math.min(Math.max(e,t),i)}function H(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var j={};for(var q in L)j[L[q]]=q;var Y=function(t){return t instanceof Y?t:this instanceof Y?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=R.getRgba(t))?this.setValues("rgb",e):(e=R.getHsla(t))?this.setValues("hsl",e):(e=R.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new Y(t);var e};Y.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return R.hexString(this.values.rgb)},rgbString:function(){return R.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return R.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return R.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return R.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return R.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return R.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return R.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=t,n=void 0===e?.5:e,a=2*n-1,o=this.alpha()-i.alpha(),r=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,s=1-r;return this.rgb(r*this.red()+s*i.red(),r*this.green()+s*i.green(),r*this.blue()+s*i.blue()).alpha(this.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new Y,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],"[object Array]"===(e={}.toString.call(t))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return i}},Y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Y.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},Y.prototype.setValues=function(t,e){var i,n,a=this.values,o=this.spaces,r=this.maxes,s=1;if(this.valid=!0,"alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)a[t][i]=e[t.charAt(i)];s=e.a}else if(void 0!==e[o[t][0]]){var l=o[t];for(i=0;i<t.length;i++)a[t][i]=e[l[i]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;for(i=0;i<t.length;i++)n=Math.max(0,Math.min(r[t][i],a[t][i])),a[t][i]=Math.round(n);for(var d in o)d!==t&&(a[d]=F[t][d](a[t]));return!0},Y.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},Y.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:i===n[e]?this:(n[e]=i,this.setValues(t,n),this)},"undefined"!=typeof window&&(window.Color=Y);var U,X=Y,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return K.valueOrDefault(K.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(K.isArray(t))if(o=t.length,n)for(a=o-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<o;a++)e.call(i,t[a],a);else if(K.isObject(t))for(o=(r=Object.keys(t)).length,a=0;a<o;a++)e.call(i,t[r[a]],r[a])},arrayEquals:function(t,e){var i,n,a,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(a=t[i],o=e[i],a instanceof Array&&o instanceof Array){if(!K.arrayEquals(a,o))return!1}else if(a!==o)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,a=0;a<n;++a)e[i[a]]=K.clone(t[i[a]]);return e}return t},_merger:function(t,e,i,n){var a=e[t],o=i[t];K.isObject(a)&&K.isObject(o)?K.merge(a,o,n):e[t]=K.clone(o)},_mergerIf:function(t,e,i){var n=e[t],a=i[t];K.isObject(n)&&K.isObject(a)?K.mergeIf(n,a):e.hasOwnProperty(t)||(e[t]=K.clone(a))},merge:function(t,e,i){var n,a,o,r,s,l=K.isArray(e)?e:[e],d=l.length;if(!K.isObject(t))return t;for(n=(i=i||{}).merger||K._merger,a=0;a<d;++a)if(e=l[a],K.isObject(e))for(s=0,r=(o=Object.keys(e)).length;s<r;++s)n(o[s],t,e,i);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,i){t[i]=e},i=1,n=arguments.length;i<n;++i)K.each(arguments[i],e);return t},inherits:function(t){var e=this,i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=K.inherits,t&&K.extend(i.prototype,t),i.__super__=e.prototype,i}},G=K;K.callCallback=K.callback,K.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var Z={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},$={effects:Z};G.easingEffects=Z;var J=Math.PI,Q=J/180,tt=2*J,et=J/2,it=J/4,nt=2*J/3,at={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2,n/2),s=e+r,l=i+r,d=e+n-r,u=i+a-r;t.moveTo(e,l),s<d&&l<u?(t.arc(s,l,r,-J,-et),t.arc(d,l,r,-et,0),t.arc(d,u,r,0,et),t.arc(s,u,r,et,J)):s<d?(t.moveTo(s,i),t.arc(d,l,r,-et,et),t.arc(s,l,r,et,J+et)):l<u?(t.arc(s,l,r,-J,0),t.arc(s,u,r,0,J)):t.arc(s,l,r,-J,J),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,d,u,h=(o||0)*Q;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.beginPath(),e){default:t.arc(n,a,i,0,tt),t.closePath();break;case"triangle":t.moveTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),t.closePath();break;case"rectRounded":d=i-(u=.516*i),s=Math.cos(h+it)*d,l=Math.sin(h+it)*d,t.arc(n-s,a-l,u,h-J,h-et),t.arc(n+l,a-s,u,h-et,h),t.arc(n+s,a+l,u,h,h+et),t.arc(n-l,a+s,u,h+et,h+J),t.closePath();break;case"rect":if(!o){d=Math.SQRT1_2*i,t.rect(n-d,a-d,2*d,2*d);break}h+=it;case"rectRot":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+l,a-s),t.lineTo(n+s,a+l),t.lineTo(n-l,a+s),t.closePath();break;case"crossRot":h+=it;case"cross":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"star":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s),h+=it,s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"line":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l);break;case"dash":t.moveTo(n,a),t.lineTo(n+Math.cos(h)*i,a+Math.sin(h)*i)}t.fill(),t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){var a=i.steppedLine;if(a){if("middle"===a){var o=(e.x+i.x)/2;t.lineTo(o,n?i.y:e.y),t.lineTo(o,n?e.y:i.y)}else"after"===a&&!n||"after"!==a&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}else i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}},ot=at;G.clear=at.clear,G.drawRoundedRectangle=function(t){t.beginPath(),at.roundedRect.apply(at,arguments)};var rt={_set:function(t,e){return G.merge(this[t]||(this[t]={}),e)}};rt._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var st=rt,lt=G.valueOrDefault;var dt={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,n,a;return G.isObject(t)?(e=+t.top||0,i=+t.right||0,n=+t.bottom||0,a=+t.left||0):e=i=n=a=+t||0,{top:e,right:i,bottom:n,left:a,height:e+n,width:a+i}},_parseFont:function(t){var e=st.global,i=lt(t.fontSize,e.defaultFontSize),n={family:lt(t.fontFamily,e.defaultFontFamily),lineHeight:G.options.toLineHeight(lt(t.lineHeight,e.defaultLineHeight),i),size:i,style:lt(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return n.string=function(t){return!t||G.isNullOrUndef(t.size)||G.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n},resolve:function(t,e,i){var n,a,o;for(n=0,a=t.length;n<a;++n)if(void 0!==(o=t[n])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==i&&G.isArray(o)&&(o=o[i]),void 0!==o))return o}},ut=G,ht=$,ct=ot,ft=dt;ut.easing=ht,ut.canvas=ct,ut.options=ft;var gt=function(t){ut.extend(this,t),this.initialize.apply(this,arguments)};ut.extend(gt.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=ut.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,n=e._start,a=e._view;return i&&1!==t?(a||(a=e._view={}),n||(n=e._start={}),function(t,e,i,n){var a,o,r,s,l,d,u,h,c,f=Object.keys(i);for(a=0,o=f.length;a<o;++a)if(d=i[r=f[a]],e.hasOwnProperty(r)||(e[r]=d),(s=e[r])!==d&&"_"!==r[0]){if(t.hasOwnProperty(r)||(t[r]=s),(u=typeof d)==typeof(l=t[r]))if("string"===u){if((h=X(l)).valid&&(c=X(d)).valid){e[r]=c.mix(h,n).rgbString();continue}}else if(ut.isFinite(l)&&ut.isFinite(d)){e[r]=l+(d-l)*n;continue}e[r]=d}}(n,a,i,t),e):(e._view=i,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return ut.isNumber(this._model.x)&&ut.isNumber(this._model.y)}}),gt.extend=ut.inherits;var pt=gt,mt=pt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),vt=mt;Object.defineProperty(mt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(mt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),st._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:ut.noop,onComplete:ut.noop}});var bt={animations:[],request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=i,n||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=ut.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=ut.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,i,n,a=this.animations,o=0;o<a.length;)e=(t=a[o]).chart,i=t.numSteps,n=Math.floor((Date.now()-t.startTime)/t.duration*i)+1,t.currentStep=Math.min(n,i),ut.callback(t.render,[e,t],e),ut.callback(t.onAnimationProgress,[t],e),t.currentStep>=i?(ut.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(o,1)):++o}},xt=ut.options.resolve,yt=["push","pop","shift","splice","unshift"];function kt(t,e){var i=t._chartjs;if(i){var n=i.listeners,a=n.indexOf(e);-1!==a&&n.splice(a,1),n.length>0||(yt.forEach(function(e){delete t[e]}),delete t._chartjs)}}var wt=function(t,e){this.initialize(t,e)};ut.extend(wt.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&kt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,i=this,n=i.getDataset(),a=n.data||(n.data=[]);i._data!==a&&(i._data&&kt(i._data,i),a&&Object.isExtensible(a)&&(e=i,(t=a)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),yt.forEach(function(e){var i="onData"+e.charAt(0).toUpperCase()+e.slice(1),n=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),a=n.apply(this,e);return ut.each(t._chartjs.listeners,function(t){"function"==typeof t[i]&&t[i].apply(t,e)}),a}})}))),i._data=a),i.resyncElements()},update:ut.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t){ut.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model,o=ut.getHoverColor;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth},a.backgroundColor=xt([n.hoverBackgroundColor,e.hoverBackgroundColor,o(a.backgroundColor)],void 0,i),a.borderColor=xt([n.hoverBorderColor,e.hoverBorderColor,o(a.borderColor)],void 0,i),a.borderWidth=xt([n.hoverBorderWidth,e.hoverBorderWidth,a.borderWidth],void 0,i)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):n>i&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),wt.extend=ut.inherits;var Mt=wt;st._set("global",{elements:{arc:{backgroundColor:st.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var _t=pt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=ut.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,r=i.startAngle,s=i.endAngle;s<r;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<r;)a+=2*Math.PI;var l=a>=r&&a<=s,d=o>=i.innerRadius&&o<=i.outerRadius;return l&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t,e=this._chart.ctx,i=this._view,n=i.startAngle,a=i.endAngle,o="inner"===i.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(i.x,i.y,Math.max(i.outerRadius-o,0),n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.fillStyle=i.backgroundColor,e.fill(),i.borderWidth&&("inner"===i.borderAlign?(e.beginPath(),t=o/i.outerRadius,e.arc(i.x,i.y,i.outerRadius,n-t,a+t),i.innerRadius>o?(t=o/i.innerRadius,e.arc(i.x,i.y,i.innerRadius-o,a+t,n-t,!0)):e.arc(i.x,i.y,o,a+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(i.x,i.y,i.outerRadius,n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.lineWidth=2*i.borderWidth,e.lineJoin="round"):(e.lineWidth=i.borderWidth,e.lineJoin="bevel"),e.strokeStyle=i.borderColor,e.stroke()),e.restore()}}),Ct=ut.valueOrDefault,St=st.global.defaultColor;st._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Pt=pt.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=st.global,d=l.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||d.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||d.borderDash),o.lineDashOffset=Ct(a.borderDashOffset,d.borderDashOffset),o.lineJoin=a.borderJoinStyle||d.borderJoinStyle,o.lineWidth=Ct(a.borderWidth,d.borderWidth),o.strokeStyle=a.borderColor||l.defaultColor,o.beginPath(),u=-1,t=0;t<s.length;++t)e=s[t],i=ut.previousItem(s,t),n=e._view,0===t?n.skip||(o.moveTo(n.x,n.y),u=t):(i=-1===u?i:s[u],n.skip||(u!==t-1&&!r||-1===u?o.moveTo(n.x,n.y):ut.canvas.lineTo(o,i._view,e._view),u=t));o.stroke(),o.restore()}}),It=ut.valueOrDefault,At=st.global.defaultColor;function Dt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}st._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:At,borderColor:At,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var Tt=pt.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:Dt,inXRange:Dt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._chart.ctx,n=e.pointStyle,a=e.rotation,o=e.radius,r=e.x,s=e.y,l=st.global,d=l.defaultColor;e.skip||(void 0===t||ut.canvas._isPointInArea(e,t))&&(i.strokeStyle=e.borderColor||d,i.lineWidth=It(e.borderWidth,l.elements.point.borderWidth),i.fillStyle=e.backgroundColor||d,ut.canvas.drawPoint(i,n,o,r,s,a))}}),Ft=st.global.defaultColor;function Lt(t){return t&&void 0!==t.width}function Rt(t){var e,i,n,a,o;return Lt(t)?(o=t.width/2,e=t.x-o,i=t.x+o,n=Math.min(t.y,t.base),a=Math.max(t.y,t.base)):(o=t.height/2,e=Math.min(t.x,t.base),i=Math.max(t.x,t.base),n=t.y-o,a=t.y+o),{left:e,top:n,right:i,bottom:a}}function Ot(t,e,i){return t===e?i:t===i?e:t}function zt(t,e,i){var n,a,o,r,s=t.borderWidth,l=function(t){var e=t.borderSkipped,i={};return e?(t.horizontal?t.base>t.x&&(e=Ot(e,"left","right")):t.base<t.y&&(e=Ot(e,"bottom","top")),i[e]=!0,i):i}(t);return ut.isObject(s)?(n=+s.top||0,a=+s.right||0,o=+s.bottom||0,r=+s.left||0):n=a=o=r=+s||0,{t:l.top||n<0?0:n>i?i:n,r:l.right||a<0?0:a>e?e:a,b:l.bottom||o<0?0:o>i?i:o,l:l.left||r<0?0:r>e?e:r}}function Bt(t,e,i){var n=null===e,a=null===i,o=!(!t||n&&a)&&Rt(t);return o&&(n||e>=o.left&&e<=o.right)&&(a||i>=o.top&&i<=o.bottom)}st._set("global",{elements:{rectangle:{backgroundColor:Ft,borderColor:Ft,borderSkipped:"bottom",borderWidth:0}}});var Nt=pt.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=function(t){var e=Rt(t),i=e.right-e.left,n=e.bottom-e.top,a=zt(t,i/2,n/2);return{outer:{x:e.left,y:e.top,w:i,h:n},inner:{x:e.left+a.l,y:e.top+a.t,w:i-a.l-a.r,h:n-a.t-a.b}}}(e),n=i.outer,a=i.inner;t.fillStyle=e.backgroundColor,t.fillRect(n.x,n.y,n.w,n.h),n.w===a.w&&n.h===a.h||(t.save(),t.beginPath(),t.rect(n.x,n.y,n.w,n.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Bt(this._view,t,e)},inLabelRange:function(t,e){var i=this._view;return Lt(i)?Bt(i,t,null):Bt(i,null,e)},inXRange:function(t){return Bt(this._view,t,null)},inYRange:function(t){return Bt(this._view,null,t)},getCenterPoint:function(){var t,e,i=this._view;return Lt(i)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return Lt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),Wt={},Vt=_t,Et=Pt,Ht=Tt,jt=Nt;Wt.Arc=Vt,Wt.Line=Et,Wt.Point=Ht,Wt.Rectangle=jt;var qt=ut.options.resolve;st._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Yt=Mt.extend({dataElementType:Wt.Rectangle,initialize:function(){var t;Mt.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=n.getDataset(),r=n._resolveElementOptions(t,e);t._xScale=n.getScaleForId(a.xAxisID),t._yScale=n.getScaleForId(a.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderSkipped:r.borderSkipped,borderWidth:r.borderWidth,datasetLabel:o.label,label:n.chart.data.labels[e]},n._updateElementGeometry(t,e,i),t.pivot()},_updateElementGeometry:function(t,e,i){var n=this,a=t._model,o=n._getValueScale(),r=o.getBasePixel(),s=o.isHorizontal(),l=n._ruler||n.getRuler(),d=n.calculateBarValuePixels(n.index,e),u=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?r:d.base,a.x=s?i?r:d.head:u.center,a.y=s?u.center:i?r:d.head,a.height=s?u.size:void 0,a.width=s?void 0:u.size},_getStacks:function(t){var e,i,n=this.chart,a=this._getIndexScale().options.stacked,o=void 0===t?n.data.datasets.length:t+1,r=[];for(e=0;e<o;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===r.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===r.indexOf(i.stack)))&&r.push(i.stack);return r},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this._getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),r=o?i.left:i.top,s=r+(o?i.width:i.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(i.getPixelForValue(null,t,a));return{min:ut.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,o,r=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,o=e.length;a<o;++a)r=Math.min(r,Math.abs(e[a]-e[a-1]));for(a=0,o=s.length;a<o;++a)n=t.getPixelForTick(a),r=a>0?Math.min(r,n-i):r,i=n;return r}(i,l):-1,pixels:l,start:r,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,d=this.getMeta(),u=this._getValueScale(),h=u.isHorizontal(),c=l.data.datasets,f=+u.getRightValue(c[t].data[e]),g=u.options.minBarLength,p=u.options.stacked,m=d.stack,v=0;if(p||void 0===p&&void 0!==m)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===m&&n.controller._getValueScaleId()===u.id&&l.isDatasetVisible(i)&&(a=+u.getRightValue(c[i].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=u.getPixelForValue(v),s=(r=u.getPixelForValue(v+f))-o,void 0!==g&&Math.abs(s)<g&&(s=g,r=f>=0&&!h||f<0&&h?o-g:o+g),{size:s,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n=i.scale.options,a="flex"===n.barThickness?function(t,e,i){var n,a=e.pixels,o=a[t],r=t>0?a[t-1]:null,s=t<a.length-1?a[t+1]:null,l=i.categoryPercentage;return null===r&&(r=o-(null===s?e.end-e.start:s-o)),null===s&&(s=o+o-r),n=o-(o-Math.min(r,s))/2*l,{chunk:Math.abs(s-r)/2*l/e.stackCount,ratio:i.barPercentage,start:n}}(e,i,n):function(t,e,i){var n,a,o=i.barThickness,r=e.stackCount,s=e.pixels[t];return ut.isNullOrUndef(o)?(n=e.min*i.categoryPercentage,a=i.barPercentage):(n=o*r,a=1),{chunk:n/r,ratio:a,start:s-n/2}}(e,i,n),o=this.getStackIndex(t,this.getMeta().stack),r=a.start+a.chunk*o+a.chunk/2,s=Math.min(ut.valueOrDefault(n.maxBarThickness,1/0),a.chunk*a.ratio);return{base:r-s/2,head:r+s/2,center:r,size:s}},draw:function(){var t=this.chart,e=this._getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(ut.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();ut.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.rectangle,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=qt([s[a],r[a],l[a]],u,e);return d}}),Ut=ut.valueOrDefault,Xt=ut.options.resolve;st._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",n=e.datasets[t.datasetIndex].data[t.index];return i+": ("+t.xLabel+", "+t.yLabel+", "+n.r+")"}}}});var Kt=Mt.extend({dataElementType:Wt.Point,update:function(t){var e=this,i=e.getMeta().data;ut.each(i,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=t.custom||{},r=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),d=n.getDataset().data[e],u=n.index,h=i?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof d?d:NaN,e,u),c=i?s.getBasePixel():s.getPixelForValue(d,e,u);t._xScale=r,t._yScale=s,t._options=l,t._datasetIndex=u,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:i?0:l.radius,skip:o.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Ut(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Ut(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Ut(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d=r.data[e],u={},h={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(i=0,n=c.length;i<n;++i)u[a=c[i]]=Xt([s[a],r[a],l[a]],h,e);return u.radius=Xt([s.radius,d?d.r:void 0,r.radius,l.radius],h,e),u}}),Gt=ut.options.resolve,Zt=ut.valueOrDefault;st._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n],s=r&&r.custom||{},l=t.options.elements.arc;return{text:i,fillStyle:Gt([s.backgroundColor,o.backgroundColor,l.backgroundColor],void 0,n),strokeStyle:Gt([s.borderColor,o.borderColor,l.borderColor],void 0,n),lineWidth:Gt([s.borderWidth,o.borderWidth,l.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.labels[t.index],n=": "+e.datasets[t.datasetIndex].data[t.index];return ut.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}});var $t=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var e,i,n=this,a=n.chart,o=a.chartArea,r=a.options,s=o.right-o.left,l=o.bottom-o.top,d=Math.min(s,l),u={x:0,y:0},h=n.getMeta(),c=h.data,f=r.cutoutPercentage,g=r.circumference,p=n._getRingWeight(n.index);if(g<2*Math.PI){var m=r.rotation%(2*Math.PI),v=(m+=2*Math.PI*(m>=Math.PI?-1:m<-Math.PI?1:0))+g,b={x:Math.cos(m),y:Math.sin(m)},x={x:Math.cos(v),y:Math.sin(v)},y=m<=0&&v>=0||m<=2*Math.PI&&2*Math.PI<=v,k=m<=.5*Math.PI&&.5*Math.PI<=v||m<=2.5*Math.PI&&2.5*Math.PI<=v,w=m<=-Math.PI&&-Math.PI<=v||m<=Math.PI&&Math.PI<=v,M=m<=.5*-Math.PI&&.5*-Math.PI<=v||m<=1.5*Math.PI&&1.5*Math.PI<=v,_=f/100,C={x:w?-1:Math.min(b.x*(b.x<0?1:_),x.x*(x.x<0?1:_)),y:M?-1:Math.min(b.y*(b.y<0?1:_),x.y*(x.y<0?1:_))},S={x:y?1:Math.max(b.x*(b.x>0?1:_),x.x*(x.x>0?1:_)),y:k?1:Math.max(b.y*(b.y>0?1:_),x.y*(x.y>0?1:_))},P={width:.5*(S.x-C.x),height:.5*(S.y-C.y)};d=Math.min(s/P.width,l/P.height),u={x:-.5*(S.x+C.x),y:-.5*(S.y+C.y)}}for(e=0,i=c.length;e<i;++e)c[e]._options=n._resolveElementOptions(c[e],e);for(a.borderWidth=n.getMaxBorderWidth(),a.outerRadius=Math.max((d-a.borderWidth)/2,0),a.innerRadius=Math.max(f?a.outerRadius/100*f:0,0),a.radiusLength=(a.outerRadius-a.innerRadius)/(n._getVisibleDatasetWeightTotal()||1),a.offsetX=u.x*a.outerRadius,a.offsetY=u.y*a.outerRadius,h.total=n.calculateTotal(),n.outerRadius=a.outerRadius-a.radiusLength*n._getRingWeightOffset(n.index),n.innerRadius=Math.max(n.outerRadius-a.radiusLength*p,0),e=0,i=c.length;e<i;++e)n.updateElement(c[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,r=a.options,s=r.animation,l=(o.left+o.right)/2,d=(o.top+o.bottom)/2,u=r.rotation,h=r.rotation,c=n.getDataset(),f=i&&s.animateRotate?0:t.hidden?0:n.calculateCircumference(c.data[e])*(r.circumference/(2*Math.PI)),g=i&&s.animateScale?0:n.innerRadius,p=i&&s.animateScale?0:n.outerRadius,m=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l+a.offsetX,y:d+a.offsetY,startAngle:u,endAngle:h,circumference:f,outerRadius:p,innerRadius:g,label:ut.valueAtIndexOrDefault(c.label,e,a.data.labels[e])}});var v=t._model;i&&s.animateRotate||(v.startAngle=0===e?r.rotation:n.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return ut.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,i,n,a,o,r,s,l,d=0,u=this.chart;if(!t)for(e=0,i=u.data.datasets.length;e<i;++e)if(u.isDatasetVisible(e)){t=(n=u.getDatasetMeta(e)).data,e!==this.index&&(o=n.controller);break}if(!t)return 0;for(e=0,i=t.length;e<i;++e)a=t[e],"inner"!==(r=o?o._resolveElementOptions(a,e):a._options).borderAlign&&(s=r.borderWidth,d=(l=r.hoverBorderWidth)>(d=s>d?s:d)?l:d);return d},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Zt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Zt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Zt(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=Gt([s[a],r[a],l[a]],u,e);return d},_getRingWeightOffset:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e},_getRingWeight:function(t){return Math.max(Zt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});st._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var Jt=Yt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Qt=ut.valueOrDefault,te=ut.options.resolve,ee=ut.canvas._isPointInArea;function ie(t,e){return Qt(t.showLine,e.showLines)}st._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var ne=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.getScaleForId(a.yAxisID),l=n.getDataset(),d=ie(l,n.chart.options);for(d&&(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._model=n._resolveLineOptions(o),o.pivot()),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(d&&0!==o._model.tension&&n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n,a,o=this,r=o.getMeta(),s=t.custom||{},l=o.getDataset(),d=o.index,u=l.data[e],h=o.getScaleForId(r.yAxisID),c=o.getScaleForId(r.xAxisID),f=r.dataset._model,g=o._resolvePointOptions(t,e);n=c.getPixelForValue("object"==typeof u?u:NaN,e,d),a=i?h.getBasePixel():o.calculatePointY(u,e,d),t._xScale=c,t._yScale=h,t._options=g,t._datasetIndex=d,t._index=e,t._model={x:n,y:a,skip:s.skip||isNaN(n)||isNaN(a),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Qt(s.tension,f?f.tension:0),steppedLine:!!f&&f.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=te([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options,l=s.elements.line,d={},u=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,i=u.length;e<i;++e)d[n=u[e]]=te([r[n],o[n],l[n]]);return d.spanGaps=Qt(o.spanGaps,s.spanGaps),d.tension=Qt(o.lineTension,l.tension),d.steppedLine=te([r.steppedLine,o.steppedLine,l.stepped]),d},calculatePointY:function(t,e,i){var n,a,o,r=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),d=0,u=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=r.data.datasets[n],"line"===(o=r.getDatasetMeta(n)).type&&o.yAxisID===l.id&&r.isDatasetVisible(n)){var h=Number(l.getRightValue(a.data[e]));h<0?u+=h||0:d+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(u+c):l.getPixelForValue(d+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.chart,o=this.getMeta(),r=o.dataset._model,s=a.chartArea,l=o.data||[];function d(t,e,i){return Math.max(Math.min(t,i),e)}if(r.spanGaps&&(l=l.filter(function(t){return!t._model.skip})),"monotone"===r.cubicInterpolationMode)ut.splineCurveMonotone(l);else for(t=0,e=l.length;t<e;++t)i=l[t]._model,n=ut.splineCurve(ut.previousItem(l,t)._model,i,ut.nextItem(l,t)._model,r.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(a.options.elements.line.capBezierPoints)for(t=0,e=l.length;t<e;++t)i=l[t]._model,ee(i,s)&&(t>0&&ee(l[t-1]._model,s)&&(i.controlPointPreviousX=d(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=d(i.controlPointPreviousY,s.top,s.bottom)),t<l.length-1&&ee(l[t+1]._model,s)&&(i.controlPointNextX=d(i.controlPointNextX,s.left,s.right),i.controlPointNextY=d(i.controlPointNextY,s.top,s.bottom)))},draw:function(){var t,e=this.chart,i=this.getMeta(),n=i.data||[],a=e.chartArea,o=n.length,r=0;for(ie(this.getDataset(),e.options)&&(t=(i.dataset._model.borderWidth||0)/2,ut.canvas.clipArea(e.ctx,{left:a.left,right:a.right,top:a.top-t,bottom:a.bottom+t}),i.dataset.draw(),ut.canvas.unclipArea(e.ctx));r<o;++r)n[r].draw(a)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Qt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Qt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Qt(i.hoverBorderWidth,i.borderWidth),e.radius=Qt(i.hoverRadius,i.radius)}}),ae=ut.options.resolve;st._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n].custom||{},s=t.options.elements.arc;return{text:i,fillStyle:ae([r.backgroundColor,o.backgroundColor,s.backgroundColor],void 0,n),strokeStyle:ae([r.borderColor,o.borderColor,s.borderColor],void 0,n),lineWidth:ae([r.borderWidth,o.borderWidth,s.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var oe=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,update:function(t){var e,i,n,a=this,o=a.getDataset(),r=a.getMeta(),s=a.chart.options.startAngle||0,l=a._starts=[],d=a._angles=[],u=r.data;for(a._updateRadius(),r.count=a.countVisibleElements(),e=0,i=o.data.length;e<i;e++)l[e]=s,n=a._computeAngle(e),d[e]=n,s+=n;for(e=0,i=u.length;e<i;++e)u[e]._options=a._resolveElementOptions(u[e],e),a.updateElement(u[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,i=e.chartArea,n=e.options,a=Math.min(i.right-i.left,i.bottom-i.top);e.outerRadius=Math.max(a/2,0),e.innerRadius=Math.max(n.cutoutPercentage?e.outerRadius/100*n.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getDataset(),r=a.options,s=r.animation,l=a.scale,d=a.data.labels,u=l.xCenter,h=l.yCenter,c=r.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(o.data[e]),g=n._starts[e],p=g+(t.hidden?0:n._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(o.data[e]),v=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_scale:l,_model:{backgroundColor:v.backgroundColor,borderColor:v.borderColor,borderWidth:v.borderWidth,borderAlign:v.borderAlign,x:u,y:h,innerRadius:0,outerRadius:i?m:f,startAngle:i&&s.animateRotate?c:g,endAngle:i&&s.animateRotate?c:p,label:ut.valueAtIndexOrDefault(d,e,d[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),i=0;return ut.each(e.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor,a=ut.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=a(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=a(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=a(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=ae([s[a],r[a],l[a]],u,e);return d},_computeAngle:function(t){var e=this,i=this.getMeta().count,n=e.getDataset(),a=e.getMeta();if(isNaN(n.data[t])||a.data[t].hidden)return 0;var o={chart:e.chart,dataIndex:t,dataset:n,datasetIndex:e.index};return ae([e.chart.options.elements.arc.angle,2*Math.PI/i],o,t)}});st._set("pie",ut.clone(st.doughnut)),st._set("pie",{cutoutPercentage:0});var re=$t,se=ut.valueOrDefault,le=ut.options.resolve;st._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var de=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,linkScales:ut.noop,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.chart.scale,l=n.getDataset();for(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._loop=!0,o._model=n._resolveLineOptions(o),o.pivot(),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),r=n.chart.scale,s=r.getPointPositionForValue(e,o.data[e]),l=n._resolvePointOptions(t,e),d=n.getMeta().dataset._model,u=i?r.xCenter:s.x,h=i?r.yCenter:s.y;t._scale=r,t._options=l,t._datasetIndex=n.index,t._index=e,t._model={x:u,y:h,skip:a.skip||isNaN(u)||isNaN(h),radius:l.radius,pointStyle:l.pointStyle,rotation:l.rotation,backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,tension:se(a.tension,d?d.tension:0),hitRadius:l.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=le([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,i=d.length;e<i;++e)l[n=d[e]]=le([r[n],o[n],s[n]]);return l.tension=se(o.lineTension,s.tension),l},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,r=a.data||[];function s(t,e,i){return Math.max(Math.min(t,i),e)}for(t=0,e=r.length;t<e;++t)i=r[t]._model,n=ut.splineCurve(ut.previousItem(r,t,!0)._model,i,ut.nextItem(r,t,!0)._model,i.tension),i.controlPointPreviousX=s(n.previous.x,o.left,o.right),i.controlPointPreviousY=s(n.previous.y,o.top,o.bottom),i.controlPointNextX=s(n.next.x,o.left,o.right),i.controlPointNextY=s(n.next.y,o.top,o.bottom)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=se(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=se(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=se(i.hoverBorderWidth,i.borderWidth),e.radius=se(i.hoverRadius,i.radius)}});st._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var ue={bar:Yt,bubble:Kt,doughnut:$t,horizontalBar:Jt,line:ne,polarArea:oe,pie:re,radar:de,scatter:ne};function he(t,e){return t.native?{x:t.x,y:t.y}:ut.getRelativePosition(t,e)}function ce(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n<o;++n)if(t.isDatasetVisible(n))for(a=0,r=(i=t.getDatasetMeta(n)).data.length;a<r;++a){var s=i.data[a];s._view.skip||e(s)}}function fe(t,e){var i=[];return ce(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function ge(t,e,i,n){var a=Number.POSITIVE_INFINITY,o=[];return ce(t,function(t){if(!i||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=n(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function pe(t){var e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,n){var a=e?Math.abs(t.x-n.x):0,o=i?Math.abs(t.y-n.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function me(t,e,i){var n=he(e,t);i.axis=i.axis||"x";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a),r=[];return o.length?(t.data.datasets.forEach(function(e,i){if(t.isDatasetVisible(i)){var n=t.getDatasetMeta(i).data[o[0]._index];n&&!n._view.skip&&r.push(n)}}),r):[]}var ve={modes:{single:function(t,e){var i=he(e,t),n=[];return ce(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:me,index:me,dataset:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a);return o.length>0&&(o=t.getDatasetMeta(o[0]._datasetIndex).data),o},"x-axis":function(t,e){return me(t,e,{intersect:!1})},point:function(t,e){return fe(t,he(e,t))},nearest:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis);return ge(t,n,i.intersect,a)},x:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a},y:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a}}};function be(t,e){return ut.where(t,function(t){return t.position===e})}function xe(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}function ye(t,e){ut.each(t,function(t){e[t.position]+=t.isHorizontal()?t.height:t.width})}st._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ke={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)n=a[r],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(t,e,i){if(t){var n=t.options.layout||{},a=ut.options.toPadding(n.padding),o=a.left,r=a.right,s=a.top,l=a.bottom,d=be(t.boxes,"left"),u=be(t.boxes,"right"),h=be(t.boxes,"top"),c=be(t.boxes,"bottom"),f=be(t.boxes,"chartArea");xe(d,!0),xe(u,!1),xe(h,!0),xe(c,!1);var g,p=d.concat(u),m=h.concat(c),v=p.concat(m),b=e-o-r,x=i-s-l,y=(e-b/2)/p.length,k=b,w=x,M={top:s,left:o,bottom:l,right:r},_=[];ut.each(v,function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?b:k,x/2),w-=e.height):(e=t.update(y,w),k-=e.width),_.push({horizontal:i,width:e.width,box:t})}),g=function(t){var e=0,i=0,n=0,a=0;return ut.each(t,function(t){if(t.getPadding){var o=t.getPadding();e=Math.max(e,o.top),i=Math.max(i,o.left),n=Math.max(n,o.bottom),a=Math.max(a,o.right)}}),{top:e,left:i,bottom:n,right:a}}(v),ut.each(p,T),ye(p,M),ut.each(m,T),ye(m,M),ut.each(p,function(t){var e=ut.findNextWhere(_,function(e){return e.box===t}),i={left:0,right:0,top:M.top,bottom:M.bottom};e&&t.update(e.width,w,i)}),ye(v,M={top:s,left:o,bottom:l,right:r});var C=Math.max(g.left-M.left,0);M.left+=C,M.right+=Math.max(g.right-M.right,0);var S=Math.max(g.top-M.top,0);M.top+=S,M.bottom+=Math.max(g.bottom-M.bottom,0);var P=i-M.top-M.bottom,I=e-M.left-M.right;I===k&&P===w||(ut.each(p,function(t){t.height=P}),ut.each(m,function(t){t.fullWidth||(t.width=I)}),w=P,k=I);var A=o+C,D=s+S;ut.each(d.concat(h),F),A+=k,D+=w,ut.each(u,F),ut.each(c,F),t.chartArea={left:M.left,top:M.top,right:M.left+k,bottom:M.top+w},ut.each(f,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,w)})}function T(t){var e=ut.findNextWhere(_,function(e){return e.box===t});if(e)if(e.horizontal){var i={left:Math.max(M.left,g.left),right:Math.max(M.right,g.right),top:0,bottom:0};t.update(t.fullWidth?b:k,x/2,i)}else t.update(e.width,w)}function F(t){t.isHorizontal()?(t.left=t.fullWidth?o:M.left,t.right=t.fullWidth?e-r:M.left+k,t.top=D,t.bottom=D+t.height,D=t.bottom):(t.left=A,t.right=A+t.width,t.top=M.top,t.bottom=M.top+w,A=t.right)}}};var we,Me=(we=Object.freeze({default:"@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&we.default||we,_e="$chartjs",Ce="chartjs-size-monitor",Se="chartjs-render-monitor",Pe="chartjs-render-animation",Ie=["animationstart","webkitAnimationStart"],Ae={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function De(t,e){var i=ut.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var Te=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Fe(t,e,i){t.addEventListener(e,i,Te)}function Le(t,e,i){t.removeEventListener(e,i,Te)}function Re(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Oe(t){var e=document.createElement("div");return e.className=t||"",e}function ze(t,e,i){var n,a,o,r,s=t[_e]||(t[_e]={}),l=s.resizer=function(t){var e=Oe(Ce),i=Oe(Ce+"-expand"),n=Oe(Ce+"-shrink");i.appendChild(Oe()),n.appendChild(Oe()),e.appendChild(i),e.appendChild(n),e._reset=function(){i.scrollLeft=1e6,i.scrollTop=1e6,n.scrollLeft=1e6,n.scrollTop=1e6};var a=function(){e._reset(),t()};return Fe(i,"scroll",a.bind(i,"expand")),Fe(n,"scroll",a.bind(n,"shrink")),e}((n=function(){if(s.resizer){var n=i.options.maintainAspectRatio&&t.parentNode,a=n?n.clientWidth:0;e(Re("resize",i)),n&&n.clientWidth<a&&i.canvas&&e(Re("resize",i))}},o=!1,r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,ut.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));!function(t,e){var i=t[_e]||(t[_e]={}),n=i.renderProxy=function(t){t.animationName===Pe&&e()};ut.each(Ie,function(e){Fe(t,e,n)}),i.reflow=!!t.offsetParent,t.classList.add(Se)}(t,function(){if(s.resizer){var e=t.parentNode;e&&e!==l.parentNode&&e.insertBefore(l,e.firstChild),l._reset()}})}function Be(t){var e=t[_e]||{},i=e.resizer;delete e.resizer,function(t){var e=t[_e]||{},i=e.renderProxy;i&&(ut.each(Ie,function(e){Le(t,e,i)}),delete e.renderProxy),t.classList.remove(Se)}(t),i&&i.parentNode&&i.parentNode.removeChild(i)}var Ne={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){var t,e,i;this._loaded||(this._loaded=!0,this.disableCSSInjection||(e=Me,i=(t=this)._style||document.createElement("style"),t._style||(t._style=i,e="/* Chart.js */\n"+e,i.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[_e]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=De(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=De(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[_e]){var i=e[_e].initial;["height","width"].forEach(function(t){var n=i[t];ut.isNullOrUndef(n)?e.removeAttribute(t):e.setAttribute(t,n)}),ut.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[_e]}},addEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=i[_e]||(i[_e]={});Fe(n,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){i(function(t,e){var i=Ae[t.type]||t.type,n=ut.getRelativePosition(t,e);return Re(i,e,n.x,n.y,t)}(e,t))})}else ze(n,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[_e]||{}).proxies||{})[t.id+"_"+e];a&&Le(n,e,a)}else Be(n)}};ut.addEvent=Fe,ut.removeEvent=Le;var We=Ne._enabled?Ne:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}},Ve=ut.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},We);st._set("global",{plugins:{}});var Ee={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,o,r,s,l=this.descriptors(t),d=l.length;for(n=0;n<d;++n)if("function"==typeof(s=(o=(a=l[n]).plugin)[e])&&((r=[t].concat(i||[])).push(a.options),!1===s.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],n=[],a=t&&t.config||{},o=a.options&&a.options.plugins||{};return this._plugins.concat(a.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,a=o[e];!1!==a&&(!0===a&&(a=ut.clone(st.global.plugins[e])),i.push(t),n.push({plugin:t,options:a||{}}))}}),e.descriptors=n,e.id=this._cacheId,n},_invalidate:function(t){delete t.$plugins}},He={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=ut.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?ut.merge({},[st.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=ut.extend(this.defaults[t],e))},addScalesToLayout:function(t){ut.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ke.addBox(t,e)})}},je=ut.valueOrDefault;st._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:ut.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(t.length>0){var o=t[0];o.label?i=o.label:o.xLabel?i=o.xLabel:a>0&&o.index<a&&(i=n[o.index])}return i},afterTitle:ut.noop,beforeBody:ut.noop,beforeLabel:ut.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i&&(i+=": "),ut.isNullOrUndef(t.value)?i+=t.yLabel:i+=t.value,i},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:ut.noop,afterBody:ut.noop,beforeFooter:ut.noop,footer:ut.noop,afterFooter:ut.noop}}});var qe={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;e<i;++e){var r=t[e];if(r&&r.hasValue()){var s=r.tooltipPosition();n+=s.x,a+=s.y,++o}}return{x:n/o,y:a/o}},nearest:function(t,e){var i,n,a,o=e.x,r=e.y,s=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var l=t[i];if(l&&l.hasValue()){var d=l.getCenterPoint(),u=ut.distanceBetweenPoints(e,d);u<s&&(s=u,a=l)}}if(a){var h=a.tooltipPosition();o=h.x,r=h.y}return{x:o,y:r}}};function Ye(t,e){return e&&(ut.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Ue(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Xe(t){var e=st.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:je(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:je(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:je(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:je(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:je(t.titleFontStyle,e.defaultFontStyle),titleFontSize:je(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:je(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:je(t.footerFontStyle,e.defaultFontStyle),footerFontSize:je(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ke(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Ge(t){return Ye([],Ue(t))}var Ze=pt.extend({initialize:function(){this._model=Xe(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},getBeforeBody:function(){return Ge(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var i=this,n=i._options.callbacks,a=[];return ut.each(t,function(t){var o={before:[],lines:[],after:[]};Ye(o.before,Ue(n.beforeLabel.call(i,t,e))),Ye(o.lines,n.label.call(i,t,e)),Ye(o.after,Ue(n.afterLabel.call(i,t,e))),a.push(o)}),a},getAfterBody:function(){return Ge(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},update:function(t){var e,i,n,a,o,r,s,l,d,u,h=this,c=h._options,f=h._model,g=h._model=Xe(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var k=[],w=[];y=qe[c.position].call(h,p,h._eventPosition);var M=[];for(e=0,i=p.length;e<i;++e)M.push((n=p[e],a=void 0,o=void 0,r=void 0,s=void 0,l=void 0,d=void 0,u=void 0,a=n._xScale,o=n._yScale||n._scale,r=n._index,s=n._datasetIndex,l=n._chart.getDatasetMeta(s).controller,d=l._getIndexScale(),u=l._getValueScale(),{xLabel:a?a.getLabelForIndex(r,s):"",yLabel:o?o.getLabelForIndex(r,s):"",label:d?""+d.getLabelForIndex(r,s):"",value:u?""+u.getLabelForIndex(r,s):"",index:r,datasetIndex:s,x:n._model.x,y:n._model.y}));c.filter&&(M=M.filter(function(t){return c.filter(t,m)})),c.itemSort&&(M=M.sort(function(t,e){return c.itemSort(t,e,m)})),ut.each(M,function(t){k.push(c.callbacks.labelColor.call(h,t,h._chart)),w.push(c.callbacks.labelTextColor.call(h,t,h._chart))}),g.title=h.getTitle(M,m),g.beforeBody=h.getBeforeBody(M,m),g.body=h.getBody(M,m),g.afterBody=h.getAfterBody(M,m),g.footer=h.getFooter(M,m),g.x=y.x,g.y=y.y,g.caretPadding=c.caretPadding,g.labelColors=k,g.labelTextColors=w,g.dataPoints=M,x=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,d=e.titleFontSize,u=e.bodyFontSize,h=e.footerFontSize;n+=s*d,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*u,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*h,n+=l?(l-1)*e.footerSpacing:0;var c=0,f=function(t){a=Math.max(a,i.measureText(t).width+c)};return i.font=ut.fontString(d,e._titleFontStyle,e._titleFontFamily),ut.each(e.title,f),i.font=ut.fontString(u,e._bodyFontStyle,e._bodyFontFamily),ut.each(e.beforeBody.concat(e.afterBody),f),c=e.displayColors?u+2:0,ut.each(o,function(t){ut.each(t.before,f),ut.each(t.lines,f),ut.each(t.after,f)}),c=0,i.font=ut.fontString(h,e._footerFontStyle,e._footerFontFamily),ut.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,g),b=function(t,e,i,n){var a=t.x,o=t.y,r=t.caretSize,s=t.caretPadding,l=t.cornerRadius,d=i.xAlign,u=i.yAlign,h=r+s,c=l+s;return"right"===d?a-=e.width:"center"===d&&((a-=e.width/2)+e.width>n.width&&(a=n.width-e.width),a<0&&(a=0)),"top"===u?o+=h:o-="bottom"===u?e.height+h:e.height/2,"center"===u?"left"===d?a+=h:"right"===d&&(a-=h):"left"===d?a-=c:"right"===d&&(a+=c),{x:a,y:o}}(g,x,v=function(t,e){var i,n,a,o,r,s=t._model,l=t._chart,d=t._chart.chartArea,u="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(d.left+d.right)/2,f=(d.top+d.bottom)/2;"center"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(u="left",a(s.x)&&(u="center",h=r(s.y))):n(s.x)&&(u="right",o(s.x)&&(u="center",h=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:u,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,d=i.caretSize,u=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(n=f)-d,o=n,r=s+d,l=s-d):(a=(n=f+p)+d,o=n,r=s-d,l=s+d);else if("left"===h?(n=(a=f+u+d)-d,o=a+d):"right"===h?(n=(a=f+p-u-d)-d,o=a+d):(n=(a=i.caretX)-d,o=a+d),"top"===c)s=(r=g)-d,l=r;else{s=(r=g+m)+d,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i){var n=e.title;if(n.length){t.x=Ke(e,e._titleAlign),i.textAlign=e._titleAlign,i.textBaseline="top";var a,o,r=e.titleFontSize,s=e.titleSpacing;for(i.fillStyle=e.titleFontColor,i.font=ut.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0,o=n.length;a<o;++a)i.fillText(n[a],t.x,t.y),t.y+=r+s,a+1===n.length&&(t.y+=e.titleMarginBottom-s)}},drawBody:function(t,e,i){var n,a=e.bodyFontSize,o=e.bodySpacing,r=e._bodyAlign,s=e.body,l=e.displayColors,d=e.labelColors,u=0,h=l?Ke(e,"left"):0;i.textAlign=r,i.textBaseline="top",i.font=ut.fontString(a,e._bodyFontStyle,e._bodyFontFamily),t.x=Ke(e,r);var c=function(e){i.fillText(e,t.x+u,t.y),t.y+=a+o};i.fillStyle=e.bodyFontColor,ut.each(e.beforeBody,c),u=l&&"right"!==r?"center"===r?a/2+1:a+2:0,ut.each(s,function(o,r){n=e.labelTextColors[r],i.fillStyle=n,ut.each(o.before,c),ut.each(o.lines,function(o){l&&(i.fillStyle=e.legendColorBackground,i.fillRect(h,t.y,a,a),i.lineWidth=1,i.strokeStyle=d[r].borderColor,i.strokeRect(h,t.y,a,a),i.fillStyle=d[r].backgroundColor,i.fillRect(h+1,t.y+1,a-2,a-2),i.fillStyle=n),c(o)}),ut.each(o.after,c)}),u=0,ut.each(e.afterBody,c),t.y-=o},drawFooter:function(t,e,i){var n=e.footer;n.length&&(t.x=Ke(e,e._footerAlign),t.y+=e.footerMarginTop,i.textAlign=e._footerAlign,i.textBaseline="top",i.fillStyle=e.footerFontColor,i.font=ut.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),ut.each(n,function(n){i.fillText(n,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,i,n){i.fillStyle=e.backgroundColor,i.strokeStyle=e.borderColor,i.lineWidth=e.borderWidth;var a=e.xAlign,o=e.yAlign,r=t.x,s=t.y,l=n.width,d=n.height,u=e.cornerRadius;i.beginPath(),i.moveTo(r+u,s),"top"===o&&this.drawCaret(t,n),i.lineTo(r+l-u,s),i.quadraticCurveTo(r+l,s,r+l,s+u),"center"===o&&"right"===a&&this.drawCaret(t,n),i.lineTo(r+l,s+d-u),i.quadraticCurveTo(r+l,s+d,r+l-u,s+d),"bottom"===o&&this.drawCaret(t,n),i.lineTo(r+u,s+d),i.quadraticCurveTo(r,s+d,r,s+d-u),"center"===o&&"left"===a&&this.drawCaret(t,n),i.lineTo(r,s+u),i.quadraticCurveTo(r,s,r+u,s),i.closePath(),i.fill(),e.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(t.save(),t.globalAlpha=a,this.drawBackground(n,e,t,i),n.y+=e.yPadding,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),t.restore())}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!ut.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),$e=qe,Je=Ze;Je.positioners=$e;var Qe=ut.valueOrDefault;function ti(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,o,r,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a<s;++a)r=i[t][a],o=Qe(r.type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?ut.merge(e[t][a],[He.getScaleDefaults(o),r]):ut.merge(e[t][a],r)}else ut._merger(t,e,i,n)}})}function ei(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){var a=e[t]||{},o=i[t];"scales"===t?e[t]=ti(a,o):"scale"===t?e[t]=ut.merge(a,[He.getScaleDefaults(o.type),o]):ut._merger(t,e,i,n)}})}function ii(t){return"top"===t||"bottom"===t}st._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var ni=function(t,e){return this.construct(t,e),this};ut.extend(ni.prototype,{construct:function(t,e){var i=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ei(st.global,st[t.type],t.options||{}),t}(e);var n=Ve.acquireContext(t,e),a=n&&n.canvas,o=a&&a.height,r=a&&a.width;i.id=ut.uid(),i.ctx=n,i.canvas=a,i.config=e,i.width=r,i.height=o,i.aspectRatio=o?r/o:null,i.options=e.options,i._bufferedRender=!1,i.chart=i,i.controller=i,ni.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),n&&a?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Ee.notify(t,"beforeInit"),ut.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),Ee.notify(t,"afterInit"),t},clear:function(){return ut.canvas.clear(this),this},stop:function(){return bt.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(ut.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:ut.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",ut.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};Ee.notify(e,"resize",[s]),i.onResize&&i.onResize(e,s),e.stop(),e.update({duration:i.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;ut.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),ut.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,i=t.scales||{},n=[],a=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});e.scales&&(n=n.concat((e.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(e.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),e.scale&&n.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ut.each(n,function(e){var n=e.options,o=n.id,r=Qe(n.type,e.dtype);ii(n.position)!==ii(e.dposition)&&(n.position=e.dposition),a[o]=!0;var s=null;if(o in i&&i[o].type===r)(s=i[o]).options=n,s.ctx=t.ctx,s.chart=t;else{var l=He.getScaleConstructor(r);if(!l)return;s=new l({id:o,type:r,options:n,ctx:t.ctx,chart:t}),i[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)}),ut.each(a,function(t,e){t||delete i[e]}),t.scales=i,He.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return ut.each(t.data.datasets,function(i,n){var a=t.getDatasetMeta(n),o=i.type||t.config.type;if(a.type&&a.type!==o&&(t.destroyDatasetMeta(n),a=t.getDatasetMeta(n)),a.type=o,a.controller)a.controller.updateIndex(n),a.controller.linkScales();else{var r=ue[a.type];if(void 0===r)throw new Error('"'+a.type+'" is not a chart type.');a.controller=new r(t,n),e.push(a.controller)}},t),e},resetElements:function(){var t=this;ut.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,ut.each(e.scales,function(t){ke.removeBox(e,t)}),i=ei(st.global,st[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),Ee._invalidate(n),!1!==Ee.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();ut.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&ut.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],Ee.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==Ee.notify(this,"beforeLayout")&&(ke.update(this,this.width,this.height),Ee.notify(this,"afterScaleUpdate"),Ee.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==Ee.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);Ee.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==Ee.notify(this,"beforeDatasetUpdate",[i])&&(e.controller.update(),Ee.notify(this,"afterDatasetUpdate",[i]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var i=e.options.animation,n=Qe(t.duration,i&&i.duration),a=t.lazy;if(!1!==Ee.notify(e,"beforeRender")){var o=function(t){Ee.notify(e,"afterRender"),ut.callback(i&&i.onComplete,[t],e)};if(i&&n){var r=new vt({numSteps:n/16.66,easing:t.easing||i.easing,render:function(t,e){var i=ut.easing.effects[e.easing],n=e.currentStep,a=n/e.numSteps;t.draw(i(a),a,n)},onAnimationProgress:i.onProgress,onAnimationComplete:o});bt.addAnimation(e,r,n,a)}else e.draw(),o(new vt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),ut.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==Ee.notify(e,"beforeDraw",[t])&&(ut.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.drawDatasets(t),e._drawTooltip(t),Ee.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==Ee.notify(e,"beforeDatasetsDraw",[t])){for(var i=(e.data.datasets||[]).length-1;i>=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);Ee.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==Ee.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),Ee.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==Ee.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),Ee.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return ve.modes.single(this,t)},getElementsAtEvent:function(t){return ve.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ve.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=ve.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return ve.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var t,e,i=this,n=i.canvas;for(i.stop(),t=0,e=i.data.datasets.length;t<e;++t)i.destroyDatasetMeta(t);n&&(i.unbindEvents(),ut.canvas.clear(i),Ve.releaseContext(i.ctx),i.canvas=null,i.ctx=null),Ee.notify(i,"destroy"),delete ni.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Je({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},i=function(){t.eventHandler.apply(t,arguments)};ut.each(t.options.events,function(n){Ve.addEventListener(t,n,i),e[n]=i}),t.options.responsive&&(i=function(){t.resize()},Ve.addEventListener(t,"resize",i),e.resize=i)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,ut.each(e,function(e,i){Ve.removeEventListener(t,i,e)}))},updateHoverStyle:function(t,e,i){var n,a,o,r=i?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[r](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==Ee.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),Ee.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},a=n.hover;return i.lastActive=i.lastActive||[],"mouseout"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,a.mode,a),ut.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,a.mode,!1),i.active.length&&a.mode&&i.updateHoverStyle(i.active,a.mode,!0),e=!ut.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),ni.instances={};var ai=ni;ni.Controller=ni,ni.types={},ut.configMerge=ei,ut.scaleMerge=ti;function oi(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function ri(t){this.options=t||{}}ut.extend(ri.prototype,{formats:oi,parse:oi,format:oi,add:oi,diff:oi,startOf:oi,endOf:oi,_create:function(t){return t}}),ri.override=function(t){ut.extend(ri.prototype,t)};var si={_date:ri},li={formatters:{values:function(t){return ut.isArray(t)?t:""+t},linear:function(t,e,i){var n=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=ut.log10(Math.abs(n)),o="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var r=ut.log10(Math.abs(t));o=t.toExponential(Math.floor(r)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(ut.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}},di=ut.valueOrDefault,ui=ut.valueAtIndexOrDefault;function hi(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function ci(t,e,i){return ut.isArray(e)?ut.longestText(t,i,e):t.measureText(e).width}st._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:li.formatters.values,minor:{},major:{}}});var fi=pt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){ut.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,r,s,l,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=ut.extend({left:0,right:0,top:0,bottom:0},i),d._maxLabelLines=0,d.longestLabelWidth=0,d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],s=d.afterBuildTicks(s)||s,d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,n=0,a=o.length;n<a;++n)r=o[n],(l=s[n])?l.label=r:s.push(l={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){ut.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){ut.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){ut.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){ut.callback(this.options.beforeDataLimits,[this])},determineDataLimits:ut.noop,afterDataLimits:function(){ut.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){ut.callback(this.options.beforeBuildTicks,[this])},buildTicks:ut.noop,afterBuildTicks:function(t){var e=this;return ut.isArray(t)&&t.length?ut.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=ut.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){ut.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){ut.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){ut.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,i=t.options.ticks,n=hi(t._ticks),a=ut.options._parseFont(i);e.font=a.string;var o=i.minRotation||0;if(n.length&&t.options.display&&t.isHorizontal())for(var r,s=ut.longestText(e,a.string,n,t.longestTextCache),l=s,d=t.getPixelForTick(1)-t.getPixelForTick(0)-6;l>d&&o<i.maxRotation;){var u=ut.toRadians(o);if(r=Math.cos(u),Math.sin(u)*s>t.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){ut.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ut.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=hi(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=t._isVisible(),l=n.position,d=t.isHorizontal(),u=ut.options._parseFont,h=u(a),c=n.gridLines.tickMarkLength;if(e.width=d?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?c:0,e.height=d?s&&r.drawTicks?c:0:t.maxHeight,o.display&&s){var f=u(o),g=ut.options.toPadding(o.padding),p=f.lineHeight+g.height;d?e.height+=p:e.width+=p}if(a.display&&s){var m=ut.longestText(t.ctx,h.string,i,t.longestTextCache),v=ut.numberOfLabelLines(i),b=.5*h.size,x=t.options.ticks.padding;if(t._maxLabelLines=v,t.longestLabelWidth=m,d){var y=ut.toRadians(t.labelRotation),k=Math.cos(y),w=Math.sin(y)*m+h.lineHeight*v+b;e.height=Math.min(t.maxHeight,e.height+w+x),t.ctx.font=h.string;var M,_,C=ci(t.ctx,i[0],h.string),S=ci(t.ctx,i[i.length-1],h.string),P=t.getPixelForTick(0)-t.left,I=t.right-t.getPixelForTick(i.length-1);0!==t.labelRotation?(M="bottom"===l?k*C:k*b,_="bottom"===l?k*b:k*S):(M=C/2,_=S/2),t.paddingLeft=Math.max(M-P,0)+3,t.paddingRight=Math.max(_-I,0)+3}else a.mirror?m=0:m+=x+b,e.width=Math.min(t.maxWidth,e.width+m),t.paddingTop=h.size/2,t.paddingBottom=h.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){ut.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ut.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:ut.noop,getPixelForValue:ut.noop,getValueForPixel:ut.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+a;return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+i;return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n=this,a=n.isHorizontal(),o=n.options.ticks.minor,r=t.length,s=!1,l=o.maxTicksLimit,d=n._tickSize()*(r-1),u=a?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.PaddingBottom),h=[];for(d>u&&(s=1+Math.floor(d/u)),r>l&&(s=Math.max(s,1+Math.floor(r/l))),e=0;e<r;e++)i=t[e],s>1&&e%s>0&&delete i.label,h.push(i);return h},_tickSize:function(){var t=this,e=t.isHorizontal(),i=t.options.ticks.minor,n=ut.toRadians(t.labelRotation),a=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),r=i.autoSkipPadding||0,s=t.longestLabelWidth+r||0,l=ut.options._parseFont(i),d=t._maxLabelLines*l.lineHeight+r||0;return e?d*a>s*o?s/a:d/o:d*o<s*a?d/a:s/o},_isVisible:function(){var t,e,i,n=this.chart,a=this.options.display;if("auto"!==a)return!!a;for(t=0,e=n.data.datasets.length;t<e;++t)if(n.isDatasetVisible(t)&&((i=n.getDatasetMeta(t)).xAxisID===this.id||i.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,i=e.options;if(e._isVisible()){var n,a,o,r=e.chart,s=e.ctx,l=st.global.defaultFontColor,d=i.ticks.minor,u=i.ticks.major||d,h=i.gridLines,c=i.scaleLabel,f=i.position,g=0!==e.labelRotation,p=d.mirror,m=e.isHorizontal(),v=ut.options._parseFont,b=d.display&&d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),x=di(d.fontColor,l),y=v(d),k=y.lineHeight,w=di(u.fontColor,l),M=v(u),_=d.padding,C=d.labelOffset,S=h.drawTicks?h.tickMarkLength:0,P=di(c.fontColor,l),I=v(c),A=ut.options.toPadding(c.padding),D=ut.toRadians(e.labelRotation),T=[],F=h.drawBorder?ui(h.lineWidth,0,0):0,L=ut._alignPixel;"top"===f?(n=L(r,e.bottom,F),a=e.bottom-S,o=n-F/2):"bottom"===f?(n=L(r,e.top,F),a=n+F/2,o=e.top+S):"left"===f?(n=L(r,e.right,F),a=e.right-S,o=n-F/2):(n=L(r,e.left,F),a=n+F/2,o=e.left+S);if(ut.each(b,function(n,s){if(!ut.isNullOrUndef(n.label)){var l,d,u,c,v,b,x,y,w,M,P,I,A,R,O,z,B=n.label;s===e.zeroLineIndex&&i.offset===h.offsetGridLines?(l=h.zeroLineWidth,d=h.zeroLineColor,u=h.zeroLineBorderDash||[],c=h.zeroLineBorderDashOffset||0):(l=ui(h.lineWidth,s),d=ui(h.color,s),u=h.borderDash||[],c=h.borderDashOffset||0);var N=ut.isArray(B)?B.length:1,W=function(t,e,i){var n=t.getPixelForTick(e);return i&&(1===t.getTicks().length?n-=t.isHorizontal()?Math.max(n-t.left,t.right-n):Math.max(n-t.top,t.bottom-n):n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}(e,s,h.offsetGridLines);if(m){var V=S+_;W<e.left-1e-7&&(d="rgba(0,0,0,0)"),v=x=w=P=L(r,W,l),b=a,y=o,A=e.getPixelForTick(s)+C,"top"===f?(M=L(r,t.top,F)+F/2,I=t.bottom,O=((g?1:.5)-N)*k,z=g?"left":"center",R=e.bottom-V):(M=t.top,I=L(r,t.bottom,F)-F/2,O=(g?0:.5)*k,z=g?"right":"center",R=e.top+V)}else{var E=(p?0:S)+_;W<e.top-1e-7&&(d="rgba(0,0,0,0)"),v=a,x=o,b=y=M=I=L(r,W,l),R=e.getPixelForTick(s)+C,O=(1-N)*k/2,"left"===f?(w=L(r,t.left,F)+F/2,P=t.right,z=p?"left":"right",A=e.right-E):(w=t.left,P=L(r,t.right,F)-F/2,z=p?"right":"left",A=e.left+E)}T.push({tx1:v,ty1:b,tx2:x,ty2:y,x1:w,y1:M,x2:P,y2:I,labelX:A,labelY:R,glWidth:l,glColor:d,glBorderDash:u,glBorderDashOffset:c,rotation:-1*D,label:B,major:n.major,textOffset:O,textAlign:z})}}),ut.each(T,function(t){var e=t.glWidth,i=t.glColor;if(h.display&&e&&i&&(s.save(),s.lineWidth=e,s.strokeStyle=i,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),h.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=t.major?M.string:y.string,s.fillStyle=t.major?w:x,s.textBaseline="middle",s.textAlign=t.textAlign;var n=t.label,a=t.textOffset;if(ut.isArray(n))for(var o=0;o<n.length;++o)s.fillText(""+n[o],0,a),a+=k;else s.fillText(n,0,a);s.restore()}}),c.display){var R,O,z=0,B=I.lineHeight/2;if(m)R=e.left+(e.right-e.left)/2,O="bottom"===f?e.bottom-B-A.bottom:e.top+B+A.top;else{var N="left"===f;R=N?e.left+B+A.top:e.right-B-A.top,O=e.top+(e.bottom-e.top)/2,z=N?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(R,O),s.rotate(z),s.textAlign="center",s.textBaseline="middle",s.fillStyle=P,s.font=I.string,s.fillText(c.labelString,0,0),s.restore()}if(F){var W,V,E,H,j=F,q=ui(h.lineWidth,b.length-1,0);m?(W=L(r,e.left,j)-j/2,V=L(r,e.right,q)+q/2,E=H=n):(E=L(r,e.top,j)-j/2,H=L(r,e.bottom,q)+q/2,W=V=n),s.lineWidth=F,s.strokeStyle=ui(h.color,0),s.beginPath(),s.moveTo(W,E),s.lineTo(V,H),s.stroke()}}}}),gi=fi.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var i=this,n=i.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===i.id?i.getRightValue(n.data.datasets[e].data[t]):i.ticks[t-i.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,o=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var r=n.getLabels().indexOf(t);e=-1!==r?r:e}if(n.isHorizontal()){var s=n.width/o,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+l}var d=n.height/o,u=d*(e-n.minIndex);return a&&(u+=d/2),n.top+u},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,i=e.options.offset,n=Math.max(e._ticks.length-(i?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/n;return t-=a?e.left:e.top,i&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}}),pi={position:"bottom"};gi._defaults=pi;var mi=ut.noop,vi=ut.isNullOrUndef;var bi=fi.extend({getRightValue:function(t){return"string"==typeof t?+t:fi.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=ut.sign(t.min),n=ut.sign(t.max);i<0&&n<0?t.max=0:i>0&&n>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,i=e.stepSize,n=e.maxTicksLimit;return i?t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1:(t=this._computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:mi,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:ut.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o,r=[],s=t.stepSize,l=s||1,d=t.maxTicks-1,u=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=ut.niceNum((g-f)/d/l)*l;if(p<1e-14&&vi(u)&&vi(h))return[f,g];(o=Math.ceil(g/p)-Math.floor(f/p))>d&&(p=ut.niceNum(o*p/d/l)*l),s||vi(c)?i=Math.pow(10,ut._decimalPlaces(p)):(i=Math.pow(10,c),p=Math.ceil(p*i)/i),n=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!vi(u)&&ut.almostWhole(u/p,p/1e3)&&(n=u),!vi(h)&&ut.almostWhole(h/p,p/1e3)&&(a=h)),o=(a-n)/p,o=ut.almostEquals(o,Math.round(o),p/1e3)?Math.round(o):Math.ceil(o),n=Math.round(n*i)/i,a=Math.round(a*i)/i,r.push(vi(u)?n:u);for(var m=1;m<o;++m)r.push(Math.round((n+m*p)*i)/i);return r.push(vi(h)?a:h),r}(n,t);t.handleDirectionalChanges(),t.max=ut.max(a),t.min=ut.min(a),e.reverse?(a.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),fi.prototype.convertTicksToLabels.call(t)}}),xi={position:"left",ticks:{callback:li.formatters.linear}},yi=bi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");void 0===s[l]&&(s[l]={positiveValues:[],negativeValues:[]});var d=s[l].positiveValues,u=s[l].negativeValues;i.isDatasetVisible(a)&&o(r)&&ut.each(n.data,function(i,n){var a=+t.getRightValue(i);isNaN(a)||r.data[n].hidden||(d[n]=d[n]||0,u[n]=u[n]||0,e.relativePoints?d[n]=100:a<0?u[n]+=a:d[n]+=a)})}),ut.each(s,function(e){var i=e.positiveValues.concat(e.negativeValues),n=ut.min(i),a=ut.max(i);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=ut.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}}),ki=xi;yi._defaults=ki;var wi=ut.valueOrDefault;var Mi={position:"left",ticks:{callback:li.formatters.logarithmic}};function _i(t,e){return ut.isFinite(t)&&t>=0?t:e}var Ci=fi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");i.isDatasetVisible(a)&&o(r)&&(void 0===s[l]&&(s[l]=[]),ut.each(n.data,function(e,i){var n=s[l],a=+t.getRightValue(e);isNaN(a)||r.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),ut.each(s,function(e){if(e.length>0){var i=ut.min(e),n=ut.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?n:Math.max(t.max,n)}})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||n<0||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n),0!==n&&(null===t.minNotZero||n<t.minNotZero)&&(t.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=_i(e.min,t.min),t.max=_i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(ut.log10(t.min))-1),t.max=Math.pow(10,Math.floor(ut.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(ut.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(ut.log10(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(ut.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:_i(e.min),max:_i(e.max)},a=t.ticks=function(t,e){var i,n,a=[],o=wi(t.min,Math.pow(10,Math.floor(ut.log10(e.min)))),r=Math.floor(ut.log10(e.max)),s=Math.ceil(e.max/Math.pow(10,r));0===o?(i=Math.floor(ut.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(o),o=n*Math.pow(10,i)):(i=Math.floor(ut.log10(o)),n=Math.floor(o/Math.pow(10,i)));var l=i<0?Math.pow(10,Math.abs(i)):1;do{a.push(o),10==++n&&(n=1,l=++i>=0?1:l),o=Math.round(n*Math.pow(10,i)*l)/l}while(i<r||i===r&&n<s);var d=wi(t.max,o);return a.push(d),a}(n,t);t.max=ut.max(a),t.min=ut.min(a),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),fi.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(ut.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,i,n,a,o,r=this,s=r.options.ticks,l=s.reverse,d=ut.log10,u=r._getFirstTickValue(r.minNotZero),h=0;return t=+r.getRightValue(t),l?(n=r.end,a=r.start,o=-1):(n=r.start,a=r.end,o=1),r.isHorizontal()?(e=r.width,i=l?r.right:r.left):(e=r.height,o*=-1,i=l?r.top:r.bottom),t!==n&&(0===n&&(e-=h=wi(s.fontSize,st.global.defaultFontSize),n=u),0!==t&&(h+=e/(d(a)-d(n))*(d(t)-d(n))),i+=o*h),i},getValueForPixel:function(t){var e,i,n,a,o=this,r=o.options.ticks,s=r.reverse,l=ut.log10,d=o._getFirstTickValue(o.minNotZero);if(s?(i=o.end,n=o.start):(i=o.start,n=o.end),o.isHorizontal()?(e=o.width,a=s?o.right-t:t-o.left):(e=o.height,a=s?t-o.top:o.bottom-t),a!==i){if(0===i){var u=wi(r.fontSize,st.global.defaultFontSize);a-=u,e-=u,i=d}a*=l(n)-l(i),a/=e,a=Math.pow(10,l(i)+a)}return a}}),Si=Mi;Ci._defaults=Si;var Pi=ut.valueOrDefault,Ii=ut.valueAtIndexOrDefault,Ai=ut.options.resolve,Di={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:li.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Ti(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function Fi(t){var e=t.ticks;return e.display&&t.display?Pi(e.fontSize,st.global.defaultFontSize)+2*e.backdropPaddingY:0}function Li(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||t>a?{start:e-i,end:e}:{start:e,end:e+i}}function Ri(t){return 0===t||180===t?"center":t<180?"left":"right"}function Oi(t,e,i,n){var a,o,r=i.y+n/2;if(ut.isArray(e))for(a=0,o=e.length;a<o;++a)t.fillText(e[a],i.x,r),r+=n;else t.fillText(e,i.x,r)}function zi(t,e,i){90===t||270===t?i.y-=e.h/2:(t>270||t<90)&&(i.y-=e.h)}function Bi(t){return ut.isNumber(t)?t:0}var Ni=bi.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Fi(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;ut.each(e.data.datasets,function(a,o){if(e.isDatasetVisible(o)){var r=e.getDatasetMeta(o);ut.each(a.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||r.data[a].hidden||(i=Math.min(o,i),n=Math.max(o,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Fi(this.options))},convertTicksToLabels:function(){var t=this;bi.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,i,n,a=ut.options._parseFont(t.options.pointLabels),o={l:0,r:t.width,t:0,b:t.height-t.paddingTop},r={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,d,u=Ti(t);for(e=0;e<u;e++){n=t.getPointPosition(e,t.drawingArea+5),s=t.ctx,l=a.lineHeight,d=t.pointLabels[e]||"",i=ut.isArray(d)?{w:ut.longestText(s,s.font,d),h:d.length*l}:{w:s.measureText(d).width,h:l},t._pointLabelSizes[e]=i;var h=t.getIndexAngle(e),c=ut.toDegrees(h)%360,f=Li(c,n.x,i.w,0,180),g=Li(c,n.y,i.h,90,270);f.start<o.l&&(o.l=f.start,r.l=h),f.end>o.r&&(o.r=f.end,r.r=h),g.start<o.t&&(o.t=g.start,r.t=h),g.end>o.b&&(o.b=g.end,r.b=h)}t.setReductions(t.drawingArea,o,r)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,i){var n=this,a=e.l/Math.sin(i.l),o=Math.max(e.r-n.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),s=-Math.max(e.b-(n.height-n.paddingTop),0)/Math.cos(i.b);a=Bi(a),o=Bi(o),r=Bi(r),s=Bi(s),n.drawingArea=Math.min(Math.floor(t-(a+o)/2),Math.floor(t-(r+s)/2)),n.setCenterPoint(a,o,r,s)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-a.paddingTop-n-a.drawingArea;a.xCenter=Math.floor((r+o)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/Ti(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(i)*e+this.xCenter,y:Math.sin(i)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,i=e.gridLines,n=e.ticks;if(e.display){var a=t.ctx,o=this.getIndexAngle(0),r=ut.options._parseFont(n);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.gridLines,o=i.pointLabels,r=Pi(n.lineWidth,a.lineWidth),s=Pi(n.color,a.color),l=Fi(i);e.save(),e.lineWidth=r,e.strokeStyle=s,e.setLineDash&&(e.setLineDash(Ai([n.borderDash,a.borderDash,[]])),e.lineDashOffset=Ai([n.borderDashOffset,a.borderDashOffset,0]));var d=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),u=ut.options._parseFont(o);e.font=u.string,e.textBaseline="middle";for(var h=Ti(t)-1;h>=0;h--){if(n.display&&r&&s){var c=t.getPointPosition(h,d);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke()}if(o.display){var f=0===h?l/2:0,g=t.getPointPosition(h,d+f+5),p=Ii(o.fontColor,h,st.global.defaultFontColor);e.fillStyle=p;var m=t.getIndexAngle(h),v=ut.toDegrees(m);e.textAlign=Ri(v),zi(v,t._pointLabelSizes[h],g),Oi(e,t.pointLabels[h]||"",g,u.lineHeight)}}e.restore()}(t),ut.each(t.ticks,function(e,s){if(s>0||n.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,i,n){var a,o=t.ctx,r=e.circular,s=Ti(t),l=Ii(e.color,n-1),d=Ii(e.lineWidth,n-1);if((r||s)&&l&&d){if(o.save(),o.strokeStyle=l,o.lineWidth=d,o.setLineDash&&(o.setLineDash(e.borderDash||[]),o.lineDashOffset=e.borderDashOffset||0),o.beginPath(),r)o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI);else{a=t.getPointPosition(0,i),o.moveTo(a.x,a.y);for(var u=1;u<s;u++)a=t.getPointPosition(u,i),o.lineTo(a.x,a.y)}o.closePath(),o.stroke(),o.restore()}}(t,i,l,s),n.display){var d=Pi(n.fontColor,st.global.defaultFontColor);if(a.font=r.string,a.save(),a.translate(t.xCenter,t.yCenter),a.rotate(o),n.showLabelBackdrop){var u=a.measureText(e).width;a.fillStyle=n.backdropColor,a.fillRect(-u/2-n.backdropPaddingX,-l-r.size/2-n.backdropPaddingY,u+2*n.backdropPaddingX,r.size+2*n.backdropPaddingY)}a.textAlign="center",a.textBaseline="middle",a.fillStyle=d,a.fillText(e,0,-l),a.restore()}}})}}}),Wi=Di;Ni._defaults=Wi;var Vi=ut.valueOrDefault,Ei=Number.MIN_SAFE_INTEGER||-9007199254740991,Hi=Number.MAX_SAFE_INTEGER||9007199254740991,ji={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},qi=Object.keys(ji);function Yi(t,e){return t-e}function Ui(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,o.push(n));return o}function Xi(t,e,i,n){var a=function(t,e,i){for(var n,a,o,r=0,s=t.length-1;r>=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]<i)r=n+1;else{if(!(a[e]>i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,d=(r[n]-o[n])*l;return o[n]+d}function Ki(t,e){var i=t._adapter,n=t.options.time,a=n.parser,o=a||n.format,r=e;return"function"==typeof a&&(r=a(r)),ut.isFinite(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null!==r?+r:(a||"function"!=typeof o||(r=o(e),ut.isFinite(r)||(r=i.parse(r))),r)}function Gi(t,e){if(ut.isNullOrUndef(e))return null;var i=t.options.time,n=Ki(t,t.getRightValue(e));return null===n?n:(i.round&&(n=+t._adapter.startOf(n,i.round)),n)}function Zi(t){for(var e=qi.indexOf(t)+1,i=qi.length;e<i;++e)if(ji[qi[e]].common)return qi[e]}function $i(t,e,i,n){var a,o=t._adapter,r=t.options,s=r.time,l=s.unit||function(t,e,i,n){var a,o,r,s=qi.length;for(a=qi.indexOf(t);a<s-1;++a)if(r=(o=ji[qi[a]]).steps?o.steps[o.steps.length-1]:Hi,o.common&&Math.ceil((i-e)/(r*o.size))<=n)return qi[a];return qi[s-1]}(s.minUnit,e,i,n),d=Zi(l),u=Vi(s.stepSize,s.unitStepSize),h="week"===l&&s.isoWeekday,c=r.ticks.major.enabled,f=ji[l],g=e,p=i,m=[];for(u||(u=function(t,e,i,n){var a,o,r,s=e-t,l=ji[i],d=l.size,u=l.steps;if(!u)return Math.ceil(s/(n*d));for(a=0,o=u.length;a<o&&(r=u[a],!(Math.ceil(s/(d*r))<=n));++a);return r}(e,i,l,n)),h&&(g=+o.startOf(g,"isoWeek",h),p=+o.startOf(p,"isoWeek",h)),g=+o.startOf(g,h?"day":l),(p=+o.startOf(p,h?"day":l))<i&&(p=+o.add(p,1,l)),a=g,c&&d&&!h&&!s.round&&(a=+o.startOf(a,d),a=+o.add(a,~~((g-a)/(f.size*u))*u,l));a<p;a=+o.add(a,u,l))m.push(+a);return m.push(+a),m}var Ji=fi.extend({initialize:function(){this.mergeTicksOptions(),fi.prototype.initialize.call(this)},update:function(){var t=this.options,e=t.time||(t.time={}),i=this._adapter=new si._date(t.adapters.date);return e.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),ut.mergeIf(e.displayFormats,i.formats()),fi.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),fi.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,i,n,a,o,r=this,s=r.chart,l=r._adapter,d=r.options.time,u=d.unit||"day",h=Hi,c=Ei,f=[],g=[],p=[],m=s.data.labels||[];for(t=0,i=m.length;t<i;++t)p.push(Gi(r,m[t]));for(t=0,i=(s.data.datasets||[]).length;t<i;++t)if(s.isDatasetVisible(t))if(a=s.data.datasets[t].data,ut.isObject(a[0]))for(g[t]=[],e=0,n=a.length;e<n;++e)o=Gi(r,a[e]),f.push(o),g[t][e]=o;else{for(e=0,n=p.length;e<n;++e)f.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=Ui(p).sort(Yi),h=Math.min(h,p[0]),c=Math.max(c,p[p.length-1])),f.length&&(f=Ui(f).sort(Yi),h=Math.min(h,f[0]),c=Math.max(c,f[f.length-1])),h=Gi(r,d.min)||h,c=Gi(r,d.max)||c,h=h===Hi?+l.startOf(Date.now(),u):h,c=c===Ei?+l.endOf(Date.now(),u)+1:c,r.min=Math.min(h,c),r.max=Math.max(h+1,c),r._horizontal=r.isHorizontal(),r._table=[],r._timestamps={data:f,datasets:g,labels:p}},buildTicks:function(){var t,e,i,n=this,a=n.min,o=n.max,r=n.options,s=r.time,l=[],d=[];switch(r.ticks.source){case"data":l=n._timestamps.data;break;case"labels":l=n._timestamps.labels;break;case"auto":default:l=$i(n,a,o,n.getLabelCapacity(a))}for("ticks"===r.bounds&&l.length&&(a=l[0],o=l[l.length-1]),a=Gi(n,s.min)||a,o=Gi(n,s.max)||o,t=0,e=l.length;t<e;++t)(i=l[t])>=a&&i<=o&&d.push(i);return n.min=a,n.max=o,n._unit=s.unit||function(t,e,i,n,a){var o,r;for(o=qi.length-1;o>=qi.indexOf(i);o--)if(r=qi[o],ji[r].common&&t._adapter.diff(a,n,r)>=e.length)return r;return qi[i?qi.indexOf(i):0]}(n,d,s.minUnit,n.min,n.max),n._majorUnit=Zi(n._unit),n._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,d=[],u=[e];for(a=0,o=t.length;a<o;++a)(s=t[a])>e&&s<i&&u.push(s);for(u.push(i),a=0,o=u.length;a<o;++a)l=u[a+1],r=u[a-1],s=u[a],void 0!==r&&void 0!==l&&Math.round((l+r)/2)===s||d.push({time:s,pos:a/(o-1)});return d}(n._timestamps.data,a,o,r.distribution),n._offsets=function(t,e,i,n,a){var o,r,s=0,l=0;return a.offset&&e.length&&(a.time.min||(o=Xi(t,"time",e[0],"pos"),s=1===e.length?1-o:(Xi(t,"time",e[1],"pos")-o)/2),a.time.max||(r=Xi(t,"time",e[e.length-1],"pos"),l=1===e.length?r:(r-Xi(t,"time",e[e.length-2],"pos"))/2)),{start:s,end:l}}(n._table,d,0,0,r),r.ticks.reverse&&d.reverse(),function(t,e,i){var n,a,o,r,s=[];for(n=0,a=e.length;n<a;++n)o=e[n],r=!!i&&o===+t._adapter.startOf(o,i),s.push({value:o,major:r});return s}(n,d,n._majorUnit)},getLabelForIndex:function(t,e){var i=this,n=i._adapter,a=i.chart.data,o=i.options.time,r=a.labels&&t<a.labels.length?a.labels[t]:"",s=a.datasets[e].data[t];return ut.isObject(s)&&(r=i.getRightValue(s)),o.tooltipFormat?n.format(Ki(i,r),o.tooltipFormat):"string"==typeof r?r:n.format(Ki(i,r),o.displayFormats.datetime)},tickFormatFunction:function(t,e,i,n){var a=this._adapter,o=this.options,r=o.time.displayFormats,s=r[this._unit],l=this._majorUnit,d=r[l],u=+a.startOf(t,l),h=o.ticks.major,c=h.enabled&&l&&d&&t===u,f=a.format(t,n||(c?d:s)),g=c?h:o.ticks.minor,p=Vi(g.callback,g.userCallback);return p?p(f,e,i):f},convertTicksToLabels:function(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(this.tickFormatFunction(t[e].value,e,t));return n},getPixelForOffset:function(t){var e=this,i=e.options.ticks.reverse,n=e._horizontal?e.width:e.height,a=e._horizontal?i?e.right:e.left:i?e.bottom:e.top,o=Xi(e._table,"time",t,"pos"),r=n*(e._offsets.start+o)/(e._offsets.start+1+e._offsets.end);return i?a-r:a+r},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=Gi(this,t)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=(i?(t-n)/i:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,o=Xi(e._table,"pos",a,"time");return e._adapter._create(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=ut.toRadians(e.maxRotation),a=Math.cos(n),o=Math.sin(n);return i*a+Vi(e.fontSize,st.global.defaultFontSize)*o},getLabelCapacity:function(t){var e=this,i=e.options.time.displayFormats.millisecond,n=e.tickFormatFunction(t,0,[],i),a=e.getLabelWidth(n),o=e.isHorizontal()?e.width:e.height,r=Math.floor(o/a);return r>0?r:1}}),Qi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};Ji._defaults=Qi;var tn={category:gi,linear:yi,logarithmic:Ci,radialLinear:Ni,time:Ji},en={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};si._date.override("function"==typeof t?{_id:"moment",formats:function(){return en},parse:function(e,i){return"string"==typeof e&&"string"==typeof i?e=t(e,i):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,i){return t(e).format(i)},add:function(e,i,n){return t(e).add(i,n).valueOf()},diff:function(e,i,n){return t.duration(t(e).diff(t(i))).as(n)},startOf:function(e,i,n){return e=t(e),"isoWeek"===i?e.isoWeekday(n).valueOf():e.startOf(i).valueOf()},endOf:function(e,i){return t(e).endOf(i).valueOf()},_create:function(e){return t(e)}}:{}),st._set("global",{plugins:{filler:{propagate:!0}}});var nn={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function an(t,e,i){var n,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(n=parseFloat(o,10),isFinite(n)&&Math.floor(n)===n)return"-"!==o[0]&&"+"!==o[0]||(n=e+n),!(n===e||n<0||n>=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function on(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if(ut.isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function rn(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function sn(t){var e=t.fill,i="dataset";return!1===e?null:(isFinite(e)||(i="boundary"),nn[i](t))}function ln(t){return t&&!t.skip}function dn(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)ut.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;o>0;--o)ut.canvas.lineTo(t,i[o],i[o-1],!0)}}var un={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,o,r=(t.data.datasets||[]).length,s=e.propagate,l=[];for(n=0;n<r;++n)o=null,(a=(i=t.getDatasetMeta(n)).dataset)&&a._model&&a instanceof Wt.Line&&(o={visible:t.isDatasetVisible(n),fill:an(a,n,r),chart:t,el:a}),i.$filler=o,l.push(o);for(n=0;n<r;++n)(o=l[n])&&(o.fill=rn(l,n,s),o.boundary=on(o),o.mapper=sn(o))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var n=t.ctx,a=i.el,o=a._view,r=a._children||[],s=i.mapper,l=o.backgroundColor||st.global.defaultColor;s&&l&&r.length&&(ut.canvas.clipArea(n,t.chartArea),function(t,e,i,n,a,o){var r,s,l,d,u,h,c,f=e.length,g=n.spanGaps,p=[],m=[],v=0,b=0;for(t.beginPath(),r=0,s=f+!!o;r<s;++r)u=i(d=e[l=r%f]._view,l,n),h=ln(d),c=ln(u),h&&c?(v=p.push(d),b=m.push(u)):v&&b&&(g?(h&&p.push(d),c&&m.push(u)):(dn(t,p,m,v,b),v=b=0,p=[],m=[]));dn(t,p,m,v,b),t.closePath(),t.fillStyle=a,t.fill()}(n,r,s,o,l,a._loop),ut.canvas.unclipArea(n))}}},hn=ut.noop,cn=ut.valueOrDefault;function fn(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}st._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return ut.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:ut.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var gn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:hn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:hn,beforeSetDimensions:hn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:hn,beforeBuildLabels:hn,buildLabels:function(){var t=this,e=t.options.labels||{},i=ut.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:hn,beforeFit:hn,fit:function(){var t=this,e=t.options,i=e.labels,n=e.display,a=t.ctx,o=ut.options._parseFont(i),r=o.size,s=t.legendHitBoxes=[],l=t.minSize,d=t.isHorizontal();if(d?(l.width=t.maxWidth,l.height=n?10:0):(l.width=n?10:0,l.height=t.maxHeight),n)if(a.font=o.string,d){var u=t.lineWidths=[0],h=0;a.textAlign="left",a.textBaseline="top",ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;(0===e||u[u.length-1]+n+i.padding>l.width)&&(h+=r+i.padding,u[u.length-(e>0?0:1)]=i.padding),s[e]={left:0,top:0,width:n,height:r},u[u.length-1]+=n+i.padding}),l.height+=h}else{var c=i.padding,f=t.columnWidths=[],g=i.padding,p=0,m=0,v=r+c;ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;e>0&&m+v>l.height-c&&(g+=p+i.padding,f.push(p),p=0,m=0),p=Math.max(p,n),m+=v,s[e]={left:0,top:0,width:n,height:r}}),g+=p,f.push(p),l.width+=g}t.width=l.width,t.height=l.height},afterFit:hn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,n=st.global,a=n.defaultColor,o=n.elements.line,r=t.width,s=t.lineWidths;if(e.display){var l,d=t.ctx,u=cn(i.fontColor,n.defaultFontColor),h=ut.options._parseFont(i),c=h.size;d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=u,d.fillStyle=u,d.font=h.string;var f=fn(i,c),g=t.legendHitBoxes,p=t.isHorizontal();l=p?{x:t.left+(r-s[0])/2+i.padding,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var m=c+i.padding;ut.each(t.legendItems,function(n,u){var h=d.measureText(n.text).width,v=f+c/2+h,b=l.x,x=l.y;p?u>0&&b+v+i.padding>t.left+t.minSize.width&&(x=l.y+=m,l.line++,b=l.x=t.left+(r-s[l.line])/2+i.padding):u>0&&x+m>t.top+t.minSize.height&&(b=l.x=b+t.columnWidths[l.line]+i.padding,x=l.y=t.top+i.padding,l.line++),function(t,i,n){if(!(isNaN(f)||f<=0)){d.save();var r=cn(n.lineWidth,o.borderWidth);if(d.fillStyle=cn(n.fillStyle,a),d.lineCap=cn(n.lineCap,o.borderCapStyle),d.lineDashOffset=cn(n.lineDashOffset,o.borderDashOffset),d.lineJoin=cn(n.lineJoin,o.borderJoinStyle),d.lineWidth=r,d.strokeStyle=cn(n.strokeStyle,a),d.setLineDash&&d.setLineDash(cn(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var s=f*Math.SQRT2/2,l=t+f/2,u=i+c/2;ut.canvas.drawPoint(d,n.pointStyle,s,l,u)}else 0!==r&&d.strokeRect(t,i,f,c),d.fillRect(t,i,f,c);d.restore()}}(b,x,n),g[u].left=b,g[u].top=x,function(t,e,i,n){var a=c/2,o=f+a+t,r=e+a;d.fillText(i.text,o,r),i.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(o,r),d.lineTo(o+n,r),d.stroke())}(b,x,n,h),p?l.x+=v+i.padding:l.y+=m})}},_getLegendItemAt:function(t,e){var i,n,a,o=this;if(t>=o.left&&t<=o.right&&e>=o.top&&e<=o.bottom)for(a=o.legendHitBoxes,i=0;i<a.length;++i)if(t>=(n=a[i]).left&&t<=n.left+n.width&&e>=n.top&&e<=n.top+n.height)return o.legendItems[i];return null},handleEvent:function(t){var e,i=this,n=i.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!n.onHover&&!n.onLeave)return}else{if("click"!==a)return;if(!n.onClick)return}e=i._getLegendItemAt(t.x,t.y),"click"===a?e&&n.onClick&&n.onClick.call(i,t.native,e):(n.onLeave&&e!==i._hoveredItem&&(i._hoveredItem&&n.onLeave.call(i,t.native,i._hoveredItem),i._hoveredItem=e),n.onHover&&e&&n.onHover.call(i,t.native,e))}});function pn(t,e){var i=new gn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.legend=i}var mn={id:"legend",_element:gn,beforeInit:function(t){var e=t.options.legend;e&&pn(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(ut.mergeIf(e,st.global.legend),i?(ke.configure(t,i,e),i.options=e):pn(t,e)):i&&(ke.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}},vn=ut.noop;st._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var bn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:vn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:vn,beforeSetDimensions:vn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:vn,beforeBuildLabels:vn,buildLabels:vn,afterBuildLabels:vn,beforeFit:vn,fit:function(){var t=this,e=t.options,i=e.display,n=t.minSize,a=ut.isArray(e.text)?e.text.length:1,o=ut.options._parseFont(e),r=i?a*o.lineHeight+2*e.padding:0;t.isHorizontal()?(n.width=t.maxWidth,n.height=r):(n.width=r,n.height=t.maxHeight),t.width=n.width,t.height=n.height},afterFit:vn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=t.options;if(i.display){var n,a,o,r=ut.options._parseFont(i),s=r.lineHeight,l=s/2+i.padding,d=0,u=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=ut.valueOrDefault(i.fontColor,st.global.defaultFontColor),e.font=r.string,t.isHorizontal()?(a=h+(f-h)/2,o=u+l,n=f-h):(a="left"===i.position?h+l:f-l,o=u+(c-u)/2,n=c-u,d=Math.PI*("left"===i.position?-.5:.5)),e.save(),e.translate(a,o),e.rotate(d),e.textAlign="center",e.textBaseline="middle";var g=i.text;if(ut.isArray(g))for(var p=0,m=0;m<g.length;++m)e.fillText(g[m],0,p,n),p+=s;else e.fillText(g,0,0,n);e.restore()}}});function xn(t,e){var i=new bn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.titleBlock=i}var yn={},kn=un,wn=mn,Mn={id:"title",_element:bn,beforeInit:function(t){var e=t.options.title;e&&xn(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(ut.mergeIf(e,st.global.title),i?(ke.configure(t,i,e),i.options=e):xn(t,e)):i&&(ke.removeBox(t,i),delete t.titleBlock)}};for(var _n in yn.filler=kn,yn.legend=wn,yn.title=Mn,ai.helpers=ut,function(){function t(t,e,i){var n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}function e(t){return null!=t&&"none"!==t}function i(i,n,a){var o=document.defaultView,r=ut._getParentNode(i),s=o.getComputedStyle(i)[n],l=o.getComputedStyle(r)[n],d=e(s),u=e(l),h=Number.POSITIVE_INFINITY;return d||u?Math.min(d?t(s,i,a):h,u?t(l,r,a):h):"none"}ut.where=function(t,e){if(ut.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return ut.each(t,function(t){e(t)&&i.push(t)}),i},ut.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},ut.findNextWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},ut.findPreviousWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;n>=0;n--){var a=t[n];if(e(a))return a}},ut.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},ut.almostEquals=function(t,e,i){return Math.abs(t-e)<i},ut.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&i+e>t},ut.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},ut.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},ut.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},ut.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},ut.toRadians=function(t){return t*(Math.PI/180)},ut.toDegrees=function(t){return t*(180/Math.PI)},ut._decimalPlaces=function(t){if(ut.isFinite(t)){for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}},ut.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},ut.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},ut.aliasPixel=function(t){return t%2==0?0:.5},ut._alignPixel=function(t,e,i){var n=t.currentDevicePixelRatio,a=i/2;return Math.round((e-a)*n)/n+a},ut.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),d=s/(s+l),u=l/(s+l),h=n*(d=isNaN(d)?0:d),c=n*(u=isNaN(u)?0:u);return{previous:{x:o.x-h*(r.x-a.x),y:o.y-h*(r.y-a.y)},next:{x:o.x+c*(r.x-a.x),y:o.y+c*(r.y-a.y)}}},ut.EPSILON=Number.EPSILON||1e-14,ut.splineCurveMonotone=function(t){var e,i,n,a,o,r,s,l,d,u=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=u.length;for(e=0;e<h;++e)if(!(n=u[e]).model.skip){if(i=e>0?u[e-1]:null,(a=e<h-1?u[e+1]:null)&&!a.model.skip){var c=a.model.x-n.model.x;n.deltaK=0!==c?(a.model.y-n.model.y)/c:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<h-1;++e)n=u[e],a=u[e+1],n.model.skip||a.model.skip||(ut.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,r=a.mK/n.deltaK,(l=Math.pow(o,2)+Math.pow(r,2))<=9||(s=3/Math.sqrt(l),n.mK=o*s*n.deltaK,a.mK=r*s*n.deltaK)));for(e=0;e<h;++e)(n=u[e]).model.skip||(i=e>0?u[e-1]:null,a=e<h-1?u[e+1]:null,i&&!i.model.skip&&(d=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-d,n.model.controlPointPreviousY=n.model.y-d*n.mK),a&&!a.model.skip&&(d=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+d,n.model.controlPointNextY=n.model.y+d*n.mK))},ut.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},ut.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},ut.niceNum=function(t,e){var i=Math.floor(ut.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},ut.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},ut.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;s&&s.length>0?(i=s[0].clientX,n=s[0].clientY):(i=a.clientX,n=a.clientY);var l=parseFloat(ut.getStyle(o,"padding-left")),d=parseFloat(ut.getStyle(o,"padding-top")),u=parseFloat(ut.getStyle(o,"padding-right")),h=parseFloat(ut.getStyle(o,"padding-bottom")),c=r.right-r.left-l-u,f=r.bottom-r.top-d-h;return{x:i=Math.round((i-r.left-l)/c*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-r.top-d)/f*o.height/e.currentDevicePixelRatio)}},ut.getConstraintWidth=function(t){return i(t,"max-width","clientWidth")},ut.getConstraintHeight=function(t){return i(t,"max-height","clientHeight")},ut._calculatePadding=function(t,e,i){return(e=ut.getStyle(t,e)).indexOf("%")>-1?i*parseInt(e,10)/100:parseInt(e,10)},ut._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},ut.getMaximumWidth=function(t){var e=ut._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-ut._calculatePadding(e,"padding-left",i)-ut._calculatePadding(e,"padding-right",i),a=ut.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},ut.getMaximumHeight=function(t){var e=ut._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-ut._calculatePadding(e,"padding-top",i)-ut._calculatePadding(e,"padding-bottom",i),a=ut.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},ut.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},ut.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},ut.fontString=function(t,e,i){return e+" "+t+"px "+i},ut.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},o=n.garbageCollect=[],n.font=e),t.font=e;var r=0;ut.each(i,function(e){null!=e&&!0!==ut.isArray(e)?r=ut.measureText(t,a,o,r,e):ut.isArray(e)&&ut.each(e,function(e){null==e||ut.isArray(e)||(r=ut.measureText(t,a,o,r,e))})});var s=o.length/2;if(s>i.length){for(var l=0;l<s;l++)delete a[o[l]];o.splice(0,s)}return r},ut.measureText=function(t,e,i,n,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,i.push(a)),o>n&&(n=o),n},ut.numberOfLabelLines=function(t){var e=1;return ut.each(t,function(t){ut.isArray(t)&&t.length>e&&(e=t.length)}),e},ut.color=X?function(t){return t instanceof CanvasGradient&&(t=st.global.defaultColor),X(t)}:function(t){return console.error("Color.js not found!"),t},ut.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:ut.color(t).saturate(.5).darken(.1).rgbString()}}(),ai._adapters=si,ai.Animation=vt,ai.animationService=bt,ai.controllers=ue,ai.DatasetController=Mt,ai.defaults=st,ai.Element=pt,ai.elements=Wt,ai.Interaction=ve,ai.layouts=ke,ai.platform=Ve,ai.plugins=Ee,ai.Scale=fi,ai.scaleService=He,ai.Ticks=li,ai.Tooltip=Je,ai.helpers.each(tn,function(t,e){ai.scaleService.registerScaleType(e,t,t._defaults)}),yn)yn.hasOwnProperty(_n)&&ai.plugins.register(yn[_n]);ai.platform.initialize();var Cn=ai;return"undefined"!=typeof window&&(window.Chart=ai),ai.Chart=ai,ai.Legend=yn.legend._element,ai.Title=yn.title._element,ai.pluginService=ai.plugins,ai.PluginBase=ai.Element.extend({}),ai.canvasHelpers=ai.helpers.canvas,ai.layoutService=ai.layouts,ai.LinearScaleBase=bi,ai.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(t){ai[t]=function(e,i){return new ai(e,ai.helpers.merge(i||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}}),Cn});


/*
PAGELAYER
http://pagelayer.com/
(c) Pagelayer Team
*/

// Things to do on document load
jQuery(document).ready(function(){
	
	jQuery('.pagelayer-slides').each(function(){
		pagelayer_pl_slides(jQuery(this));
	});
	
	jQuery('.pagelayer-featured_img').each(function(){
		pagelayer_pl_image(jQuery(this));
	});
	
	jQuery('.pagelayer-wp_posts_slider').each(function(){
		pagelayer_wp_posts_slider(jQuery(this));
	});
  
	jQuery('.pagelayer-review_slider').each(function(){
		pagelayer_reviews_slider(jQuery(this));
	});
	
	// Facebook Apps
	if(jQuery('[pagelayer-facebook-load]')){
		pagelayer_fb_apps(jQuery(this));
	}
	
	// For Pagelayer Pro
	jQuery('.pagelayer-image_hotspot').each(function(){
		pagelayer_image_hotspot(jQuery(this));
	});
	
	jQuery('.pagelayer-chart').each(function(){
		pagelayer_chart(jQuery(this));
	});
	
	jQuery('.pagelayer-table').each(function(){
		pagelayer_table(jQuery(this));
	});
	
	jQuery('.pagelayer-audio').each(function(){
		pagelayer_audio(jQuery(this));
	});
	
	jQuery('.pagelayer-post_folio').each(function(){
		pagelayer_post_folio(jQuery(this));
	});
	
	jQuery('.pagelayer-search').each(function(){
		pagelayer_search_form(jQuery(this));
	});
	
	jQuery('.pagelayer-sitemap').each(function(){
		pagelayer_sitemap_add_attributes(jQuery(this));
	});
	
	jQuery('.pagelayer-posts').each(function(){
		var is_slider = jQuery(this).find('.pagelayer-posts-container').data('enable_slider');
		if(is_slider){
			pagelayer_pl_posts(jQuery(this));
		}
	});
	
	jQuery('.pagelayer-video_slider').each(function(){
		pagelayer_pl_video_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-woo_menu_cart').each(function(){
		pagelayer_woo_menu_cart(jQuery(this));
	});
		
	jQuery('.pagelayer-popup-modal').each(function(){
		pagelayer_popup_setup(jQuery(this));
	});
	
	jQuery('.pagelayer-sticky-ele').each(function(){
		pagelayer_ele_sticky_handler(jQuery(this));
	});
	
	jQuery('.pagelayer-scrolling-effects').each(function(){
		pagelayer_scrolling_effects(jQuery(this));
	});
	
	jQuery('.pagelayer-mouse-effects').each(function(){
		pagelayer_mouse_effects(jQuery(this));
	});
	
	jQuery('.pagelayer-img_portfolio').each(function(){
		pagelayer_pl_img_portfolio(jQuery(this));
	});
	
	jQuery('.pagelayer-single_img').each(function(){
		pagelayer_pl_image(jQuery(this));
	});
	
	jQuery('.pagelayer-splash-container').each(function(){
		pagelayer_pl_splash_screen(jQuery(this));
	});
	
	jQuery('.pagelayer-fb-page-container, .pagelayer-fb-embed-container').each(function(){
		pagelayer_fb_width(jQuery(this));
	});

	jQuery('.pagelayer-before_after').each(function(){
		pagelayer_before_after_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-image_map').each(function(){
		pagelayer_pl_image_map(jQuery(this));
		
		// Make image map editable
		if(!pagelayer_empty(pagelayer_is_live)){
			pagelayer_imgmap_handler(jQuery(this));
		}
	});
  
});

jQuery(window).resize(function(){
	jQuery('.pagelayer-scrolling-effects').each(function(){
		pagelayer_scrolling_effects(jQuery(this));
	});
});

// Add all shuffle instance in this object
var shuffleInstance = {};

// Portfolio Gallery
function pagelayer_pl_img_portfolio(jEle){
	
	var id = jEle.attr('pagelayer-id');
	var arr = [];
	
	// Fetch all categories in array 
	jEle.find('[port-cat]').each(function(){
		
		var cat = jQuery(this).attr('port-cat');
		
		if(cat){
			
			//var sel = jQuery(this).parent('.pagelayer-ele-wrap') ? jQuery(this).parent('.pagelayer-ele-wrap') : jQuery(this);
			
			jQuery(this).attr('data-groups','["'+cat+'"]');
			
			if(!arr.includes(cat)){
				arr.push(cat);
				
			}
		}
	})
	
	// Create category button html
	var html = '<button class="pagelayer-pfbtn" data-pgl_pfbtn="all">All</button>';
	
	arr.forEach(function(val){
		if(val && val != 'all'){
			html += '<button class="pagelayer-pfbtn" data-pgl_pfbtn="'+val+'">'+val+'</button>';
		}
	});
	
	// Append category buttons to holder
	jEle.find('.pagelayer-category-holder').empty().append(html);
	
	
	var setup = jEle.attr('pagelayer-setup');
	
	// Already setup ? then distroy shuffle
	if(setup && setup.length > 0 && !pagelayer_empty(shuffleInstance[id])){
		shuffleInstance[id].destroy();
	}
	
	// Create an shuffle instance
	var Shuffle = window.Shuffle;
	var element = jEle.find('.pagelayer-img_portfolio-holder');
	var sizer = jEle.find('.pagelayer-img_portfolio-holder');
	
	shuffleInstance[id] = new Shuffle(element,{
	  itemSelector: '.pagelayer-img_portfolio-holder>div',
	  //sizer: sizer // could also be a selector: '.my-sizer-element'
	});
	
	// set click events on category buttons
	if(!window.location.href.includes('pagelayer-live=1')){
		jEle.find('button').on("click", function(){
			shuffleInstance[id].filter(jQuery(this).attr('data-pgl_pfbtn'));
		});
	}
	
	// Set that we have setup everything
	jEle.attr('pagelayer-setup', 1);
	
}

// Reset Scrolling effects
function pagelayer_reset_scrolling(jEle, parentEle){
	
	if(jEle.length < 1){
		return;
	}
	
	var style = jEle.get(0).style;
	style.setProperty("--transY", 0 +"px");
	style.setProperty("--transX", 0 +"px");
	style.setProperty("--rot", 0 +"deg");
	jEle.css({"transform":"" , "opacity":"1" , "filter":"none"});
	parentEle.off('scroll.'+jEle.attr('pagelayer-id'));
}

// Handle the scrolling effects
function pagelayer_scrolling_effects(jEle, parentEle){
	
	parentEle = parentEle || jQuery(pagelayerGetDocumentElement());
	
	var win = pagelayerGetCurrentWindow();
	
	pagelayer_reset_scrolling(jEle, parentEle);
	
	// Is this element to be scrolled on this Screen Size ?
	var screens = jEle.attr('ele_motion_effect_on');
	if(pagelayer_empty(screens) || screens.search(pagelayer_get_media_mode()) == -1){
		return;
	}
	
	var style = jEle.get(0).style;
	var totalProperty = '';
	var documentHeight = parentEle.height();
	var screenMiddle = documentHeight/2;	
	var eMid = documentHeight/2;// By default motion_area-entire_page
	
	if(jEle.attr('motion_area') == 'viewport'){
		jEle.css('top', '0px');
		// For viewPort in Gutenberg
		if (parentEle.hasClass('interface-interface-skeleton__content')) {
			var scrollTopOfDiv = parentEle.scrollTop();
			var offsetFromTopOfDiv = jEle.parent().offset().top - parentEle.offset().top + scrollTopOfDiv;
			eMid = offsetFromTopOfDiv + jEle.parent().height() / 2;
		}else{
			eMid = jEle.parent().offset().top + jEle.parent().height() / 2;
		}

		screenMiddle = jQuery(win).height() / 2;
	}
	
	var screenHeightPercent = screenMiddle/100;
	
	// Vertical Scroll
	if(jEle.attr('ele_vertical_scroll')){
		if(jEle.attr('motion_area')=='entire_page'){
			jEle.offset({top:(documentHeight/2)});
		}
		totalProperty += "translateY(var(--transY))";
		var vertical_top = Math.ceil(jEle.attr('ele_v_sc_top_viewport')*(screenHeightPercent));
		var vertical_bottom = -Math.ceil(jEle.attr('ele_v_sc_bottom_viewport')*(screenHeightPercent));
	}
	
	// Horizontal scroll
	if(jEle.attr('ele_horizontal_scroll')){		
		totalProperty += "translateX(var(--transX))";
		var screenWidthPercent = jQuery(win).width()/200;
		var horizontal_right = (Math.ceil(jEle.attr('ele_h_sc_right_viewport')*(screenWidthPercent)));
		var horizontal_left = -(Math.ceil(jEle.attr('ele_h_sc_left_viewport')*(screenWidthPercent)));	
	}
	
	// Transparency
	if(jEle.attr('ele_transparency')){
		var fadingLevel = 1-jEle.attr('ele_transp_level')/10;			
		var transparency_top = Math.ceil(jEle.attr('ele_transp_top_viewport')*(screenHeightPercent));
		var transparency_bottom = Math.ceil(jEle.attr('ele_transp_bottom_viewport')*(screenHeightPercent));
	}
	
	// Blur
	if(jEle.attr('ele_blur')){	
		var blurringLevel = jEle.attr('ele_blur_level');		
		var blur_top = Math.ceil(jEle.attr('ele_blur_top_viewport')*(screenHeightPercent));
		var blur_bottom = Math.ceil(jEle.attr('ele_blur_bottom_viewport')*(screenHeightPercent));		
	}
	
	// Rotate
	if(jEle.attr('ele_rotate')){
		totalProperty += "rotate(var(--rot))";
		var rotate_top = Math.ceil(jEle.attr('ele_rot_top_viewport')*(screenHeightPercent));
		var rotate_bottom = -Math.ceil(jEle.attr('ele_rot_bottom_viewport')*(screenHeightPercent));
	}
	
	// Scale
	if(jEle.attr('ele_scale')){	
		var childScale = jEle.children("div");
		var scalingLevel = jEle.attr('ele_scl_level');		
		var scale_top = Math.ceil(jEle.attr('ele_scl_top_viewport')*(screenHeightPercent));
		var scale_bottom = Math.ceil(jEle.attr('ele_scl_bottom_viewport')*(screenHeightPercent));	
	}
	
	if(totalProperty != ''){
		jEle.css('transform', totalProperty);
	}
	
	// On Scroll calc and set
	parentEle.on('scroll.'+jEle.attr('pagelayer-id'), function(){	
	
		var vpMid = parentEle.scrollTop() + jQuery(win).height()/2;
		
		if(jEle.attr('ele_vertical_scroll')){
			var preCalc = ((eMid-vpMid)/10)*(jEle.attr('ele_v_sc_speed'));
			if(jEle.attr('ele_v_sc_direction') == 'opposite'){
				if(-preCalc<=vertical_top && -preCalc>vertical_bottom){
					style.setProperty("--transY", preCalc +"px");
				}
			}else if(jEle.attr('ele_v_sc_direction') == 'similar'){
				if(preCalc<=vertical_top && preCalc>vertical_bottom){
					style.setProperty("--transY", -preCalc +"px");	
				}
			}
		}
		
		if(jEle.attr('ele_horizontal_scroll')){
			var preCalc = (eMid-vpMid)*(jEle.attr('ele_h_sc_speed')/2);
			if(jEle.attr('ele_h_sc_direction')=='toleft'){
				if(preCalc<=horizontal_right && preCalc>horizontal_left)
					style.setProperty("--transX", preCalc +"px");	
			}else if(jEle.attr('ele_h_sc_direction')=='toright'){
				if(-preCalc<=horizontal_right && -preCalc>horizontal_left)
					style.setProperty("--transX", -preCalc +"px");					
			}
		}

		if(jEle.attr('ele_transparency')){			
			var preCalc = (vpMid)-eMid;
			
			if(preCalc>(-transparency_bottom) && preCalc<=transparency_top){
				
				var eMidB = eMid-transparency_bottom;
				var eMidT = eMid+transparency_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_transp_type')=='fadein'){
					var fadeIn = ((vpMid-eMidB)/eMidTB)+fadingLevel;
					jEle.css("opacity",fadeIn);
					
				}else if(jEle.attr('ele_transp_type')=='fadeout'){
					var fadeOut = ((eMidT-vpMid)/eMidTB)+fadingLevel;
					jEle.css("opacity",fadeOut);
					
				}else if(jEle.attr('ele_transp_type')=='fadeinout'){
					var fadeInOut1 = ((vpMid-eMidB)/(eMidTB/2))+fadingLevel;
					var fadeInOut2 = ((eMidT-vpMid)/(eMidTB/2))+fadingLevel;
					
					if(fadeInOut1<1+fadingLevel && fadeInOut1>0+fadingLevel){
						jEle.css("opacity",fadeInOut1);					
					}else if(fadeInOut2<1+fadingLevel && fadeInOut2>0+fadingLevel){
						jEle.css("opacity",fadeInOut2);										
					}
					
				}else if(jEle.attr('ele_transp_type')=='fadeoutin'){
					var fadeOutIn1 = (((vpMid-eMidB)/(eMidTB/2)-1))+fadingLevel;
					var fadeOutIn2 = (((eMidT-vpMid)/(eMidTB/2)-1))+fadingLevel;
					
					if(fadeOutIn2<1+fadingLevel && fadeOutIn2>0+fadingLevel){
						jEle.css("opacity",fadeOutIn2);					
					}else if(fadeOutIn1<1+fadingLevel && fadeOutIn1>0+fadingLevel){
						jEle.css("opacity",fadeOutIn1);										
					}
				}					
			}				
		}
		
		if(jEle.attr('ele_blur')){			
			var preCalc = vpMid-eMid;
			
			if(preCalc>-(blur_bottom) && preCalc<=blur_top){
				
				var eMidB = eMid-blur_bottom;
				var eMidT = eMid+blur_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_blur_type')=='blurin'){
					var blurIn = ((eMidT-vpMid)/eMidTB)*blurringLevel;					
					jEle.css("filter","blur("+blurIn+"px)");
				}else if(jEle.attr('ele_blur_type')=='blurout'){
					var blurOut = ((vpMid-eMidB)/eMidTB)*blurringLevel;
					jEle.css("filter","blur("+blurOut+"px)");
				}else if(jEle.attr('ele_blur_type')=='blurinout'){
					var blurInOut1 = (vpMid-eMidB)/(eMidTB/2)*blurringLevel;
					var blurInOut2 = (eMidT-vpMid)/(eMidTB/2)*blurringLevel;
					
					if(blurInOut1<1*blurringLevel && blurInOut1>0.01*blurringLevel){
						jEle.css("filter","blur("+blurInOut1+"px)");					
					}else if(blurInOut2<1*blurringLevel && blurInOut2>0.01*blurringLevel){
						jEle.css("filter","blur("+blurInOut2+"px)");										
					}
				}else if(jEle.attr('ele_blur_type')=='bluroutin'){
					var blurOutIn1 = ((vpMid-eMidB)/(eMidTB/2)-1)*blurringLevel;
					var blurOutIn2 = ((eMidT-vpMid)/(eMidTB/2)-1)*blurringLevel;
					
					if(blurOutIn2<1*blurringLevel && blurOutIn2>0.01*blurringLevel){
						jEle.css("filter","blur("+blurOutIn2+"px)");					
					}else if(blurOutIn1<1*blurringLevel && blurOutIn1>0.01*blurringLevel){							
						jEle.css("filter","blur("+blurOutIn1+"px)");					
					}
				}			
			}
		}
		
		if(jEle.attr('ele_rotate')){
			var preCalc = ((vpMid-eMid)/2);
			var rotSpeed = jEle.attr('ele_rot_speed')/2;
			if(jEle.attr('ele_rot_direction')=='clockwise'){
				if(preCalc<=rotate_top && preCalc>rotate_bottom){
					style.setProperty("--rot", preCalc*rotSpeed +"deg");
				}
			}else if(jEle.attr('ele_rot_direction')=='anticlockwise'){
				if(preCalc<=rotate_top && preCalc>rotate_bottom){
					style.setProperty("--rot", -preCalc*rotSpeed +"deg");
				}
			}
		}
		
		if(jEle.attr('ele_scale')){
			
			var preCalc = vpMid-eMid;
			
			if(preCalc>-(scale_bottom) && preCalc<=scale_top){
				
				var eMidB = eMid-scale_bottom;
				var eMidT = eMid+scale_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_scl_direction')=='scaleup'){
					var scaleUp = ((vpMid-eMidB)/eMidTB)*scalingLevel+1;
					childScale.css("transform","scale("+ scaleUp +")");
				}else if(jEle.attr('ele_scl_direction')=='scaledown'){
					var scaleDown = ((eMidT-vpMid)/eMidTB)*scalingLevel+1;
					childScale.css("transform","scale("+ scaleDown +")");
				}else if(jEle.attr('ele_scl_direction')=='scaleupdown'){
					var scaleUpDown2 = (vpMid-eMidB)/(eMidTB/2)*scalingLevel+1;
					var scaleUpDown1 = (eMidT-vpMid)/(eMidTB/2)*scalingLevel+1;
					
					if(scaleUpDown1<1*scalingLevel && scaleUpDown1>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleUpDown1 +")");
					}else if(scaleUpDown2<1*scalingLevel && scaleUpDown2>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleUpDown2 +")");
					}
				}else if(jEle.attr('ele_scl_direction')=='scaledownup'){
					var scaleDownUp1 = ((vpMid-eMidB)/(eMidTB/2)-1)*scalingLevel+1;
					var scaleDownUp2 = ((eMidT-vpMid)/(eMidTB/2)-1)*scalingLevel+1;
					
					if(scaleDownUp1<1*scalingLevel && scaleDownUp1>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleDownUp1 +")");		
					}else if(scaleDownUp2<1*scalingLevel && scaleDownUp2>0.1*scalingLevel){		
						childScale.css("transform","scale("+ scaleDownUp2 +")");		
					}
				}
			}			
		}			
	});
};

function pagelayer_mouse_reset(jEle){
	
	var win = pagelayerGetCurrentWindow();
	
	jEle.css("transform", "");
	var style = jEle.get(0).style;
	style.setProperty("--transY", 0 +"px");
	style.setProperty("--transX", 0 +"px");
	style.setProperty("--rotX", 0 +"deg");
	style.setProperty("--rotY", 0 +"deg");
	jQuery(win).off('mousemove.'+jEle.attr('pagelayer-id'));
}

// Mouse Effects setup
function pagelayer_mouse_effects(jEle){
	
	pagelayer_mouse_reset(jEle);
	
	var style = jEle.get(0).style;
	var mouseproperty = '';
	
	var halfWidth = jEle.parent().offset().left+jEle.parent().width()/2;
	var halfHeight = jEle.parent().offset().top+jEle.parent().height()/2;
	
	if(jEle.attr('ele_m_track')){
		mouseproperty += 'translateX(var(--transX)) translateY(var(--transY))';
		var mouseLevel = jEle.attr('ele_m_tr_level');
	}
	
	if(jEle.attr('ele_3d_tilt')){
		mouseproperty += ' rotateX(var(--rotX)) rotateY(var(--rotY))';
		jEle.parent().css("perspective", "1200px");
		var tiltLevel = jEle.attr('ele_3d_tilt_level');
	}
	
	if(mouseproperty != ''){
		jEle.css("transform", mouseproperty);
	}
	
	var win = pagelayerGetCurrentWindow();
	
	jQuery(win).bind('mousemove.'+jEle.attr('pagelayer-id'), function(event){
		
		if(jEle.attr('ele_m_track')){		
			if(jEle.attr('ele_m_tr_direction') == 'opposite'){
				var x =((event.pageX - halfWidth)*mouseLevel)/10;
				var y =((event.pageY - halfHeight)*mouseLevel)/10;
				style.setProperty("--transX",-x +"px");
				style.setProperty("--transY",-y +"px");
				//console.log(halfWidth +"  "+ mouseLevel);
			}else if(jEle.attr('ele_m_tr_direction') == 'same'){
				var x =((event.pageX - halfWidth)*mouseLevel)/10;
				var y = ((event.pageY-halfHeight)*mouseLevel)/10;
				style.setProperty("--transX",x +"px");
				style.setProperty("--transY",y +"px");
			}
		}
	
		if(jEle.attr('ele_3d_tilt')){				
			if(jEle.attr('ele_3d_tilt_direction')=='opposite'){
				var x=((event.pageX - halfWidth)*tiltLevel)/100;
				var y=((event.pageY - halfHeight)*tiltLevel)/100;
				style.setProperty("--rotX", y +"deg");
				style.setProperty("--rotY",-x + "deg");
			}else if(jEle.attr('ele_3d_tilt_direction')=='same'){
				var x=((event.pageX - halfWidth)*tiltLevel)/100;
				var y=((event.pageY - halfHeight)*tiltLevel)/100;				
				style.setProperty("--rotX",-y + "deg");
				style.setProperty("--rotY",x +"deg");
			}
		}
	});
}

// Element sticky handler
function pagelayer_ele_sticky_handler(jEle, parentEle){
	
	// Set element stickied
	if(jEle.attr('pagelayer-stickied-ele') == 1){
		return;
	}
	
	parentEle = parentEle || jQuery(window);

	jEle.attr('pagelayer-stickied-ele', 1);
	
	var jEleTop = jEle.offset().top;
	var jEleW = jEle[0].clientWidth +'px';
	var oldstyle = jEle.attr('style') || '';	
	
	var pagelayer_sticky = function(){
		var position = jEle.attr('data-sticky-position') || '';
		var offset = jEle.attr('data-sticky-offset') || 0;
		var sticky_in_col = jEle.attr('data-sticky_in_col') || '';
		var sticky_on = jEle.attr('data-sticky-on') || '';
		sticky_on = sticky_on.split(',');
	
		// If match the media
		var do_sticky = false;
		for(var x in sticky_on){
			if(pagelayer_get_media_mode() == sticky_on[x]){
				do_sticky = true;
			}
		}
		
		// If there is a wrapper
		var wrapper = jEle.parent('.pagelayer-ele-wrap');
		if(wrapper.length > 0 ){
			
			// Reset jEle
			jEle.next('.pagelayer-sticky-space-holder').remove();
			jEle.attr('style', oldstyle);
			
			// Get wrapper old syle
			oldstyle = wrapper.attr('oldstyle') || '';
			if(pagelayer_empty(oldstyle)){
				oldstyle = wrapper.attr('style') || '1';
				wrapper.attr('oldstyle', oldstyle);
			}else if(oldstyle == '1'){
				oldstyle = '';
			}
			
		}else{
			wrapper = jEle;
		}
		
		var parentHeight = parentEle.height();
		var parentScrollTop = parentEle.scrollTop();
		var topToCheck = jEleTop - parentScrollTop;
		
		// Do fixed the element
		var pagelayer_fixed = function(){
			
			var opp_position = (position == 'top') ? 'bottom' : 'top';
			var fixed_css = {'position': 'fixed', 'width': jEleW, 'max-width': jEleW, [position] : offset +'px', [opp_position]: 'auto','z-index' : '99'}
			
			// For the sticky in columns 
			if(!pagelayer_empty(sticky_in_col)){
				//fixed_css['position'] = 'sticky';
				var container = wrapper.parent();
				var containerTop = container.offset().top;
				if((containerTop + container.height()) - parentScrollTop <= wrapper.outerHeight(true) + offset || containerTop - parentScrollTop >= parentHeight - wrapper.outerHeight(true) -  offset){
					fixed_css['position'] = 'absolute';
					fixed_css[opp_position] = '0px';
					fixed_css[position] = 'auto';
				}
			}
			
			// Add position holder element
			if(wrapper.next('.pagelayer-sticky-space-holder').length < 1 ){
				var clone = wrapper.clone(true);
				clone.addClass('pagelayer-sticky-space-holder');
				clone.css({'visibility' : 'hidden', 'transition': 'none 0s ease 0s', 'animation': '0s ease 0s 1 normal none running none'});
				
				// Remove pagelayer-parent attributes to avoid group children list double
				if(!pagelayer_empty(pagelayer_is_live)){
					clone.removeClass('pagelayer-ele-wrap');
					clone.removeClass('pagelayer-ele');
					clone.find('.pagelayer-ele').removeClass('pagelayer-ele');
					clone.find('[pagelayer-id]').removeAttr('pagelayer-id');
				}
				
				// Add 
				wrapper.after(clone);
				
				//wrapper.after('<div class="pagelayer-sticky-space-holder" style="width:'+wrapper.outerWidth(true)+'px;height:'+wrapper.outerHeight(true)+'px;visibility:hidden;margin:0px;"></div>');
			}
			
			// Css for fixed the element
			wrapper.css(fixed_css);
		}
		
		// TODO: manage margin
		var mTopEle = parseFloat(wrapper.css('margin-top'));
		var mBottomEle = parseFloat(wrapper.css('margin-bottom'));
		
		// Fixed on top
		if( position == 'top' && (topToCheck <= offset+mTopEle && do_sticky) ){
			pagelayer_fixed();
		// Fixed on bottom
		}else if( position == 'bottom' && topToCheck + wrapper.outerHeight()+mBottomEle >= parentHeight - offset && do_sticky) {
			pagelayer_fixed();
		// Set old style
		}else{
			wrapper.attr('style', oldstyle);
			wrapper.next('.pagelayer-sticky-space-holder').remove();
			jEleW = wrapper[0].clientWidth +'px';
			jEleTop = wrapper.offset().top;
		}
		
		return true;
	};
	
	// Run for the first time
	pagelayer_sticky();
	
	// On window scroll
	parentEle.scroll(pagelayer_sticky);	
	parentEle.resize(pagelayer_sticky);	
	
}

function pagelayer_pl_posts(jEle){
	
	var ul = jEle.find('.pagelayer-posts-container');
	
	ul.addClass('pagelayer-owl-carousel pagelayer-owl-theme');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-owl-');
	
	// Already setup ?
	var setup = jEle.attr('pagelayer-setup');
	
	// If already setup then Destroy Owl
	if(setup && setup.length > 0){
		ul.pagelayerOwlCarousel('destroy');
		ul.find('[class^="pagelayer-owl-"]').remove();
	}
	
	//console.log(options);
	ul.pagelayerOwlCarousel(options);
	
	// Set that we have setup everything
	jEle.attr('pagelayer-setup', 1);
}

function pagelayer_pl_slides(jEle){
	var ul = jEle.find('.pagelayer-slides-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	var blurNav = false;
	
	if(pagelayer_is_live){
		
		if(!options.nav && !options.dots) {
			options.nav = true;
			options.dots = true;
			blurNav = true;
		}
		
		options.mouseDrag = false;
	}
	
	pagelayer_owl_init(jEle, ul, options);
	
	if(blurNav){
		ul.find('.pagelayer-owl-nav button').css({'filter': 'blur(2px)'});
		ul.find('.pagelayer-owl-dot').css({'filter': 'blur(2px)'});
	}
	
	// Shows element animations after slide change
	ul.on('refresh.owl.carousel translate.owl.carousel', function(e) {
		var slide = jQuery(this);
    
		if(!pagelayer_is_live) {
			slide.find('.pagelayer-wow').addClass('animated');
			return; 
		}
			
		slide.find('.pagelayer-ele').each(function() {
			var ele = jQuery(this);
			
			if(ele.css('animation-name') == 'none') {
				return;
			}
			
			ele.addClass('pagelayer-wow animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
				ele.removeClass('pagelayer-wow animated');
			});
		});
	});
	
}

// For Pagelayer Pro
// Show tooltip in image hotspot
function pagelayer_image_hotspot(jEle){
	
	// Drag and Drop function for image
	if (typeof pagelayer_preDAndD_image !== "undefined") {
		pagelayer_preDAndD_image(jEle);
	}
	
	var tooltip_click = jEle.find('.pagelayer-icon-holder');
	var icon_holder = jEle.find('.pagelayer-hotspots-icon-holder');
	icon_holder.off('click');
	icon_holder.find('.pagelayer-tooltip-text').removeClass('pagelayer-tooltip-on-click');
	
	if(tooltip_click.hasClass('pagelayer-hotspots-click')){
		icon_holder.each(function(){
			
			jQuery(this).click(function(){
				jQuery(this).find( '.pagelayer-tooltip-text' ).toggleClass('pagelayer-tooltip-on-click');
			})	

		});
	}	
	
	// Assigning animation classes to icon holder
	if(!pagelayer_empty(tooltip_click.attr('pagelayer-animation'))){
		icon_holder.addClass('pagelayer-animation-'+tooltip_click.attr('pagelayer-animation'));
	}
	
}

var pagelayer_chart_objects = {};

// Show Chart render
function pagelayer_chart(jEle){
	
	var holder = jEle.find('.pagelayer-chart-holder');
	var id = jEle.attr('pagelayer-id');

	var type = holder.attr('chart-type');
	var labels = holder.attr('chart-labels') || '';
	var legend = holder.attr('chart-legend');
	
	var chart_datasets = [];
	labels = labels.split(',');
	//console.log(labels);
	
	jEle.find('.pagelayer-chart-child-holder').find('.pagelayer-chart-datasets').each(function(){
		var tmp_dataset = {};
		//console.log(jQuery(this).attr('chart-datasets'));
		var chartDatasets = jQuery(this).attr('chart-datasets') || '';
		tmp_dataset['data'] = chartDatasets.split(',');
		//tmp_dataset['data'] = [734,784,2478,5267,433];
		tmp_dataset['label'] = jQuery(this).attr('datasets-label');
		tmp_dataset['backgroundColor'] = ( holder.attr('chart-colors') ? holder.attr('chart-colors').split(',') : jQuery(this).attr('dataset-bg') );
		tmp_dataset['borderColor'] = jQuery(this).attr('border-color');
		tmp_dataset['borderWidth'] = 1;
		tmp_dataset['fill'] = ( jQuery(this).attr('dataset-fill') ? true : false );
		chart_datasets.push(tmp_dataset);
	});
	//console.log(chart_datasets);
	//chart_datasets = chart_datasets.join(',');
	
	if(id in pagelayer_chart_objects && typeof pagelayer_chart_objects[id].destroy == 'function'){
		pagelayer_chart_objects[id].destroy();
	}
	
	pagelayer_chart_objects[id] = new Chart(jEle.find('.pagelayer-chart-holder'), {
		type: type,
		data: {
		  labels: labels,
		  datasets: 
		  chart_datasets
		},
		options: {
			//rotation: holder.attr('data-pierotate') * Math.PI,
			//circumference: holder.attr('data-circumference') * Math.PI,
			maintainAspectRatio: ( holder.attr('chart-height') ? false : true ),
			legend: { 
				display: ( legend ? true : false ),
				position: legend,
			},
			scales: {
				xAxes: [
					{
						barPercentage: 1,
						categoryPercentage: 0.9,
						ticks:{
							beginAtZero: holder.attr('data-xbegin'),
							fontColor: holder.attr('data-xcolor'),
							fontSize: holder.attr('data-xsize'),
							autoSkip: false,
							maxRotation: holder.attr('data-xrotate'),
							minRotation: holder.attr('data-xrotate')
						},
						//stacked: true
					}
				],
				yAxes:[
					{
						ticks:{
							beginAtZero: holder.attr('data-ybegin'),
							fontColor: holder.attr('data-ycolor'),
							fontSize: holder.attr('data-ysize'),
							autoSkip: false,
							maxRotation: holder.attr('data-yrotate'),
							minRotation: holder.attr('data-yrotate')
						},
						//stacked: true
					}
				]
			}
		}
	});

}

// Show table render
function pagelayer_table(jEle){
	
	var tHolder = jEle.find('.pagelayer-table-holder');
	var dHolder = jEle.find('.pagelayer-data-holder');
	var trEle = dHolder.find(".pagelayer-table_row");
	var tdlength = 0;
	tHolder.empty();
	
	/*trEle.each(function(){
		var tdEle = jQuery(this).find(".pagelayer-table_col").length;
		if(tdlength < tdEle){tdlength = tdEle}
	});*/
	
	// Add rows
	trEle.each(function(){
		var this_trEle = jQuery(this);
		var this_trId = this_trEle.attr('pagelayer-id');
		var tdEle = this_trEle.find(".pagelayer-table_col");
		
		var html = '';
		
		// Add columns
		tdEle.each(function(){
			var td_data_Holder = jQuery(this).find('.pagelayer-col-data');
			var td_id = jQuery(this).attr('pagelayer-id');
			var tdata = td_data_Holder.attr('data-td') || '';
			var t_tag = td_data_Holder.attr('data-tag') || '';
			var attrs = {};
			var col_attr = '';
			
			attrs['colspan']= td_data_Holder.attr('data-colspan') || '';
			attrs['rowspan'] = td_data_Holder.attr('data-rowspan') || '';
			
			if(!pagelayer_empty(pagelayer_is_live)){
				 attrs['pagelayer-ref-id'] = td_id;
				 attrs['pagelayer-editable'] = 'data';
				 attrs['contenteditable'] = 'true';
			}
			
			for(var key in attrs){
				if(!pagelayer_empty(attrs[key])){
					col_attr += key+'="'+attrs[key]+'"';
				}
				
			}
			
			html = html+'<'+t_tag +' '+col_attr+' pagelayer-table-id="'+td_id+'">'+tdata+'</'+t_tag+'>';
		});
		
		/* if(tdlength > tdEle.length){
			
			var extra_td = tdlength - tdEle.length;
			for(var i=0; extra_td >i; i++){
				html = html+'<td></td>';
			}
		} */
		
		tHolder.append('<tr pagelayer-table-id="'+this_trId+'">'+html+'</tr>');
	});
	
	if(!pagelayer_empty(pagelayer_is_live)){
		tHolder.on('input', '[contenteditable]', function(){
			var jEle = jQuery(this);
			var val = pagelayer_trim(jEle.html());
			var id = jEle.closest('[pagelayer-ref-id]').attr('pagelayer-ref-id');
			
			if(pagelayer_empty(id)){
				return;
			}
			
			jQuery('[pagelayer-id='+id+']').find('.pagelayer-col-data').attr('data-td', val);
			
		});
	}
	
}

function pagelayer_audio(jEle){
	
	var audio = jQuery(jEle.find('audio'));
	var container = jEle.find('.pagelayer-audio-container');
	var features = ['playpause','tracks','fullscreen'];
	
	(container.attr('show_duration') ? features.push('duration') : '' );
	(container.attr('show_progress') ? features.push('progress') : '' );
	(container.attr('show_current') ? features.push('current') : '' );
	(container.attr('show_volume') ? features.push('volume') : '' );
	
	audio.mediaelementplayer({
		//features: ['playpause','duration','progress','current','volume','tracks','fullscreen']
		features: features
	});
}

// Post Portfolio Handler - Premium
function pagelayer_post_folio(jEle){
	var btn = jEle.find('.pagelayer-postfolio-btn');
	var thumb = jEle.find('.pagelayer-postfolio-thumb');
	
	btn.unbind('click');
	btn.on('click', function(){
		var btn_cat = jQuery(this).data("filter");
		
		if(btn_cat == 'all'){
			jQuery(thumb).fadeIn(1200);
		}else{
			thumb.each(function(){
				var thumb_cat = jQuery(this).data("category");
				if(!pagelayer_empty(thumb_cat)){
					thumb_cat = thumb_cat.split(' ');
				
					if(jQuery.inArray( btn_cat, thumb_cat ) == -1){
						jQuery(this).hide();
					}else{
						jQuery(this).fadeIn(600);
					}
				}else{
					jQuery(this).hide();
				}
			});
		}
	});
}

// Search Form handler - Premium
function pagelayer_search_form(jEle){
	
	// In full screen mode set auto complete offscreenBuffering
	jEle.find('.pagelayer-search-full-screen form').attr('autocomplete', 'off');
	
	jEle.find('.pagelayer-search-toggle').click(function(){
		jEle.find('.pagelayer-search-fields').toggleClass('show');
	});
	
	jEle.find('.pagelayer-search-fields').click(function(e){
		 e = window.event || e; 
		if(this === e.target) {
			jQuery(this).removeClass('show');
		}
	});
}

// Login Form handler - Premium
function pagelayer_login_submit(jEle, e){
	e.preventDefault();
	var fdata = new FormData( jQuery(jEle).closest('form')[0] );
	
	// Append the nonce
	fdata.append('pagelayer_nonce', pagelayer_global_nonce);
	
	jQuery.ajax({
		url: pagelayer_ajaxurl+'action=pagelayer_login_submit',
		type: "POST",
		data: fdata,
		processData: false,
		contentType: false,
		cache:false,
		success:function(result){				
			var json = jQuery.parseJSON(result);
			// console.log(json);
			if(!pagelayer_empty(json['error'])){
				jQuery(".pagelayer-login-error-box").html(json['error']).fadeIn().delay(10000).fadeOut();  
			}else{
				if(!pagelayer_empty(json['redirect'])){
					window.location.href = json['redirect'];
				}else{
					location.reload(true);
				}
			}			 
		}
	});
}

//Review slider handler - Premium
function pagelayer_reviews_slider(jEle){
	
	var ul = jEle.find('.pagelayer-reviews-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);
	
}		

// Facebook App ID handler - Premium
function pagelayer_fb_apps(jEle){
	var app_id = jEle.find('.pagelayer-app-details').attr('pagelayer-app-id');
	
	if(pagelayer_empty(app_id) || app_id == "{{fb-app-id}}"){
		app_id = pagelayer_facebook_id;
	}
	
	// If still empty
	if(pagelayer_empty(app_id)){
		return;
	}
	
	var win = pagelayerGetCurrentWindow();
	var doc = pagelayerGetDocumentElement();
	
	win.fbAsyncInit = function() {		
		win.FB.init({
			appId            : app_id,
			autoLogAppEvents : true,
			xfbml            : true,
			version          : 'v3.3'
		});
	};
	win.FB = null;
	(function(d, s, id) {
		var js, fjs = d.getElementsByTagName(s)[0];
		js = d.createElement(s); js.id = id;
		js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0";
		fjs.parentNode.insertBefore(js, fjs);
	}(doc, 'script', 'facebook-jssdk'));
}

// SiteMap Attribute Handler- Premium
function pagelayer_sitemap_add_attributes(jEle){
	
	var nofollow = jEle.find('.pagelayer-sitemap-div-holder').data('nofollow');
	
	if(!pagelayer_empty(nofollow)){
		jEle.find('.pagelayer-sitemap-section .pagelayer-sitemap-list-item a').attr('rel','nofollow');		
	}

}

// Initialize video slider
function pagelayer_pl_video_slider(jEle){
	
	var ul = jEle.find('.pagelayer-video-slider-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);
	
}

// Splash widget
function pagelayer_pl_splash_screen(jEle){
	
	if(!pagelayer_empty(pagelayer_is_live)){
		return;
	}
	
	if( jEle.attr('display_type') == "once"){
	
		if (!sessionStorage.isVisited) {
			sessionStorage.isVisited = "true";
			jEle.delay(jEle.attr('delay')).fadeIn();
		}
	}else{
			jEle.delay(jEle.attr('delay')).fadeIn();
	}
	
	jEle.find('.pagelayer-splash-close, .pagelayer-splash-bg-close').on('click', function(){
		jEle.fadeOut();
	});		
}

// Facebook width adjustment function
function pagelayer_fb_width(jEle){
	
	var facebook = (jEle.find('.fb-page').length ? jEle.find('.fb-page') : jEle.find('.fb-embed'));
	
	var fb_resize = function(){
		facebook.attr('data-width', jEle.width());	
		FB.XFBML.parse();
	};
  
	setTimeout(fb_resize, 1000);
	
	var win = pagelayerGetCurrentWindow();
	
	jQuery(win).on('resize', function(){
		setTimeout(fb_resize, 1000);
	});
}

// WooCommenrce cart
function pagelayer_woo_menu_cart(jEle){
	
	// On click menu cart
	jEle.find('.pagelayer-menu-cart-toggle').click(function(e){
		e.preventDefault();
		jEle.find('.pagelayer-menu-cart-container').toggle();
	});
	
	// On click menu cart close
	jEle.find('.pagelayer-menu-cart-close').click(function(){
		jEle.find('.pagelayer-menu-cart-container').hide();
	});
	
}

// Setup the pop-ups
function pagelayer_popup_setup(popEle){
	
	var jEle = popEle.find('.pagelayer-popup').first();
	var id = jEle.attr('pagelayer-id');
	var popup_content = popEle.find('.pagelayer-popup-modal-content');
	var data = new Object();
	
	// Set the Pou-up id
	popEle.attr('pagelayer-popup-id', id);
	
	if(jEle.length < 1) return;
	
	jQuery.each(jEle[0].attributes, function(index, att){
		if(att.name.match(/data\-/i)){
			data[att.name.substr(5)] = att.value;
		}
	});	
	
	// Show pop-up
	var popup_show = function(force){
				
		// Is there a cookie?
		if( !pagelayer_empty(data['popup_cookie_session']) && !pagelayer_empty(data['popup_cookie_name']) && pagelayer_empty(force)){
			var name = data['popup_cookie_name']+ "=";
			var decodedCookie = decodeURIComponent(document.cookie);
			var ca = decodedCookie.split(';');

			for(var i = 0; i <ca.length; i++) {
				var c = ca[i];
				while (c.charAt(0) == ' ') {
					c = c.substring(1);
				}

				if (c.indexOf(name) == 0) {
					return;
				}
			}
		}
		
		// Avoid multi time open
		if(!pagelayer_empty(popEle.attr('pagelayer-popup-Shown')) && pagelayer_empty(data['popup_multi_time'])){
			return;
		}
			
		popEle.css({'display' : 'flex'});
		popEle.attr('pagelayer-popup-Shown', 1);
		
		// Animate the Pop-up content
		if(!pagelayer_empty(data['popup_animation'])){
			popup_content.addClass(data['popup_animation'] + ' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
				jQuery(this).removeClass(data['popup_animation']+ ' animated');
			});
		}
		
		// Auto close
		if(!pagelayer_empty(data['popup_auto_close'])){
			var cSecond = parseFloat(data['popup_auto_close']);
			setTimeout(function(){
				popEle.find('.pagelayer-popup-close').click();
			}, cSecond * 1000);
		}
		
	}
	
	// Append the close element
	// remove close element
	popEle.find('.pagelayer-popup-close').remove();
	
	// Put close button inside or outside
	if(data['popup_cbtn_position'] == 'outside'){
		popEle.append('<div class="pagelayer-popup-close"><i class="fas fa-times" ></i></div>');
	}else{
		popEle.find('.pagelayer-popup-modal-content').append('<div class="pagelayer-popup-close"><i class="fas fa-times" ></i></div>');
	}  
  
	var closer = popEle.find('.pagelayer-popup-close');
	
	// On click close
	closer.click(function(e){
		jQuery(document).trigger('pagelayer_popup_close', e, popEle);
		e.preventDefault();
		e.stopPropagation();
		popEle.hide();
	});
	
	// Hide pop-up on click modal container
	if ( !pagelayer_empty(data['overlay_close']) ){ 
		popEle.click(function(e){
			if(jQuery(e.target).closest('.pagelayer-popup-modal-content').length > 0) return;
			closer.click();
		});
	}
	
	// Hide pop-up click on selector
	if ( !pagelayer_empty(data['selector_close']) ){ 
		jQuery(data['selector_close']).click(function(e){
			closer.click();
		});
	}
	
	// Is there a cookie to be set to be remembered ?
	if( !pagelayer_empty(data['popup_cookie_session']) && !pagelayer_empty(data['popup_cookie_name']) ){
		
		// Set cookie on close as well ?
		if(!pagelayer_empty(data['popup_cookie_close'])){
			data['popup_cookie_selector'] = '.pagelayer-popup-close'+(pagelayer_empty(data['popup_cookie_selector']) ? '' : ','+data['popup_cookie_selector']);
		}
		
		if(!pagelayer_empty(data['popup_cookie_selector'])){		
			pagelayer_popup_set_cookie(data, closer);
		}
	}
	
	// Pop-up triggers
	// If we are in editor
	if ( !pagelayer_empty(popEle.attr('pagelayer-popup-editor')) ) {
		closer.unbind('click');
		popEle.unbind('click');
		popEle.removeAttr('pagelayer-popup-Shown');
		popup_show(true);
	}
	
	// Click popup show
	if(!pagelayer_empty(data['trig_click'])){
		jQuery(data['trig_click_ele']).click(popup_show);
	}
	
	// Popup show on load
	if(!pagelayer_empty(data['trig_load'])){
		var second = parseFloat(data['trig_load_sec'] || 0);
		setTimeout(popup_show, second * 1000);
	}
	
	// Popup show on scroll
 	if(!pagelayer_empty(data['trig_scroll'])){

		// Initial state
		var scrollPos = 0;
		
		// adding scroll event
		jQuery(window).on('scroll', function(){
			
			// detects new state and compares it with the new one
			if ( scrollY > scrollPos){
				if(data['trig_scroll_dir'] == 'down'){
					let scroll_per = scrollY*100/(jQuery(document).height() - innerHeight);
					let scr_per =parseInt(data['trig_scroll_per']) || 0;
					
					if( scr_per <=  scroll_per){
						popup_show();
					}
				}
			}else if(data['trig_scroll_dir'] == 'up'){
				popup_show();
			}
			
			// saves the new position for iteration.
			scrollPos = scrollY;
		});
	}
	
	// Popup show on scroll to element
	if(!pagelayer_empty(data['trig_scroll_to_ele'])){
		
		// adding scroll event
		jEle.find(data['trig_scroll_to_ele_sel']).on('scroll', function(){
			popup_show();
		});
	}
	
	// On scroll popup show
	if(!pagelayer_empty(data['trig_page_exit_intent'])){
		jQuery(document).on('mouseleave', popup_show);
	}

	// When page load popup hide
	if(!pagelayer_empty(data['trig_before_load'])){
		closer.click();
	}
}

// Sets the cookie
function pagelayer_popup_set_cookie(data, closer){
	jQuery(data['popup_cookie_selector']).click(function(e){
		var exdays = data['popup_cookie_exp'] || 0;
		var d = new Date();
		d.setTime(d.getTime() + ( parseFloat(exdays) *24*60*60*1000));
		var expires = "expires="+ d.toUTCString();
		document.cookie = data['popup_cookie_name'] + "=1;" + expires + ";path=/";
		if(closer && !jQuery(e.target).is(closer)){
			closer.click();
		}
	});
}

// Before After Slider Handler
function pagelayer_before_after_slider(jEle){
	
	let event = jEle.find('.pagelayer-before-after-container').attr('data-resize-event'),
		slider = jEle.find('.pagelayer-before-after-slider'),
		after = jEle.find('.pagelayer-after-image'),
		resizer = jEle.find('.pagelayer-resizer'),
		buttons = jEle.find('.pagelayer-before-btn, .pagelayer-after-btn'),
		plID = jEle.attr('pagelayer-id');
	
	resizer.removeAttr('style');
	after.removeAttr('style');
	
	// z - Custom value for both
	var slideIt = function(e, z){
		
		z = z || false;
		
		let x, y;
		
		if(z != false){
			x =	y = z;
		}else{
			let pos = slider.offset(),
				eleWidth = slider.width(),
				eleHeight = slider.height();
						
			x = Math.min( (e.pageX - pos.left), eleWidth ) * 100 / eleWidth;
			y = Math.min( (e.pageY - pos.top), eleHeight) * 100 / eleHeight;
		}
		
		if(x < 0 || x > 99.7 || y < 0 || y > 99.7){
			return false;
		}

		if(slider.hasClass('pagelayer-before-after-slider-vertical')){
			resizer.css({'top': y+'%'});
			after.css({'clip-path': 'polygon(0px '+y+'%, 100% '+y+'%, 100% 100%, 0% 100%)'});
			return;
		}
		
		resizer.css({'left': x+'%'});
		after.css({'clip-path': 'polygon('+x+'% 0%, 100% 0%, 100% 100%, '+x+'% 100%)'});
	}
	
	var resizeOn = function(){
		slider.addClass('resize');
	}
	
	var resizeOff = function(){
		slider.removeClass('resize');
	}
	
	// Before After Button click handler
	jEle.on('click', '.pagelayer-after-btn, .pagelayer-before-btn', function(e){
		e.stopPropagation();
		e.preventDefault();
		
		var slide = (jQuery(this).hasClass('pagelayer-before-btn')) ? 90 : 10;
		
		// Start resizing
		resizeOn();

		slideIt(e, slide);
		
		// Stop resizing
		resizeOff();
	});
	
	var win = pagelayerGetCurrentWindow();
	var doc = pagelayerGetDocumentElement();
	
	// Unbind All events
	jQuery(win).unbind('mousemove.bf_slider'+plID);
	slider.unbind('click mouseover mouseout');
	resizer.unbind('mousedown');
	jQuery(doc).unbind('mouseup.bf_slider'+plID);
	
	// If there is no events
	if(event == 'none' || pagelayer_empty(event)){
		return;
	}
		
	if(event == 'hover'){
		// No need of buttons while hover effect
		buttons.fadeOut();
		slider.on('mouseover', resizeOn);
		slider.on('mouseout', resizeOff);
	}else{		
		resizer.on('mousedown', function(e){
			// To prevent widgets from being dragged.
			e.stopPropagation();
			e.preventDefault();
			resizeOn();
			buttons.fadeOut();
		});
		
		jQuery(doc).on('mouseup.bf_slider'+plID, function(e){
			resizeOff();
			buttons.fadeIn();
		});
	}

	jQuery(win).on('mousemove.bf_slider'+plID, function(e){
		
		if(!slider.hasClass('resize')){
			return;
		}
		
		// Stop divs being selected.
		e.stopPropagation();
		e.preventDefault();
		
		slideIt(e);
	});
	
	slider.on('click', slideIt);
}

// Image Map Widget
function pagelayer_pl_image_map(jEle){		
	var svgEle = jEle.find('.pagelayer-imgmap-svg');
	var data = [];

	svgEle.find('.pagelayer-imgmap-item').each(function(){
		var data_link = jQuery(this).attr('data-link');
		var data_id = jQuery(this).attr('data-id');
		data[data_id] = data_link;
	});

	pagelayer_resize_imgmap(jEle);

	jQuery(pagelayerGetCurrentWindow()).off('resize.plimgmap').on('resize.plimgmap',function(){
		pagelayer_resize_imgmap(jEle);
	});

	if(!pagelayer_is_live){
		for (const key in data) {
			if(data == undefined ||  data[key].length === 0){
				continue;
			}
			var elem = jEle.find('[data-id='+key+']');
			elem.css({'cursor':'pointer'});
			elem.off('click').on('click',function(){
				window.open(data[key], "_blank");				
			});
		}
		svgEle.addClass('pagelayer-imgmap-hover-active');
	}
}

function pagelayer_resize_imgmap(jEle){
	var svgEle = jEle.find('svg');
	var pathEles = svgEle.find('path');

	if(pathEles.length > 0){
		for (var i = 0; i < pathEles.length; i++) {
			pagelayer_resize_imgmap_item(jQuery(pathEles[i]), jEle);
		}
	}
}

function pagelayer_resize_imgmap_item(path_ele, jEle = ''){

	var wrap = jEle.find('.pagelayer-imgmap-wrapper');
	var img_ele = jEle.find('img');

	// Delay while resizing map
	setTimeout(() => {

		// Auto resize wrapper
		wrap.css('cssText','width:'+img_ele.width()+'px;height:'+img_ele.height()+'px;left:'+img_ele.position().left+'px;top:'+img_ele.position().top+'px;');

		var mapWidth = wrap.width();
		var mapHeight = wrap.height();
		var cords = path_ele.attr('data-cord');
		var isActive = path_ele.hasClass('pagelayer-map-item-active') ? true : false;
		
		cords = cords.split(',');
	
		var tmpArr = [];
		var tmpCord = '';
		var count = 0;
		
		cords.forEach((ele,index) => {
			var prefix = index == 1 ? 'M' : 'L';
			var perc = ele;
	
			if(tmpCord.length == 0){
				tmpCord = (mapWidth / 100) * perc;
			}else{
				var cord = (mapHeight / 100) * perc;
	
				if(pagelayer_is_live){
					var cordWrap = jEle.find('.pagelayer-imgmap-coordinates-wraper');
					var mapId = path_ele.attr('data-id');
					var cord_ele = jEle.find('.pl-cord-'+mapId).eq(count);
					
					if(cord_ele.length == 0){
						var cordHTML = `<div class="pagelayer-imgmap-coord pl-cord-`+mapId+`" title="Drag to reposition" data-id="`+count+`" style="left:`+(tmpCord)+`px;top:`+(cord)+`px" style="display:block;">
							<span class="pagelayer-imgmap-remove-cord fa fa-trash"></span>
						</div>`;
						cordWrap.append(cordHTML);
					}else{
						var visibility = isActive ? 'display:block' : '';
						cord_ele.css('cssText','left:'+tmpCord+'px;top:'+cord+'px;'+visibility);
					}
				}
	
				tmpArr.push(prefix + tmpCord+' '+cord);
	
				tmpCord = '';
				count++;
			}
		});
	
		// Close path denoted by z
		var endOpr = pagelayer_is_live ? '' : 'z';
		var value = tmpArr.join('').toString() + endOpr;
		cords = cords.toString();
		
		path_ele.attr('data-cord',cords);
		path_ele.attr('d',value);

	}, 10);

}

function pagelayer_create_imgmap_svg(classes = [], attrs = []){

	// Create svg path element and append in the svg
	var elem = document.createElementNS('http://www.w3.org/2000/svg', 'path');
	if(classes.length > 0){
		classes.forEach(cls => {
			elem.classList.add(cls);
		});
	}

	if(attrs.length > 0){
		attrs.forEach(attr => {
			elem.setAttribute(attr[0],attr[1]);
		});
	}
	
	return elem;
}

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Shuffle=e()}(this,function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function i(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function r(){}r.prototype={on:function(t,e,i){var n=this.e||(this.e={});return(n[t]||(n[t]=[])).push({fn:e,ctx:i}),this},once:function(t,e,i){var n=this;function s(){n.off(t,s),e.apply(i,arguments)}return s._=e,this.on(t,s,i)},emit:function(t){for(var e=[].slice.call(arguments,1),i=((this.e||(this.e={}))[t]||[]).slice(),n=0,s=i.length;n<s;n++)i[n].fn.apply(i[n].ctx,e);return this},off:function(t,e){var i=this.e||(this.e={}),n=i[t],s=[];if(n&&e)for(var o=0,r=n.length;o<r;o++)n[o].fn!==e&&n[o].fn._!==e&&s.push(n[o]);return s.length?i[t]=s:delete i[t],this}};var l=r,a=r;l.TinyEmitter=a;var u="undefined"!=typeof Element?Element.prototype:{},h=u.matches||u.matchesSelector||u.webkitMatchesSelector||u.mozMatchesSelector||u.msMatchesSelector||u.oMatchesSelector,f=function(t,e){if(!t||1!==t.nodeType)return!1;if(h)return h.call(t,e);for(var i=t.parentNode.querySelectorAll(e),n=0;n<i.length;n++)if(i[n]==t)return!0;return!1};var c=function(t,e){var i,n,s,o,r=0;return function(){i=this,n=arguments;var t=new Date-r;return o||(t>=e?l():o=setTimeout(l,e-t)),s};function l(){o=0,r=+new Date,s=t.apply(i,n),i=null,n=null}};function d(){}function m(t){return parseFloat(t)||0}var p=function(){function e(i,n){t(this,e),this.x=m(i),this.y=m(n)}return i(e,null,[{key:"equals",value:function(t,e){return t.x===e.x&&t.y===e.y}}]),e}(),v=function(){function e(i,n,s,o,r){t(this,e),this.id=r,this.left=i,this.top=n,this.width=s,this.height=o}return i(e,null,[{key:"intersects",value:function(t,e){return t.left<e.left+e.width&&e.left<t.left+t.width&&t.top<e.top+e.height&&e.top<t.top+t.height}}]),e}(),y={BASE:"shuffle",SHUFFLE_ITEM:"shuffle-item",VISIBLE:"shuffle-item--visible",HIDDEN:"shuffle-item--hidden"},g=0,_=function(){function e(i){t(this,e),g+=1,this.id=g,this.element=i,this.isVisible=!0,this.isHidden=!1}return i(e,[{key:"show",value:function(){this.isVisible=!0,this.element.classList.remove(y.HIDDEN),this.element.classList.add(y.VISIBLE),this.element.removeAttribute("aria-hidden")}},{key:"hide",value:function(){this.isVisible=!1,this.element.classList.remove(y.VISIBLE),this.element.classList.add(y.HIDDEN),this.element.setAttribute("aria-hidden",!0)}},{key:"init",value:function(){this.addClasses([y.SHUFFLE_ITEM,y.VISIBLE]),this.applyCss(e.Css.INITIAL),this.scale=e.Scale.VISIBLE,this.point=new p}},{key:"addClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.add(t)})}},{key:"removeClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.remove(t)})}},{key:"applyCss",value:function(t){var e=this;Object.keys(t).forEach(function(i){e.element.style[i]=t[i]})}},{key:"dispose",value:function(){this.removeClasses([y.HIDDEN,y.VISIBLE,y.SHUFFLE_ITEM]),this.element.removeAttribute("style"),this.element=null}}]),e}();_.Css={INITIAL:{position:"absolute",top:0,left:0,visibility:"visible",willChange:"transform"},VISIBLE:{before:{opacity:1,visibility:"visible"},after:{transitionDelay:""}},HIDDEN:{before:{opacity:0},after:{visibility:"hidden",transitionDelay:""}}},_.Scale={VISIBLE:1,HIDDEN:.001};var E=null,I=function(){if(null!==E)return E;var t=document.body||document.documentElement,e=document.createElement("div");return e.style.cssText="width:10px;padding:2px;box-sizing:border-box;",t.appendChild(e),E="10px"===window.getComputedStyle(e,null).width,t.removeChild(e),E};function b(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window.getComputedStyle(t,null),n=m(i[e]);return I()||"width"!==e?I()||"height"!==e||(n+=m(i.paddingTop)+m(i.paddingBottom)+m(i.borderTopWidth)+m(i.borderBottomWidth)):n+=m(i.paddingLeft)+m(i.paddingRight)+m(i.borderLeftWidth)+m(i.borderRightWidth),n}var S={reverse:!1,by:null,compare:null,randomize:!1,key:"element"};function T(t,e){var i=Object.assign({},S,e),n=Array.from(t),s=!1;return t.length?i.randomize?function(t){for(var e=t.length;e;){e-=1;var i=Math.floor(Math.random()*(e+1)),n=t[i];t[i]=t[e],t[e]=n}return t}(t):("function"==typeof i.by?t.sort(function(t,e){if(s)return 0;var n=i.by(t[i.key]),o=i.by(e[i.key]);return void 0===n&&void 0===o?(s=!0,0):n<o||"sortFirst"===n||"sortLast"===o?-1:n>o||"sortLast"===n||"sortFirst"===o?1:0}):"function"==typeof i.compare&&t.sort(i.compare),s?n:(i.reverse&&t.reverse(),t)):[]}var k={},w="transitionend",C=0;function L(t){return!!k[t]&&(k[t].element.removeEventListener(w,k[t].listener),k[t]=null,!0)}function D(t,e){var i=w+(C+=1),n=function(t){t.currentTarget===t.target&&(L(i),e(t))};return t.addEventListener(w,n),k[i]={element:t,listener:n},i}function z(t){return Math.max.apply(Math,t)}function M(t,e,i,n){var s=t/e;return Math.abs(Math.round(s)-s)<n&&(s=Math.round(s)),Math.min(Math.ceil(s),i)}function A(t,e,i){if(1===e)return t;for(var n=[],s=0;s<=i-e;s++)n.push(z(t.slice(s,s+e)));return n}function F(t,e){for(var i,n=(i=t,Math.min.apply(Math,i)),s=0,o=t.length;s<o;s++)if(t[s]>=n-e&&t[s]<=n+e)return s;return 0}function x(t,e){var i={};t.forEach(function(t){i[t.top]?i[t.top].push(t):i[t.top]=[t]});var n=[],s=[],o=[];return Object.keys(i).forEach(function(t){var r=i[t];s.push(r);var l,a=r[r.length-1],u=a.left+a.width,h=Math.round((e-u)/2),f=r,c=!1;if(h>0){var d=[];(c=r.every(function(t){var e=new v(t.left+h,t.top,t.width,t.height,t.id),i=!n.some(function(t){return v.intersects(e,t)});return d.push(e),i}))&&(f=d)}if(!c&&r.some(function(t){return n.some(function(e){var i=v.intersects(t,e);return i&&(l=e),i})})){var m=o.findIndex(function(t){return t.includes(l)});o.splice(m,1,s[m])}n=n.concat(f),o.push(f)}),[].concat.apply([],o).sort(function(t,e){return t.id-e.id}).map(function(t){return new p(t.left,t.top)})}function O(t){return Array.from(new Set(t))}var N=0,H=function(e){function r(e){var i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,r),(i=o(this,n(r).call(this))).options=Object.assign({},r.options,s),i.options.delimeter&&(i.options.delimiter=i.options.delimeter),i.lastSort={},i.group=r.ALL_ITEMS,i.lastFilter=r.ALL_ITEMS,i.isEnabled=!0,i.isDestroyed=!1,i.isInitialized=!1,i._transitions=[],i.isTransitioning=!1,i._queue=[];var l=i._getElementOption(e);if(!l)throw new TypeError("Shuffle needs to be initialized with an element.");return i.element=l,i.id="shuffle_"+N,N+=1,i._init(),i.isInitialized=!0,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(r,l),i(r,[{key:"_init",value:function(){if(this.items=this._getItems(),this.options.sizer=this._getElementOption(this.options.sizer),this.element.classList.add(r.Classes.BASE),this._initItems(this.items),this._onResize=this._getResizeFunction(),window.addEventListener("resize",this._onResize),"complete"!==document.readyState){var t=this.layout.bind(this);window.addEventListener("load",function e(){window.removeEventListener("load",e),t()})}var e=window.getComputedStyle(this.element,null),i=r.getSize(this.element).width;this._validateStyles(e),this._setColumns(i),this.filter(this.options.group,this.options.initialSort),this.element.offsetWidth,this.setItemTransitions(this.items),this.element.style.transition="height ".concat(this.options.speed,"ms ").concat(this.options.easing)}},{key:"_getResizeFunction",value:function(){var t=this._handleResize.bind(this);return this.options.throttle?this.options.throttle(t,this.options.throttleTime):t}},{key:"_getElementOption",value:function(t){return"string"==typeof t?this.element.querySelector(t):t&&t.nodeType&&1===t.nodeType?t:t&&t.jquery?t[0]:null}},{key:"_validateStyles",value:function(t){"static"===t.position&&(this.element.style.position="relative"),"hidden"!==t.overflow&&(this.element.style.overflow="hidden")}},{key:"_filter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastFilter,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.items,i=this._getFilteredSets(t,e);return this._toggleFilterClasses(i),this.lastFilter=t,"string"==typeof t&&(this.group=t),i}},{key:"_getFilteredSets",value:function(t,e){var i=this,n=[],s=[];return t===r.ALL_ITEMS?n=e:e.forEach(function(e){i._doesPassFilter(t,e.element)?n.push(e):s.push(e)}),{visible:n,hidden:s}}},{key:"_doesPassFilter",value:function(t,e){if("function"==typeof t)return t.call(e,e,this);var i=e.getAttribute("data-"+r.FILTER_ATTRIBUTE_KEY),n=this.options.delimiter?i.split(this.options.delimiter):JSON.parse(i);function s(t){return n.includes(t)}return Array.isArray(t)?this.options.filterMode===r.FilterMode.ANY?t.some(s):t.every(s):n.includes(t)}},{key:"_toggleFilterClasses",value:function(t){var e=t.visible,i=t.hidden;e.forEach(function(t){t.show()}),i.forEach(function(t){t.hide()})}},{key:"_initItems",value:function(t){t.forEach(function(t){t.init()})}},{key:"_disposeItems",value:function(t){t.forEach(function(t){t.dispose()})}},{key:"_updateItemCount",value:function(){this.visibleItems=this._getFilteredItems().length}},{key:"setItemTransitions",value:function(t){var e=this.options,i=e.speed,n=e.easing,s=this.options.useTransforms?["transform"]:["top","left"],o=Object.keys(_.Css.HIDDEN.before).map(function(t){return t.replace(/([A-Z])/g,function(t,e){return"-".concat(e.toLowerCase())})}),r=s.concat(o).join();t.forEach(function(t){t.element.style.transitionDuration=i+"ms",t.element.style.transitionTimingFunction=n,t.element.style.transitionProperty=r})}},{key:"_getItems",value:function(){var t=this;return Array.from(this.element.children).filter(function(e){return f(e,t.options.itemSelector)}).map(function(t){return new _(t)})}},{key:"_mergeNewItems",value:function(t){var e=Array.from(this.element.children);return T(this.items.concat(t),{by:function(t){return e.indexOf(t)}})}},{key:"_getFilteredItems",value:function(){return this.items.filter(function(t){return t.isVisible})}},{key:"_getConcealedItems",value:function(){return this.items.filter(function(t){return!t.isVisible})}},{key:"_getColumnSize",value:function(t,e){var i;return 0===(i="function"==typeof this.options.columnWidth?this.options.columnWidth(t):this.options.sizer?r.getSize(this.options.sizer).width:this.options.columnWidth?this.options.columnWidth:this.items.length>0?r.getSize(this.items[0].element,!0).width:t)&&(i=t),i+e}},{key:"_getGutterSize",value:function(t){return"function"==typeof this.options.gutterWidth?this.options.gutterWidth(t):this.options.sizer?b(this.options.sizer,"marginLeft"):this.options.gutterWidth}},{key:"_setColumns",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.getSize(this.element).width,e=this._getGutterSize(t),i=this._getColumnSize(t,e),n=(t+e)/i;Math.abs(Math.round(n)-n)<this.options.columnThreshold&&(n=Math.round(n)),this.cols=Math.max(Math.floor(n||0),1),this.containerWidth=t,this.colWidth=i}},{key:"_setContainerSize",value:function(){this.element.style.height=this._getContainerSize()+"px"}},{key:"_getContainerSize",value:function(){return z(this.positions)}},{key:"_getStaggerAmount",value:function(t){return Math.min(t*this.options.staggerAmount,this.options.staggerAmountMax)}},{key:"_dispatch",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.isDestroyed||(e.shuffle=this,this.emit(t,e))}},{key:"_resetCols",value:function(){var t=this.cols;for(this.positions=[];t;)t-=1,this.positions.push(0)}},{key:"_layout",value:function(t){var e=this,i=this._getNextPositions(t),n=0;t.forEach(function(t,s){function o(){t.applyCss(_.Css.VISIBLE.after)}if(p.equals(t.point,i[s])&&!t.isHidden)return t.applyCss(_.Css.VISIBLE.before),void o();t.point=i[s],t.scale=_.Scale.VISIBLE,t.isHidden=!1;var r=e.getStylesForTransition(t,_.Css.VISIBLE.before);r.transitionDelay=e._getStaggerAmount(n)+"ms",e._queue.push({item:t,styles:r,callback:o}),n+=1})}},{key:"_getNextPositions",value:function(t){var e=this;if(this.options.isCentered){var i=t.map(function(t,i){var n=r.getSize(t.element,!0),s=e._getItemPosition(n);return new v(s.x,s.y,n.width,n.height,i)});return this.getTransformedPositions(i,this.containerWidth)}return t.map(function(t){return e._getItemPosition(r.getSize(t.element,!0))})}},{key:"_getItemPosition",value:function(t){return function(t){for(var e=t.itemSize,i=t.positions,n=t.gridSize,s=t.total,o=t.threshold,r=t.buffer,l=M(e.width,n,s,o),a=A(i,l,s),u=F(a,r),h=new p(n*u,a[u]),f=a[u]+e.height,c=0;c<l;c++)i[u+c]=f;return h}({itemSize:t,positions:this.positions,gridSize:this.colWidth,total:this.cols,threshold:this.options.columnThreshold,buffer:this.options.buffer})}},{key:"getTransformedPositions",value:function(t,e){return x(t,e)}},{key:"_shrink",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getConcealedItems(),i=0;e.forEach(function(e){function n(){e.applyCss(_.Css.HIDDEN.after)}if(e.isHidden)return e.applyCss(_.Css.HIDDEN.before),void n();e.scale=_.Scale.HIDDEN,e.isHidden=!0;var s=t.getStylesForTransition(e,_.Css.HIDDEN.before);s.transitionDelay=t._getStaggerAmount(i)+"ms",t._queue.push({item:e,styles:s,callback:n}),i+=1})}},{key:"_handleResize",value:function(){this.isEnabled&&!this.isDestroyed&&this.update()}},{key:"getStylesForTransition",value:function(t,e){var i=Object.assign({},e);if(this.options.useTransforms){var n=this.options.roundTransforms?Math.round(t.point.x):t.point.x,s=this.options.roundTransforms?Math.round(t.point.y):t.point.y;i.transform="translate(".concat(n,"px, ").concat(s,"px) scale(").concat(t.scale,")")}else i.left=t.point.x+"px",i.top=t.point.y+"px";return i}},{key:"_whenTransitionDone",value:function(t,e,i){var n=D(t,function(t){e(),i(null,t)});this._transitions.push(n)}},{key:"_getTransitionFunction",value:function(t){var e=this;return function(i){t.item.applyCss(t.styles),e._whenTransitionDone(t.item.element,t.callback,i)}}},{key:"_processQueue",value:function(){this.isTransitioning&&this._cancelMovement();var t=this.options.speed>0,e=this._queue.length>0;e&&t&&this.isInitialized?this._startTransitions(this._queue):e?(this._styleImmediately(this._queue),this._dispatch(r.EventType.LAYOUT)):this._dispatch(r.EventType.LAYOUT),this._queue.length=0}},{key:"_startTransitions",value:function(t){var e=this;this.isTransitioning=!0,function(t,e,i){i||("function"==typeof e?(i=e,e=null):i=d);var n=t&&t.length;if(!n)return i(null,[]);var s=!1,o=new Array(n);function r(t){return function(e,r){if(!s){if(e)return i(e,o),void(s=!0);o[t]=r,--n||i(null,o)}}}t.forEach(e?function(t,i){t.call(e,r(i))}:function(t,e){t(r(e))})}(t.map(function(t){return e._getTransitionFunction(t)}),this._movementFinished.bind(this))}},{key:"_cancelMovement",value:function(){this._transitions.forEach(L),this._transitions.length=0,this.isTransitioning=!1}},{key:"_styleImmediately",value:function(t){if(t.length){var e=t.map(function(t){return t.item.element});r._skipTransitions(e,function(){t.forEach(function(t){t.item.applyCss(t.styles),t.callback()})})}}},{key:"_movementFinished",value:function(){this._transitions.length=0,this.isTransitioning=!1,this._dispatch(r.EventType.LAYOUT)}},{key:"filter",value:function(t,e){this.isEnabled&&((!t||t&&0===t.length)&&(t=r.ALL_ITEMS),this._filter(t),this._shrink(),this._updateItemCount(),this.sort(e))}},{key:"sort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastSort;if(this.isEnabled){this._resetCols();var e=T(this._getFilteredItems(),t);this._layout(e),this._processQueue(),this._setContainerSize(),this.lastSort=t}}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isEnabled&&(t||this._setColumns(),this.sort())}},{key:"layout",value:function(){this.update(!0)}},{key:"add",value:function(t){var e=this,i=O(t).map(function(t){return new _(t)});this._initItems(i),this._resetCols();var n=T(this._mergeNewItems(i),this.lastSort),s=this._filter(this.lastFilter,n),o=function(t){return i.includes(t)},r=function(t){t.scale=_.Scale.HIDDEN,t.isHidden=!0,t.applyCss(_.Css.HIDDEN.before),t.applyCss(_.Css.HIDDEN.after)},l=this._getNextPositions(s.visible);s.visible.forEach(function(t,i){o(t)&&(t.point=l[i],r(t),t.applyCss(e.getStylesForTransition(t,{})))}),s.hidden.forEach(function(t){o(t)&&r(t)}),this.element.offsetWidth,this.setItemTransitions(i),this.items=this._mergeNewItems(i),this.filter(this.lastFilter)}},{key:"disable",value:function(){this.isEnabled=!1}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isEnabled=!0,t&&this.update()}},{key:"remove",value:function(t){var e=this;if(t.length){var i=O(t),n=i.map(function(t){return e.getItemByElement(t)}).filter(function(t){return!!t});this._toggleFilterClasses({visible:[],hidden:n}),this._shrink(n),this.sort(),this.items=this.items.filter(function(t){return!n.includes(t)}),this._updateItemCount(),this.once(r.EventType.LAYOUT,function(){e._disposeItems(n),i.forEach(function(t){t.parentNode.removeChild(t)}),e._dispatch(r.EventType.REMOVED,{collection:i})})}}},{key:"getItemByElement",value:function(t){return this.items.find(function(e){return e.element===t})}},{key:"resetItems",value:function(){var t=this;this._disposeItems(this.items),this.isInitialized=!1,this.items=this._getItems(),this._initItems(this.items),this.once(r.EventType.LAYOUT,function(){t.setItemTransitions(t.items),t.isInitialized=!0}),this.filter(this.lastFilter)}},{key:"destroy",value:function(){this._cancelMovement(),window.removeEventListener("resize",this._onResize),this.element.classList.remove("shuffle"),this.element.removeAttribute("style"),this._disposeItems(this.items),this.items.length=0,this._transitions.length=0,this.options.sizer=null,this.element=null,this.isDestroyed=!0,this.isEnabled=!1}}],[{key:"getSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=window.getComputedStyle(t,null),n=b(t,"width",i),s=b(t,"height",i);if(e){var o=b(t,"marginLeft",i),r=b(t,"marginRight",i),l=b(t,"marginTop",i),a=b(t,"marginBottom",i);n+=o+r,s+=l+a}return{width:n,height:s}}},{key:"_skipTransitions",value:function(t,e){var i=t.map(function(t){var e=t.style,i=e.transitionDuration,n=e.transitionDelay;return e.transitionDuration="0ms",e.transitionDelay="0ms",{duration:i,delay:n}});e(),t[0].offsetWidth,t.forEach(function(t,e){t.style.transitionDuration=i[e].duration,t.style.transitionDelay=i[e].delay})}}]),r}();return H.ShuffleItem=_,H.ALL_ITEMS="all",H.FILTER_ATTRIBUTE_KEY="groups",H.EventType={LAYOUT:"shuffle:layout",REMOVED:"shuffle:removed"},H.Classes=y,H.FilterMode={ANY:"any",ALL:"all"},H.options={group:H.ALL_ITEMS,speed:250,easing:"cubic-bezier(0.4, 0.0, 0.2, 1)",itemSelector:"*",sizer:null,gutterWidth:0,columnWidth:0,delimiter:null,buffer:0,columnThreshold:.01,initialSort:null,throttle:c,throttleTime:300,staggerAmount:15,staggerAmountMax:150,useTransforms:!0,filterMode:H.FilterMode.ANY,isCentered:!1,roundTransforms:!0},H.Point=p,H.Rect=v,H.__sorter=T,H.__getColumnSpan=M,H.__getAvailablePositions=A,H.__getShortColumn=F,H.__getCenteredPositions=x,H});
//# sourceMappingURL=shuffle.min.js.map


js/chart.min.js000064400000462061151526520750007422 0ustar00/*!
 * Chart.js v2.8.0
 * https://www.chartjs.org
 * (c) 2019 Chart.js Contributors
 * Released under the MIT License
 */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],function(t){return e(function(){try{return t("moment")}catch(t){}}())}):t.Chart=e(t.moment)}(this,function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:i,rgb2hsv:n,rgb2hwb:a,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:l,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:u,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return a(u(t))},hsl2cmyk:function(t){return o(u(t))},hsl2keyword:function(t){return s(u(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return a(h(t))},hsv2cmyk:function(t){return o(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:c,hwb2hsl:function(t){return i(c(t))},hwb2hsv:function(t){return n(c(t))},hwb2cmyk:function(t){return o(c(t))},hwb2keyword:function(t){return s(c(t))},cmyk2rgb:f,cmyk2hsl:function(t){return i(f(t))},cmyk2hsv:function(t){return n(f(t))},cmyk2hwb:function(t){return a(f(t))},cmyk2keyword:function(t){return s(f(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return n(w(t))},keyword2hwb:function(t){return a(w(t))},keyword2cmyk:function(t){return o(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return l(w(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return x(m(t))},lab2xyz:v,lab2rgb:y,lab2lch:x,lch2lab:k,lch2xyz:function(t){return v(k(t))},lch2rgb:function(t){return y(k(t))}};function i(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(r+s)/2,[e,100*(s==r?0:i<=.5?l/(s+r):l/(2-s-r)),100*i]}function n(t){var e,i,n=t[0],a=t[1],o=t[2],r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return i=0==s?0:l/s*1e3/10,s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function a(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function o(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function s(t){return _[JSON.stringify(t)]}function l(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=l(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function u(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var d=0;d<3;d++)(n=r+1/3*-(d-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[d]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function c(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,d=s+l;switch(d>1&&(s/=d,l/=d),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function f(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function m(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function v(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function y(t){return p(v(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},_={};for(var C in M)_[JSON.stringify(M[C])]=C;var S=function(){return new T};for(var P in e){S[P+"Raw"]=function(t){return function(i){return"number"==typeof i&&(i=Array.prototype.slice.call(arguments)),e[t](i)}}(P);var I=/(\w+)2(\w+)/.exec(P),A=I[1],D=I[2];(S[A]=S[A]||{})[D]=S[P]=function(t){return function(i){"number"==typeof i&&(i=Array.prototype.slice.call(arguments));var n=e[t](i);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(P)}var T=function(){this.convs={}};T.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},T.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},T.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=S[i][t](n),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){T.prototype[t]=function(e){return this.routeSpace(t,arguments)}});var F=S,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},R={getRgba:O,getHsla:z,getRgb:function(t){var e=O(t);return e&&e.slice(0,3)},getHsl:function(t){var e=z(t);return e&&e.slice(0,3)},getHwb:B,getAlpha:function(t){var e=O(t);if(e)return e[3];if(e=z(t))return e[3];if(e=B(t))return e[3]},hexString:function(t,e){var e=void 0!==e&&3===t.length?e:t[3];return"#"+H(t[0])+H(t[1])+H(t[2])+(e>=0&&e<1?H(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return N(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:N,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return W(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:W,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return V(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return j[t.slice(0,3)]}};function O(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(n){a=(n=n[1])[3];for(var o=0;o<e.length;o++)e[o]=parseInt(n[o]+n[o],16);a&&(i=Math.round(parseInt(a+a,16)/255*100)/100)}else if(n=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){a=n[2],n=n[1];for(o=0;o<e.length;o++)e[o]=parseInt(n.slice(2*o,2*o+2),16);a&&(i=Math.round(parseInt(a,16)/255*100)/100)}else if(n=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=parseInt(n[o+1]);i=parseFloat(n[4])}else if(n=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=Math.round(2.55*parseFloat(n[o+1]));i=parseFloat(n[4])}else if(n=t.match(/(\w+)/)){if("transparent"==n[1])return[0,0,0,0];if(!(e=L[n[1]]))return}for(o=0;o<e.length;o++)e[o]=E(e[o],0,255);return i=i||0==i?E(i,0,1):1,e[3]=i,e}}function z(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function B(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function N(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function W(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function V(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function E(t,e,i){return Math.min(Math.max(e,t),i)}function H(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var j={};for(var q in L)j[L[q]]=q;var Y=function(t){return t instanceof Y?t:this instanceof Y?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=R.getRgba(t))?this.setValues("rgb",e):(e=R.getHsla(t))?this.setValues("hsl",e):(e=R.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new Y(t);var e};Y.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return R.hexString(this.values.rgb)},rgbString:function(){return R.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return R.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return R.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return R.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return R.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return R.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return R.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=t,n=void 0===e?.5:e,a=2*n-1,o=this.alpha()-i.alpha(),r=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,s=1-r;return this.rgb(r*this.red()+s*i.red(),r*this.green()+s*i.green(),r*this.blue()+s*i.blue()).alpha(this.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new Y,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],"[object Array]"===(e={}.toString.call(t))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return i}},Y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Y.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},Y.prototype.setValues=function(t,e){var i,n,a=this.values,o=this.spaces,r=this.maxes,s=1;if(this.valid=!0,"alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)a[t][i]=e[t.charAt(i)];s=e.a}else if(void 0!==e[o[t][0]]){var l=o[t];for(i=0;i<t.length;i++)a[t][i]=e[l[i]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;for(i=0;i<t.length;i++)n=Math.max(0,Math.min(r[t][i],a[t][i])),a[t][i]=Math.round(n);for(var d in o)d!==t&&(a[d]=F[t][d](a[t]));return!0},Y.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},Y.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:i===n[e]?this:(n[e]=i,this.setValues(t,n),this)},"undefined"!=typeof window&&(window.Color=Y);var U,X=Y,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return K.valueOrDefault(K.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(K.isArray(t))if(o=t.length,n)for(a=o-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<o;a++)e.call(i,t[a],a);else if(K.isObject(t))for(o=(r=Object.keys(t)).length,a=0;a<o;a++)e.call(i,t[r[a]],r[a])},arrayEquals:function(t,e){var i,n,a,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(a=t[i],o=e[i],a instanceof Array&&o instanceof Array){if(!K.arrayEquals(a,o))return!1}else if(a!==o)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,a=0;a<n;++a)e[i[a]]=K.clone(t[i[a]]);return e}return t},_merger:function(t,e,i,n){var a=e[t],o=i[t];K.isObject(a)&&K.isObject(o)?K.merge(a,o,n):e[t]=K.clone(o)},_mergerIf:function(t,e,i){var n=e[t],a=i[t];K.isObject(n)&&K.isObject(a)?K.mergeIf(n,a):e.hasOwnProperty(t)||(e[t]=K.clone(a))},merge:function(t,e,i){var n,a,o,r,s,l=K.isArray(e)?e:[e],d=l.length;if(!K.isObject(t))return t;for(n=(i=i||{}).merger||K._merger,a=0;a<d;++a)if(e=l[a],K.isObject(e))for(s=0,r=(o=Object.keys(e)).length;s<r;++s)n(o[s],t,e,i);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,i){t[i]=e},i=1,n=arguments.length;i<n;++i)K.each(arguments[i],e);return t},inherits:function(t){var e=this,i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=K.inherits,t&&K.extend(i.prototype,t),i.__super__=e.prototype,i}},G=K;K.callCallback=K.callback,K.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var Z={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},$={effects:Z};G.easingEffects=Z;var J=Math.PI,Q=J/180,tt=2*J,et=J/2,it=J/4,nt=2*J/3,at={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2,n/2),s=e+r,l=i+r,d=e+n-r,u=i+a-r;t.moveTo(e,l),s<d&&l<u?(t.arc(s,l,r,-J,-et),t.arc(d,l,r,-et,0),t.arc(d,u,r,0,et),t.arc(s,u,r,et,J)):s<d?(t.moveTo(s,i),t.arc(d,l,r,-et,et),t.arc(s,l,r,et,J+et)):l<u?(t.arc(s,l,r,-J,0),t.arc(s,u,r,0,J)):t.arc(s,l,r,-J,J),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,d,u,h=(o||0)*Q;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.beginPath(),e){default:t.arc(n,a,i,0,tt),t.closePath();break;case"triangle":t.moveTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),t.closePath();break;case"rectRounded":d=i-(u=.516*i),s=Math.cos(h+it)*d,l=Math.sin(h+it)*d,t.arc(n-s,a-l,u,h-J,h-et),t.arc(n+l,a-s,u,h-et,h),t.arc(n+s,a+l,u,h,h+et),t.arc(n-l,a+s,u,h+et,h+J),t.closePath();break;case"rect":if(!o){d=Math.SQRT1_2*i,t.rect(n-d,a-d,2*d,2*d);break}h+=it;case"rectRot":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+l,a-s),t.lineTo(n+s,a+l),t.lineTo(n-l,a+s),t.closePath();break;case"crossRot":h+=it;case"cross":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"star":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s),h+=it,s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"line":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l);break;case"dash":t.moveTo(n,a),t.lineTo(n+Math.cos(h)*i,a+Math.sin(h)*i)}t.fill(),t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){var a=i.steppedLine;if(a){if("middle"===a){var o=(e.x+i.x)/2;t.lineTo(o,n?i.y:e.y),t.lineTo(o,n?e.y:i.y)}else"after"===a&&!n||"after"!==a&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}else i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}},ot=at;G.clear=at.clear,G.drawRoundedRectangle=function(t){t.beginPath(),at.roundedRect.apply(at,arguments)};var rt={_set:function(t,e){return G.merge(this[t]||(this[t]={}),e)}};rt._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var st=rt,lt=G.valueOrDefault;var dt={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,n,a;return G.isObject(t)?(e=+t.top||0,i=+t.right||0,n=+t.bottom||0,a=+t.left||0):e=i=n=a=+t||0,{top:e,right:i,bottom:n,left:a,height:e+n,width:a+i}},_parseFont:function(t){var e=st.global,i=lt(t.fontSize,e.defaultFontSize),n={family:lt(t.fontFamily,e.defaultFontFamily),lineHeight:G.options.toLineHeight(lt(t.lineHeight,e.defaultLineHeight),i),size:i,style:lt(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return n.string=function(t){return!t||G.isNullOrUndef(t.size)||G.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n},resolve:function(t,e,i){var n,a,o;for(n=0,a=t.length;n<a;++n)if(void 0!==(o=t[n])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==i&&G.isArray(o)&&(o=o[i]),void 0!==o))return o}},ut=G,ht=$,ct=ot,ft=dt;ut.easing=ht,ut.canvas=ct,ut.options=ft;var gt=function(t){ut.extend(this,t),this.initialize.apply(this,arguments)};ut.extend(gt.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=ut.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,n=e._start,a=e._view;return i&&1!==t?(a||(a=e._view={}),n||(n=e._start={}),function(t,e,i,n){var a,o,r,s,l,d,u,h,c,f=Object.keys(i);for(a=0,o=f.length;a<o;++a)if(d=i[r=f[a]],e.hasOwnProperty(r)||(e[r]=d),(s=e[r])!==d&&"_"!==r[0]){if(t.hasOwnProperty(r)||(t[r]=s),(u=typeof d)==typeof(l=t[r]))if("string"===u){if((h=X(l)).valid&&(c=X(d)).valid){e[r]=c.mix(h,n).rgbString();continue}}else if(ut.isFinite(l)&&ut.isFinite(d)){e[r]=l+(d-l)*n;continue}e[r]=d}}(n,a,i,t),e):(e._view=i,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return ut.isNumber(this._model.x)&&ut.isNumber(this._model.y)}}),gt.extend=ut.inherits;var pt=gt,mt=pt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),vt=mt;Object.defineProperty(mt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(mt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),st._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:ut.noop,onComplete:ut.noop}});var bt={animations:[],request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=i,n||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=ut.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=ut.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,i,n,a=this.animations,o=0;o<a.length;)e=(t=a[o]).chart,i=t.numSteps,n=Math.floor((Date.now()-t.startTime)/t.duration*i)+1,t.currentStep=Math.min(n,i),ut.callback(t.render,[e,t],e),ut.callback(t.onAnimationProgress,[t],e),t.currentStep>=i?(ut.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(o,1)):++o}},xt=ut.options.resolve,yt=["push","pop","shift","splice","unshift"];function kt(t,e){var i=t._chartjs;if(i){var n=i.listeners,a=n.indexOf(e);-1!==a&&n.splice(a,1),n.length>0||(yt.forEach(function(e){delete t[e]}),delete t._chartjs)}}var wt=function(t,e){this.initialize(t,e)};ut.extend(wt.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&kt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,i=this,n=i.getDataset(),a=n.data||(n.data=[]);i._data!==a&&(i._data&&kt(i._data,i),a&&Object.isExtensible(a)&&(e=i,(t=a)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),yt.forEach(function(e){var i="onData"+e.charAt(0).toUpperCase()+e.slice(1),n=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),a=n.apply(this,e);return ut.each(t._chartjs.listeners,function(t){"function"==typeof t[i]&&t[i].apply(t,e)}),a}})}))),i._data=a),i.resyncElements()},update:ut.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t){ut.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model,o=ut.getHoverColor;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth},a.backgroundColor=xt([n.hoverBackgroundColor,e.hoverBackgroundColor,o(a.backgroundColor)],void 0,i),a.borderColor=xt([n.hoverBorderColor,e.hoverBorderColor,o(a.borderColor)],void 0,i),a.borderWidth=xt([n.hoverBorderWidth,e.hoverBorderWidth,a.borderWidth],void 0,i)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):n>i&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),wt.extend=ut.inherits;var Mt=wt;st._set("global",{elements:{arc:{backgroundColor:st.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var _t=pt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=ut.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,r=i.startAngle,s=i.endAngle;s<r;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<r;)a+=2*Math.PI;var l=a>=r&&a<=s,d=o>=i.innerRadius&&o<=i.outerRadius;return l&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t,e=this._chart.ctx,i=this._view,n=i.startAngle,a=i.endAngle,o="inner"===i.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(i.x,i.y,Math.max(i.outerRadius-o,0),n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.fillStyle=i.backgroundColor,e.fill(),i.borderWidth&&("inner"===i.borderAlign?(e.beginPath(),t=o/i.outerRadius,e.arc(i.x,i.y,i.outerRadius,n-t,a+t),i.innerRadius>o?(t=o/i.innerRadius,e.arc(i.x,i.y,i.innerRadius-o,a+t,n-t,!0)):e.arc(i.x,i.y,o,a+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(i.x,i.y,i.outerRadius,n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.lineWidth=2*i.borderWidth,e.lineJoin="round"):(e.lineWidth=i.borderWidth,e.lineJoin="bevel"),e.strokeStyle=i.borderColor,e.stroke()),e.restore()}}),Ct=ut.valueOrDefault,St=st.global.defaultColor;st._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Pt=pt.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=st.global,d=l.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||d.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||d.borderDash),o.lineDashOffset=Ct(a.borderDashOffset,d.borderDashOffset),o.lineJoin=a.borderJoinStyle||d.borderJoinStyle,o.lineWidth=Ct(a.borderWidth,d.borderWidth),o.strokeStyle=a.borderColor||l.defaultColor,o.beginPath(),u=-1,t=0;t<s.length;++t)e=s[t],i=ut.previousItem(s,t),n=e._view,0===t?n.skip||(o.moveTo(n.x,n.y),u=t):(i=-1===u?i:s[u],n.skip||(u!==t-1&&!r||-1===u?o.moveTo(n.x,n.y):ut.canvas.lineTo(o,i._view,e._view),u=t));o.stroke(),o.restore()}}),It=ut.valueOrDefault,At=st.global.defaultColor;function Dt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}st._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:At,borderColor:At,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var Tt=pt.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:Dt,inXRange:Dt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._chart.ctx,n=e.pointStyle,a=e.rotation,o=e.radius,r=e.x,s=e.y,l=st.global,d=l.defaultColor;e.skip||(void 0===t||ut.canvas._isPointInArea(e,t))&&(i.strokeStyle=e.borderColor||d,i.lineWidth=It(e.borderWidth,l.elements.point.borderWidth),i.fillStyle=e.backgroundColor||d,ut.canvas.drawPoint(i,n,o,r,s,a))}}),Ft=st.global.defaultColor;function Lt(t){return t&&void 0!==t.width}function Rt(t){var e,i,n,a,o;return Lt(t)?(o=t.width/2,e=t.x-o,i=t.x+o,n=Math.min(t.y,t.base),a=Math.max(t.y,t.base)):(o=t.height/2,e=Math.min(t.x,t.base),i=Math.max(t.x,t.base),n=t.y-o,a=t.y+o),{left:e,top:n,right:i,bottom:a}}function Ot(t,e,i){return t===e?i:t===i?e:t}function zt(t,e,i){var n,a,o,r,s=t.borderWidth,l=function(t){var e=t.borderSkipped,i={};return e?(t.horizontal?t.base>t.x&&(e=Ot(e,"left","right")):t.base<t.y&&(e=Ot(e,"bottom","top")),i[e]=!0,i):i}(t);return ut.isObject(s)?(n=+s.top||0,a=+s.right||0,o=+s.bottom||0,r=+s.left||0):n=a=o=r=+s||0,{t:l.top||n<0?0:n>i?i:n,r:l.right||a<0?0:a>e?e:a,b:l.bottom||o<0?0:o>i?i:o,l:l.left||r<0?0:r>e?e:r}}function Bt(t,e,i){var n=null===e,a=null===i,o=!(!t||n&&a)&&Rt(t);return o&&(n||e>=o.left&&e<=o.right)&&(a||i>=o.top&&i<=o.bottom)}st._set("global",{elements:{rectangle:{backgroundColor:Ft,borderColor:Ft,borderSkipped:"bottom",borderWidth:0}}});var Nt=pt.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=function(t){var e=Rt(t),i=e.right-e.left,n=e.bottom-e.top,a=zt(t,i/2,n/2);return{outer:{x:e.left,y:e.top,w:i,h:n},inner:{x:e.left+a.l,y:e.top+a.t,w:i-a.l-a.r,h:n-a.t-a.b}}}(e),n=i.outer,a=i.inner;t.fillStyle=e.backgroundColor,t.fillRect(n.x,n.y,n.w,n.h),n.w===a.w&&n.h===a.h||(t.save(),t.beginPath(),t.rect(n.x,n.y,n.w,n.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Bt(this._view,t,e)},inLabelRange:function(t,e){var i=this._view;return Lt(i)?Bt(i,t,null):Bt(i,null,e)},inXRange:function(t){return Bt(this._view,t,null)},inYRange:function(t){return Bt(this._view,null,t)},getCenterPoint:function(){var t,e,i=this._view;return Lt(i)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return Lt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),Wt={},Vt=_t,Et=Pt,Ht=Tt,jt=Nt;Wt.Arc=Vt,Wt.Line=Et,Wt.Point=Ht,Wt.Rectangle=jt;var qt=ut.options.resolve;st._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Yt=Mt.extend({dataElementType:Wt.Rectangle,initialize:function(){var t;Mt.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=n.getDataset(),r=n._resolveElementOptions(t,e);t._xScale=n.getScaleForId(a.xAxisID),t._yScale=n.getScaleForId(a.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderSkipped:r.borderSkipped,borderWidth:r.borderWidth,datasetLabel:o.label,label:n.chart.data.labels[e]},n._updateElementGeometry(t,e,i),t.pivot()},_updateElementGeometry:function(t,e,i){var n=this,a=t._model,o=n._getValueScale(),r=o.getBasePixel(),s=o.isHorizontal(),l=n._ruler||n.getRuler(),d=n.calculateBarValuePixels(n.index,e),u=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?r:d.base,a.x=s?i?r:d.head:u.center,a.y=s?u.center:i?r:d.head,a.height=s?u.size:void 0,a.width=s?void 0:u.size},_getStacks:function(t){var e,i,n=this.chart,a=this._getIndexScale().options.stacked,o=void 0===t?n.data.datasets.length:t+1,r=[];for(e=0;e<o;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===r.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===r.indexOf(i.stack)))&&r.push(i.stack);return r},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this._getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),r=o?i.left:i.top,s=r+(o?i.width:i.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(i.getPixelForValue(null,t,a));return{min:ut.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,o,r=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,o=e.length;a<o;++a)r=Math.min(r,Math.abs(e[a]-e[a-1]));for(a=0,o=s.length;a<o;++a)n=t.getPixelForTick(a),r=a>0?Math.min(r,n-i):r,i=n;return r}(i,l):-1,pixels:l,start:r,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,d=this.getMeta(),u=this._getValueScale(),h=u.isHorizontal(),c=l.data.datasets,f=+u.getRightValue(c[t].data[e]),g=u.options.minBarLength,p=u.options.stacked,m=d.stack,v=0;if(p||void 0===p&&void 0!==m)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===m&&n.controller._getValueScaleId()===u.id&&l.isDatasetVisible(i)&&(a=+u.getRightValue(c[i].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=u.getPixelForValue(v),s=(r=u.getPixelForValue(v+f))-o,void 0!==g&&Math.abs(s)<g&&(s=g,r=f>=0&&!h||f<0&&h?o-g:o+g),{size:s,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n=i.scale.options,a="flex"===n.barThickness?function(t,e,i){var n,a=e.pixels,o=a[t],r=t>0?a[t-1]:null,s=t<a.length-1?a[t+1]:null,l=i.categoryPercentage;return null===r&&(r=o-(null===s?e.end-e.start:s-o)),null===s&&(s=o+o-r),n=o-(o-Math.min(r,s))/2*l,{chunk:Math.abs(s-r)/2*l/e.stackCount,ratio:i.barPercentage,start:n}}(e,i,n):function(t,e,i){var n,a,o=i.barThickness,r=e.stackCount,s=e.pixels[t];return ut.isNullOrUndef(o)?(n=e.min*i.categoryPercentage,a=i.barPercentage):(n=o*r,a=1),{chunk:n/r,ratio:a,start:s-n/2}}(e,i,n),o=this.getStackIndex(t,this.getMeta().stack),r=a.start+a.chunk*o+a.chunk/2,s=Math.min(ut.valueOrDefault(n.maxBarThickness,1/0),a.chunk*a.ratio);return{base:r-s/2,head:r+s/2,center:r,size:s}},draw:function(){var t=this.chart,e=this._getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(ut.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();ut.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.rectangle,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=qt([s[a],r[a],l[a]],u,e);return d}}),Ut=ut.valueOrDefault,Xt=ut.options.resolve;st._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",n=e.datasets[t.datasetIndex].data[t.index];return i+": ("+t.xLabel+", "+t.yLabel+", "+n.r+")"}}}});var Kt=Mt.extend({dataElementType:Wt.Point,update:function(t){var e=this,i=e.getMeta().data;ut.each(i,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=t.custom||{},r=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),d=n.getDataset().data[e],u=n.index,h=i?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof d?d:NaN,e,u),c=i?s.getBasePixel():s.getPixelForValue(d,e,u);t._xScale=r,t._yScale=s,t._options=l,t._datasetIndex=u,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:i?0:l.radius,skip:o.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Ut(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Ut(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Ut(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d=r.data[e],u={},h={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(i=0,n=c.length;i<n;++i)u[a=c[i]]=Xt([s[a],r[a],l[a]],h,e);return u.radius=Xt([s.radius,d?d.r:void 0,r.radius,l.radius],h,e),u}}),Gt=ut.options.resolve,Zt=ut.valueOrDefault;st._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n],s=r&&r.custom||{},l=t.options.elements.arc;return{text:i,fillStyle:Gt([s.backgroundColor,o.backgroundColor,l.backgroundColor],void 0,n),strokeStyle:Gt([s.borderColor,o.borderColor,l.borderColor],void 0,n),lineWidth:Gt([s.borderWidth,o.borderWidth,l.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.labels[t.index],n=": "+e.datasets[t.datasetIndex].data[t.index];return ut.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}});var $t=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var e,i,n=this,a=n.chart,o=a.chartArea,r=a.options,s=o.right-o.left,l=o.bottom-o.top,d=Math.min(s,l),u={x:0,y:0},h=n.getMeta(),c=h.data,f=r.cutoutPercentage,g=r.circumference,p=n._getRingWeight(n.index);if(g<2*Math.PI){var m=r.rotation%(2*Math.PI),v=(m+=2*Math.PI*(m>=Math.PI?-1:m<-Math.PI?1:0))+g,b={x:Math.cos(m),y:Math.sin(m)},x={x:Math.cos(v),y:Math.sin(v)},y=m<=0&&v>=0||m<=2*Math.PI&&2*Math.PI<=v,k=m<=.5*Math.PI&&.5*Math.PI<=v||m<=2.5*Math.PI&&2.5*Math.PI<=v,w=m<=-Math.PI&&-Math.PI<=v||m<=Math.PI&&Math.PI<=v,M=m<=.5*-Math.PI&&.5*-Math.PI<=v||m<=1.5*Math.PI&&1.5*Math.PI<=v,_=f/100,C={x:w?-1:Math.min(b.x*(b.x<0?1:_),x.x*(x.x<0?1:_)),y:M?-1:Math.min(b.y*(b.y<0?1:_),x.y*(x.y<0?1:_))},S={x:y?1:Math.max(b.x*(b.x>0?1:_),x.x*(x.x>0?1:_)),y:k?1:Math.max(b.y*(b.y>0?1:_),x.y*(x.y>0?1:_))},P={width:.5*(S.x-C.x),height:.5*(S.y-C.y)};d=Math.min(s/P.width,l/P.height),u={x:-.5*(S.x+C.x),y:-.5*(S.y+C.y)}}for(e=0,i=c.length;e<i;++e)c[e]._options=n._resolveElementOptions(c[e],e);for(a.borderWidth=n.getMaxBorderWidth(),a.outerRadius=Math.max((d-a.borderWidth)/2,0),a.innerRadius=Math.max(f?a.outerRadius/100*f:0,0),a.radiusLength=(a.outerRadius-a.innerRadius)/(n._getVisibleDatasetWeightTotal()||1),a.offsetX=u.x*a.outerRadius,a.offsetY=u.y*a.outerRadius,h.total=n.calculateTotal(),n.outerRadius=a.outerRadius-a.radiusLength*n._getRingWeightOffset(n.index),n.innerRadius=Math.max(n.outerRadius-a.radiusLength*p,0),e=0,i=c.length;e<i;++e)n.updateElement(c[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,r=a.options,s=r.animation,l=(o.left+o.right)/2,d=(o.top+o.bottom)/2,u=r.rotation,h=r.rotation,c=n.getDataset(),f=i&&s.animateRotate?0:t.hidden?0:n.calculateCircumference(c.data[e])*(r.circumference/(2*Math.PI)),g=i&&s.animateScale?0:n.innerRadius,p=i&&s.animateScale?0:n.outerRadius,m=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l+a.offsetX,y:d+a.offsetY,startAngle:u,endAngle:h,circumference:f,outerRadius:p,innerRadius:g,label:ut.valueAtIndexOrDefault(c.label,e,a.data.labels[e])}});var v=t._model;i&&s.animateRotate||(v.startAngle=0===e?r.rotation:n.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return ut.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,i,n,a,o,r,s,l,d=0,u=this.chart;if(!t)for(e=0,i=u.data.datasets.length;e<i;++e)if(u.isDatasetVisible(e)){t=(n=u.getDatasetMeta(e)).data,e!==this.index&&(o=n.controller);break}if(!t)return 0;for(e=0,i=t.length;e<i;++e)a=t[e],"inner"!==(r=o?o._resolveElementOptions(a,e):a._options).borderAlign&&(s=r.borderWidth,d=(l=r.hoverBorderWidth)>(d=s>d?s:d)?l:d);return d},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Zt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Zt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Zt(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=Gt([s[a],r[a],l[a]],u,e);return d},_getRingWeightOffset:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e},_getRingWeight:function(t){return Math.max(Zt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});st._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var Jt=Yt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Qt=ut.valueOrDefault,te=ut.options.resolve,ee=ut.canvas._isPointInArea;function ie(t,e){return Qt(t.showLine,e.showLines)}st._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var ne=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.getScaleForId(a.yAxisID),l=n.getDataset(),d=ie(l,n.chart.options);for(d&&(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._model=n._resolveLineOptions(o),o.pivot()),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(d&&0!==o._model.tension&&n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n,a,o=this,r=o.getMeta(),s=t.custom||{},l=o.getDataset(),d=o.index,u=l.data[e],h=o.getScaleForId(r.yAxisID),c=o.getScaleForId(r.xAxisID),f=r.dataset._model,g=o._resolvePointOptions(t,e);n=c.getPixelForValue("object"==typeof u?u:NaN,e,d),a=i?h.getBasePixel():o.calculatePointY(u,e,d),t._xScale=c,t._yScale=h,t._options=g,t._datasetIndex=d,t._index=e,t._model={x:n,y:a,skip:s.skip||isNaN(n)||isNaN(a),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Qt(s.tension,f?f.tension:0),steppedLine:!!f&&f.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=te([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options,l=s.elements.line,d={},u=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,i=u.length;e<i;++e)d[n=u[e]]=te([r[n],o[n],l[n]]);return d.spanGaps=Qt(o.spanGaps,s.spanGaps),d.tension=Qt(o.lineTension,l.tension),d.steppedLine=te([r.steppedLine,o.steppedLine,l.stepped]),d},calculatePointY:function(t,e,i){var n,a,o,r=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),d=0,u=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=r.data.datasets[n],"line"===(o=r.getDatasetMeta(n)).type&&o.yAxisID===l.id&&r.isDatasetVisible(n)){var h=Number(l.getRightValue(a.data[e]));h<0?u+=h||0:d+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(u+c):l.getPixelForValue(d+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.chart,o=this.getMeta(),r=o.dataset._model,s=a.chartArea,l=o.data||[];function d(t,e,i){return Math.max(Math.min(t,i),e)}if(r.spanGaps&&(l=l.filter(function(t){return!t._model.skip})),"monotone"===r.cubicInterpolationMode)ut.splineCurveMonotone(l);else for(t=0,e=l.length;t<e;++t)i=l[t]._model,n=ut.splineCurve(ut.previousItem(l,t)._model,i,ut.nextItem(l,t)._model,r.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(a.options.elements.line.capBezierPoints)for(t=0,e=l.length;t<e;++t)i=l[t]._model,ee(i,s)&&(t>0&&ee(l[t-1]._model,s)&&(i.controlPointPreviousX=d(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=d(i.controlPointPreviousY,s.top,s.bottom)),t<l.length-1&&ee(l[t+1]._model,s)&&(i.controlPointNextX=d(i.controlPointNextX,s.left,s.right),i.controlPointNextY=d(i.controlPointNextY,s.top,s.bottom)))},draw:function(){var t,e=this.chart,i=this.getMeta(),n=i.data||[],a=e.chartArea,o=n.length,r=0;for(ie(this.getDataset(),e.options)&&(t=(i.dataset._model.borderWidth||0)/2,ut.canvas.clipArea(e.ctx,{left:a.left,right:a.right,top:a.top-t,bottom:a.bottom+t}),i.dataset.draw(),ut.canvas.unclipArea(e.ctx));r<o;++r)n[r].draw(a)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Qt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Qt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Qt(i.hoverBorderWidth,i.borderWidth),e.radius=Qt(i.hoverRadius,i.radius)}}),ae=ut.options.resolve;st._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n].custom||{},s=t.options.elements.arc;return{text:i,fillStyle:ae([r.backgroundColor,o.backgroundColor,s.backgroundColor],void 0,n),strokeStyle:ae([r.borderColor,o.borderColor,s.borderColor],void 0,n),lineWidth:ae([r.borderWidth,o.borderWidth,s.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var oe=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,update:function(t){var e,i,n,a=this,o=a.getDataset(),r=a.getMeta(),s=a.chart.options.startAngle||0,l=a._starts=[],d=a._angles=[],u=r.data;for(a._updateRadius(),r.count=a.countVisibleElements(),e=0,i=o.data.length;e<i;e++)l[e]=s,n=a._computeAngle(e),d[e]=n,s+=n;for(e=0,i=u.length;e<i;++e)u[e]._options=a._resolveElementOptions(u[e],e),a.updateElement(u[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,i=e.chartArea,n=e.options,a=Math.min(i.right-i.left,i.bottom-i.top);e.outerRadius=Math.max(a/2,0),e.innerRadius=Math.max(n.cutoutPercentage?e.outerRadius/100*n.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getDataset(),r=a.options,s=r.animation,l=a.scale,d=a.data.labels,u=l.xCenter,h=l.yCenter,c=r.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(o.data[e]),g=n._starts[e],p=g+(t.hidden?0:n._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(o.data[e]),v=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_scale:l,_model:{backgroundColor:v.backgroundColor,borderColor:v.borderColor,borderWidth:v.borderWidth,borderAlign:v.borderAlign,x:u,y:h,innerRadius:0,outerRadius:i?m:f,startAngle:i&&s.animateRotate?c:g,endAngle:i&&s.animateRotate?c:p,label:ut.valueAtIndexOrDefault(d,e,d[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),i=0;return ut.each(e.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor,a=ut.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=a(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=a(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=a(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=ae([s[a],r[a],l[a]],u,e);return d},_computeAngle:function(t){var e=this,i=this.getMeta().count,n=e.getDataset(),a=e.getMeta();if(isNaN(n.data[t])||a.data[t].hidden)return 0;var o={chart:e.chart,dataIndex:t,dataset:n,datasetIndex:e.index};return ae([e.chart.options.elements.arc.angle,2*Math.PI/i],o,t)}});st._set("pie",ut.clone(st.doughnut)),st._set("pie",{cutoutPercentage:0});var re=$t,se=ut.valueOrDefault,le=ut.options.resolve;st._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var de=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,linkScales:ut.noop,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.chart.scale,l=n.getDataset();for(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._loop=!0,o._model=n._resolveLineOptions(o),o.pivot(),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),r=n.chart.scale,s=r.getPointPositionForValue(e,o.data[e]),l=n._resolvePointOptions(t,e),d=n.getMeta().dataset._model,u=i?r.xCenter:s.x,h=i?r.yCenter:s.y;t._scale=r,t._options=l,t._datasetIndex=n.index,t._index=e,t._model={x:u,y:h,skip:a.skip||isNaN(u)||isNaN(h),radius:l.radius,pointStyle:l.pointStyle,rotation:l.rotation,backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,tension:se(a.tension,d?d.tension:0),hitRadius:l.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=le([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,i=d.length;e<i;++e)l[n=d[e]]=le([r[n],o[n],s[n]]);return l.tension=se(o.lineTension,s.tension),l},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,r=a.data||[];function s(t,e,i){return Math.max(Math.min(t,i),e)}for(t=0,e=r.length;t<e;++t)i=r[t]._model,n=ut.splineCurve(ut.previousItem(r,t,!0)._model,i,ut.nextItem(r,t,!0)._model,i.tension),i.controlPointPreviousX=s(n.previous.x,o.left,o.right),i.controlPointPreviousY=s(n.previous.y,o.top,o.bottom),i.controlPointNextX=s(n.next.x,o.left,o.right),i.controlPointNextY=s(n.next.y,o.top,o.bottom)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=se(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=se(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=se(i.hoverBorderWidth,i.borderWidth),e.radius=se(i.hoverRadius,i.radius)}});st._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var ue={bar:Yt,bubble:Kt,doughnut:$t,horizontalBar:Jt,line:ne,polarArea:oe,pie:re,radar:de,scatter:ne};function he(t,e){return t.native?{x:t.x,y:t.y}:ut.getRelativePosition(t,e)}function ce(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n<o;++n)if(t.isDatasetVisible(n))for(a=0,r=(i=t.getDatasetMeta(n)).data.length;a<r;++a){var s=i.data[a];s._view.skip||e(s)}}function fe(t,e){var i=[];return ce(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function ge(t,e,i,n){var a=Number.POSITIVE_INFINITY,o=[];return ce(t,function(t){if(!i||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=n(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function pe(t){var e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,n){var a=e?Math.abs(t.x-n.x):0,o=i?Math.abs(t.y-n.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function me(t,e,i){var n=he(e,t);i.axis=i.axis||"x";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a),r=[];return o.length?(t.data.datasets.forEach(function(e,i){if(t.isDatasetVisible(i)){var n=t.getDatasetMeta(i).data[o[0]._index];n&&!n._view.skip&&r.push(n)}}),r):[]}var ve={modes:{single:function(t,e){var i=he(e,t),n=[];return ce(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:me,index:me,dataset:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a);return o.length>0&&(o=t.getDatasetMeta(o[0]._datasetIndex).data),o},"x-axis":function(t,e){return me(t,e,{intersect:!1})},point:function(t,e){return fe(t,he(e,t))},nearest:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis);return ge(t,n,i.intersect,a)},x:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a},y:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a}}};function be(t,e){return ut.where(t,function(t){return t.position===e})}function xe(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}function ye(t,e){ut.each(t,function(t){e[t.position]+=t.isHorizontal()?t.height:t.width})}st._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ke={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)n=a[r],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(t,e,i){if(t){var n=t.options.layout||{},a=ut.options.toPadding(n.padding),o=a.left,r=a.right,s=a.top,l=a.bottom,d=be(t.boxes,"left"),u=be(t.boxes,"right"),h=be(t.boxes,"top"),c=be(t.boxes,"bottom"),f=be(t.boxes,"chartArea");xe(d,!0),xe(u,!1),xe(h,!0),xe(c,!1);var g,p=d.concat(u),m=h.concat(c),v=p.concat(m),b=e-o-r,x=i-s-l,y=(e-b/2)/p.length,k=b,w=x,M={top:s,left:o,bottom:l,right:r},_=[];ut.each(v,function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?b:k,x/2),w-=e.height):(e=t.update(y,w),k-=e.width),_.push({horizontal:i,width:e.width,box:t})}),g=function(t){var e=0,i=0,n=0,a=0;return ut.each(t,function(t){if(t.getPadding){var o=t.getPadding();e=Math.max(e,o.top),i=Math.max(i,o.left),n=Math.max(n,o.bottom),a=Math.max(a,o.right)}}),{top:e,left:i,bottom:n,right:a}}(v),ut.each(p,T),ye(p,M),ut.each(m,T),ye(m,M),ut.each(p,function(t){var e=ut.findNextWhere(_,function(e){return e.box===t}),i={left:0,right:0,top:M.top,bottom:M.bottom};e&&t.update(e.width,w,i)}),ye(v,M={top:s,left:o,bottom:l,right:r});var C=Math.max(g.left-M.left,0);M.left+=C,M.right+=Math.max(g.right-M.right,0);var S=Math.max(g.top-M.top,0);M.top+=S,M.bottom+=Math.max(g.bottom-M.bottom,0);var P=i-M.top-M.bottom,I=e-M.left-M.right;I===k&&P===w||(ut.each(p,function(t){t.height=P}),ut.each(m,function(t){t.fullWidth||(t.width=I)}),w=P,k=I);var A=o+C,D=s+S;ut.each(d.concat(h),F),A+=k,D+=w,ut.each(u,F),ut.each(c,F),t.chartArea={left:M.left,top:M.top,right:M.left+k,bottom:M.top+w},ut.each(f,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,w)})}function T(t){var e=ut.findNextWhere(_,function(e){return e.box===t});if(e)if(e.horizontal){var i={left:Math.max(M.left,g.left),right:Math.max(M.right,g.right),top:0,bottom:0};t.update(t.fullWidth?b:k,x/2,i)}else t.update(e.width,w)}function F(t){t.isHorizontal()?(t.left=t.fullWidth?o:M.left,t.right=t.fullWidth?e-r:M.left+k,t.top=D,t.bottom=D+t.height,D=t.bottom):(t.left=A,t.right=A+t.width,t.top=M.top,t.bottom=M.top+w,A=t.right)}}};var we,Me=(we=Object.freeze({default:"@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&we.default||we,_e="$chartjs",Ce="chartjs-size-monitor",Se="chartjs-render-monitor",Pe="chartjs-render-animation",Ie=["animationstart","webkitAnimationStart"],Ae={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function De(t,e){var i=ut.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var Te=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Fe(t,e,i){t.addEventListener(e,i,Te)}function Le(t,e,i){t.removeEventListener(e,i,Te)}function Re(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Oe(t){var e=document.createElement("div");return e.className=t||"",e}function ze(t,e,i){var n,a,o,r,s=t[_e]||(t[_e]={}),l=s.resizer=function(t){var e=Oe(Ce),i=Oe(Ce+"-expand"),n=Oe(Ce+"-shrink");i.appendChild(Oe()),n.appendChild(Oe()),e.appendChild(i),e.appendChild(n),e._reset=function(){i.scrollLeft=1e6,i.scrollTop=1e6,n.scrollLeft=1e6,n.scrollTop=1e6};var a=function(){e._reset(),t()};return Fe(i,"scroll",a.bind(i,"expand")),Fe(n,"scroll",a.bind(n,"shrink")),e}((n=function(){if(s.resizer){var n=i.options.maintainAspectRatio&&t.parentNode,a=n?n.clientWidth:0;e(Re("resize",i)),n&&n.clientWidth<a&&i.canvas&&e(Re("resize",i))}},o=!1,r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,ut.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));!function(t,e){var i=t[_e]||(t[_e]={}),n=i.renderProxy=function(t){t.animationName===Pe&&e()};ut.each(Ie,function(e){Fe(t,e,n)}),i.reflow=!!t.offsetParent,t.classList.add(Se)}(t,function(){if(s.resizer){var e=t.parentNode;e&&e!==l.parentNode&&e.insertBefore(l,e.firstChild),l._reset()}})}function Be(t){var e=t[_e]||{},i=e.resizer;delete e.resizer,function(t){var e=t[_e]||{},i=e.renderProxy;i&&(ut.each(Ie,function(e){Le(t,e,i)}),delete e.renderProxy),t.classList.remove(Se)}(t),i&&i.parentNode&&i.parentNode.removeChild(i)}var Ne={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){var t,e,i;this._loaded||(this._loaded=!0,this.disableCSSInjection||(e=Me,i=(t=this)._style||document.createElement("style"),t._style||(t._style=i,e="/* Chart.js */\n"+e,i.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[_e]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=De(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=De(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[_e]){var i=e[_e].initial;["height","width"].forEach(function(t){var n=i[t];ut.isNullOrUndef(n)?e.removeAttribute(t):e.setAttribute(t,n)}),ut.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[_e]}},addEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=i[_e]||(i[_e]={});Fe(n,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){i(function(t,e){var i=Ae[t.type]||t.type,n=ut.getRelativePosition(t,e);return Re(i,e,n.x,n.y,t)}(e,t))})}else ze(n,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[_e]||{}).proxies||{})[t.id+"_"+e];a&&Le(n,e,a)}else Be(n)}};ut.addEvent=Fe,ut.removeEvent=Le;var We=Ne._enabled?Ne:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}},Ve=ut.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},We);st._set("global",{plugins:{}});var Ee={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,o,r,s,l=this.descriptors(t),d=l.length;for(n=0;n<d;++n)if("function"==typeof(s=(o=(a=l[n]).plugin)[e])&&((r=[t].concat(i||[])).push(a.options),!1===s.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],n=[],a=t&&t.config||{},o=a.options&&a.options.plugins||{};return this._plugins.concat(a.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,a=o[e];!1!==a&&(!0===a&&(a=ut.clone(st.global.plugins[e])),i.push(t),n.push({plugin:t,options:a||{}}))}}),e.descriptors=n,e.id=this._cacheId,n},_invalidate:function(t){delete t.$plugins}},He={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=ut.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?ut.merge({},[st.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=ut.extend(this.defaults[t],e))},addScalesToLayout:function(t){ut.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ke.addBox(t,e)})}},je=ut.valueOrDefault;st._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:ut.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(t.length>0){var o=t[0];o.label?i=o.label:o.xLabel?i=o.xLabel:a>0&&o.index<a&&(i=n[o.index])}return i},afterTitle:ut.noop,beforeBody:ut.noop,beforeLabel:ut.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i&&(i+=": "),ut.isNullOrUndef(t.value)?i+=t.yLabel:i+=t.value,i},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:ut.noop,afterBody:ut.noop,beforeFooter:ut.noop,footer:ut.noop,afterFooter:ut.noop}}});var qe={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;e<i;++e){var r=t[e];if(r&&r.hasValue()){var s=r.tooltipPosition();n+=s.x,a+=s.y,++o}}return{x:n/o,y:a/o}},nearest:function(t,e){var i,n,a,o=e.x,r=e.y,s=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var l=t[i];if(l&&l.hasValue()){var d=l.getCenterPoint(),u=ut.distanceBetweenPoints(e,d);u<s&&(s=u,a=l)}}if(a){var h=a.tooltipPosition();o=h.x,r=h.y}return{x:o,y:r}}};function Ye(t,e){return e&&(ut.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Ue(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Xe(t){var e=st.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:je(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:je(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:je(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:je(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:je(t.titleFontStyle,e.defaultFontStyle),titleFontSize:je(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:je(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:je(t.footerFontStyle,e.defaultFontStyle),footerFontSize:je(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ke(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Ge(t){return Ye([],Ue(t))}var Ze=pt.extend({initialize:function(){this._model=Xe(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},getBeforeBody:function(){return Ge(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var i=this,n=i._options.callbacks,a=[];return ut.each(t,function(t){var o={before:[],lines:[],after:[]};Ye(o.before,Ue(n.beforeLabel.call(i,t,e))),Ye(o.lines,n.label.call(i,t,e)),Ye(o.after,Ue(n.afterLabel.call(i,t,e))),a.push(o)}),a},getAfterBody:function(){return Ge(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},update:function(t){var e,i,n,a,o,r,s,l,d,u,h=this,c=h._options,f=h._model,g=h._model=Xe(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var k=[],w=[];y=qe[c.position].call(h,p,h._eventPosition);var M=[];for(e=0,i=p.length;e<i;++e)M.push((n=p[e],a=void 0,o=void 0,r=void 0,s=void 0,l=void 0,d=void 0,u=void 0,a=n._xScale,o=n._yScale||n._scale,r=n._index,s=n._datasetIndex,l=n._chart.getDatasetMeta(s).controller,d=l._getIndexScale(),u=l._getValueScale(),{xLabel:a?a.getLabelForIndex(r,s):"",yLabel:o?o.getLabelForIndex(r,s):"",label:d?""+d.getLabelForIndex(r,s):"",value:u?""+u.getLabelForIndex(r,s):"",index:r,datasetIndex:s,x:n._model.x,y:n._model.y}));c.filter&&(M=M.filter(function(t){return c.filter(t,m)})),c.itemSort&&(M=M.sort(function(t,e){return c.itemSort(t,e,m)})),ut.each(M,function(t){k.push(c.callbacks.labelColor.call(h,t,h._chart)),w.push(c.callbacks.labelTextColor.call(h,t,h._chart))}),g.title=h.getTitle(M,m),g.beforeBody=h.getBeforeBody(M,m),g.body=h.getBody(M,m),g.afterBody=h.getAfterBody(M,m),g.footer=h.getFooter(M,m),g.x=y.x,g.y=y.y,g.caretPadding=c.caretPadding,g.labelColors=k,g.labelTextColors=w,g.dataPoints=M,x=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,d=e.titleFontSize,u=e.bodyFontSize,h=e.footerFontSize;n+=s*d,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*u,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*h,n+=l?(l-1)*e.footerSpacing:0;var c=0,f=function(t){a=Math.max(a,i.measureText(t).width+c)};return i.font=ut.fontString(d,e._titleFontStyle,e._titleFontFamily),ut.each(e.title,f),i.font=ut.fontString(u,e._bodyFontStyle,e._bodyFontFamily),ut.each(e.beforeBody.concat(e.afterBody),f),c=e.displayColors?u+2:0,ut.each(o,function(t){ut.each(t.before,f),ut.each(t.lines,f),ut.each(t.after,f)}),c=0,i.font=ut.fontString(h,e._footerFontStyle,e._footerFontFamily),ut.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,g),b=function(t,e,i,n){var a=t.x,o=t.y,r=t.caretSize,s=t.caretPadding,l=t.cornerRadius,d=i.xAlign,u=i.yAlign,h=r+s,c=l+s;return"right"===d?a-=e.width:"center"===d&&((a-=e.width/2)+e.width>n.width&&(a=n.width-e.width),a<0&&(a=0)),"top"===u?o+=h:o-="bottom"===u?e.height+h:e.height/2,"center"===u?"left"===d?a+=h:"right"===d&&(a-=h):"left"===d?a-=c:"right"===d&&(a+=c),{x:a,y:o}}(g,x,v=function(t,e){var i,n,a,o,r,s=t._model,l=t._chart,d=t._chart.chartArea,u="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(d.left+d.right)/2,f=(d.top+d.bottom)/2;"center"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(u="left",a(s.x)&&(u="center",h=r(s.y))):n(s.x)&&(u="right",o(s.x)&&(u="center",h=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:u,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,d=i.caretSize,u=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(n=f)-d,o=n,r=s+d,l=s-d):(a=(n=f+p)+d,o=n,r=s-d,l=s+d);else if("left"===h?(n=(a=f+u+d)-d,o=a+d):"right"===h?(n=(a=f+p-u-d)-d,o=a+d):(n=(a=i.caretX)-d,o=a+d),"top"===c)s=(r=g)-d,l=r;else{s=(r=g+m)+d,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i){var n=e.title;if(n.length){t.x=Ke(e,e._titleAlign),i.textAlign=e._titleAlign,i.textBaseline="top";var a,o,r=e.titleFontSize,s=e.titleSpacing;for(i.fillStyle=e.titleFontColor,i.font=ut.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0,o=n.length;a<o;++a)i.fillText(n[a],t.x,t.y),t.y+=r+s,a+1===n.length&&(t.y+=e.titleMarginBottom-s)}},drawBody:function(t,e,i){var n,a=e.bodyFontSize,o=e.bodySpacing,r=e._bodyAlign,s=e.body,l=e.displayColors,d=e.labelColors,u=0,h=l?Ke(e,"left"):0;i.textAlign=r,i.textBaseline="top",i.font=ut.fontString(a,e._bodyFontStyle,e._bodyFontFamily),t.x=Ke(e,r);var c=function(e){i.fillText(e,t.x+u,t.y),t.y+=a+o};i.fillStyle=e.bodyFontColor,ut.each(e.beforeBody,c),u=l&&"right"!==r?"center"===r?a/2+1:a+2:0,ut.each(s,function(o,r){n=e.labelTextColors[r],i.fillStyle=n,ut.each(o.before,c),ut.each(o.lines,function(o){l&&(i.fillStyle=e.legendColorBackground,i.fillRect(h,t.y,a,a),i.lineWidth=1,i.strokeStyle=d[r].borderColor,i.strokeRect(h,t.y,a,a),i.fillStyle=d[r].backgroundColor,i.fillRect(h+1,t.y+1,a-2,a-2),i.fillStyle=n),c(o)}),ut.each(o.after,c)}),u=0,ut.each(e.afterBody,c),t.y-=o},drawFooter:function(t,e,i){var n=e.footer;n.length&&(t.x=Ke(e,e._footerAlign),t.y+=e.footerMarginTop,i.textAlign=e._footerAlign,i.textBaseline="top",i.fillStyle=e.footerFontColor,i.font=ut.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),ut.each(n,function(n){i.fillText(n,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,i,n){i.fillStyle=e.backgroundColor,i.strokeStyle=e.borderColor,i.lineWidth=e.borderWidth;var a=e.xAlign,o=e.yAlign,r=t.x,s=t.y,l=n.width,d=n.height,u=e.cornerRadius;i.beginPath(),i.moveTo(r+u,s),"top"===o&&this.drawCaret(t,n),i.lineTo(r+l-u,s),i.quadraticCurveTo(r+l,s,r+l,s+u),"center"===o&&"right"===a&&this.drawCaret(t,n),i.lineTo(r+l,s+d-u),i.quadraticCurveTo(r+l,s+d,r+l-u,s+d),"bottom"===o&&this.drawCaret(t,n),i.lineTo(r+u,s+d),i.quadraticCurveTo(r,s+d,r,s+d-u),"center"===o&&"left"===a&&this.drawCaret(t,n),i.lineTo(r,s+u),i.quadraticCurveTo(r,s,r+u,s),i.closePath(),i.fill(),e.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(t.save(),t.globalAlpha=a,this.drawBackground(n,e,t,i),n.y+=e.yPadding,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),t.restore())}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!ut.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),$e=qe,Je=Ze;Je.positioners=$e;var Qe=ut.valueOrDefault;function ti(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,o,r,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a<s;++a)r=i[t][a],o=Qe(r.type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?ut.merge(e[t][a],[He.getScaleDefaults(o),r]):ut.merge(e[t][a],r)}else ut._merger(t,e,i,n)}})}function ei(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){var a=e[t]||{},o=i[t];"scales"===t?e[t]=ti(a,o):"scale"===t?e[t]=ut.merge(a,[He.getScaleDefaults(o.type),o]):ut._merger(t,e,i,n)}})}function ii(t){return"top"===t||"bottom"===t}st._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var ni=function(t,e){return this.construct(t,e),this};ut.extend(ni.prototype,{construct:function(t,e){var i=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ei(st.global,st[t.type],t.options||{}),t}(e);var n=Ve.acquireContext(t,e),a=n&&n.canvas,o=a&&a.height,r=a&&a.width;i.id=ut.uid(),i.ctx=n,i.canvas=a,i.config=e,i.width=r,i.height=o,i.aspectRatio=o?r/o:null,i.options=e.options,i._bufferedRender=!1,i.chart=i,i.controller=i,ni.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),n&&a?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Ee.notify(t,"beforeInit"),ut.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),Ee.notify(t,"afterInit"),t},clear:function(){return ut.canvas.clear(this),this},stop:function(){return bt.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(ut.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:ut.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",ut.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};Ee.notify(e,"resize",[s]),i.onResize&&i.onResize(e,s),e.stop(),e.update({duration:i.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;ut.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),ut.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,i=t.scales||{},n=[],a=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});e.scales&&(n=n.concat((e.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(e.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),e.scale&&n.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ut.each(n,function(e){var n=e.options,o=n.id,r=Qe(n.type,e.dtype);ii(n.position)!==ii(e.dposition)&&(n.position=e.dposition),a[o]=!0;var s=null;if(o in i&&i[o].type===r)(s=i[o]).options=n,s.ctx=t.ctx,s.chart=t;else{var l=He.getScaleConstructor(r);if(!l)return;s=new l({id:o,type:r,options:n,ctx:t.ctx,chart:t}),i[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)}),ut.each(a,function(t,e){t||delete i[e]}),t.scales=i,He.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return ut.each(t.data.datasets,function(i,n){var a=t.getDatasetMeta(n),o=i.type||t.config.type;if(a.type&&a.type!==o&&(t.destroyDatasetMeta(n),a=t.getDatasetMeta(n)),a.type=o,a.controller)a.controller.updateIndex(n),a.controller.linkScales();else{var r=ue[a.type];if(void 0===r)throw new Error('"'+a.type+'" is not a chart type.');a.controller=new r(t,n),e.push(a.controller)}},t),e},resetElements:function(){var t=this;ut.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,ut.each(e.scales,function(t){ke.removeBox(e,t)}),i=ei(st.global,st[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),Ee._invalidate(n),!1!==Ee.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();ut.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&ut.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],Ee.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==Ee.notify(this,"beforeLayout")&&(ke.update(this,this.width,this.height),Ee.notify(this,"afterScaleUpdate"),Ee.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==Ee.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);Ee.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==Ee.notify(this,"beforeDatasetUpdate",[i])&&(e.controller.update(),Ee.notify(this,"afterDatasetUpdate",[i]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var i=e.options.animation,n=Qe(t.duration,i&&i.duration),a=t.lazy;if(!1!==Ee.notify(e,"beforeRender")){var o=function(t){Ee.notify(e,"afterRender"),ut.callback(i&&i.onComplete,[t],e)};if(i&&n){var r=new vt({numSteps:n/16.66,easing:t.easing||i.easing,render:function(t,e){var i=ut.easing.effects[e.easing],n=e.currentStep,a=n/e.numSteps;t.draw(i(a),a,n)},onAnimationProgress:i.onProgress,onAnimationComplete:o});bt.addAnimation(e,r,n,a)}else e.draw(),o(new vt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),ut.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==Ee.notify(e,"beforeDraw",[t])&&(ut.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.drawDatasets(t),e._drawTooltip(t),Ee.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==Ee.notify(e,"beforeDatasetsDraw",[t])){for(var i=(e.data.datasets||[]).length-1;i>=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);Ee.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==Ee.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),Ee.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==Ee.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),Ee.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return ve.modes.single(this,t)},getElementsAtEvent:function(t){return ve.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ve.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=ve.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return ve.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var t,e,i=this,n=i.canvas;for(i.stop(),t=0,e=i.data.datasets.length;t<e;++t)i.destroyDatasetMeta(t);n&&(i.unbindEvents(),ut.canvas.clear(i),Ve.releaseContext(i.ctx),i.canvas=null,i.ctx=null),Ee.notify(i,"destroy"),delete ni.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Je({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},i=function(){t.eventHandler.apply(t,arguments)};ut.each(t.options.events,function(n){Ve.addEventListener(t,n,i),e[n]=i}),t.options.responsive&&(i=function(){t.resize()},Ve.addEventListener(t,"resize",i),e.resize=i)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,ut.each(e,function(e,i){Ve.removeEventListener(t,i,e)}))},updateHoverStyle:function(t,e,i){var n,a,o,r=i?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[r](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==Ee.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),Ee.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},a=n.hover;return i.lastActive=i.lastActive||[],"mouseout"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,a.mode,a),ut.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,a.mode,!1),i.active.length&&a.mode&&i.updateHoverStyle(i.active,a.mode,!0),e=!ut.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),ni.instances={};var ai=ni;ni.Controller=ni,ni.types={},ut.configMerge=ei,ut.scaleMerge=ti;function oi(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function ri(t){this.options=t||{}}ut.extend(ri.prototype,{formats:oi,parse:oi,format:oi,add:oi,diff:oi,startOf:oi,endOf:oi,_create:function(t){return t}}),ri.override=function(t){ut.extend(ri.prototype,t)};var si={_date:ri},li={formatters:{values:function(t){return ut.isArray(t)?t:""+t},linear:function(t,e,i){var n=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=ut.log10(Math.abs(n)),o="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var r=ut.log10(Math.abs(t));o=t.toExponential(Math.floor(r)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(ut.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}},di=ut.valueOrDefault,ui=ut.valueAtIndexOrDefault;function hi(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function ci(t,e,i){return ut.isArray(e)?ut.longestText(t,i,e):t.measureText(e).width}st._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:li.formatters.values,minor:{},major:{}}});var fi=pt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){ut.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,r,s,l,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=ut.extend({left:0,right:0,top:0,bottom:0},i),d._maxLabelLines=0,d.longestLabelWidth=0,d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],s=d.afterBuildTicks(s)||s,d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,n=0,a=o.length;n<a;++n)r=o[n],(l=s[n])?l.label=r:s.push(l={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){ut.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){ut.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){ut.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){ut.callback(this.options.beforeDataLimits,[this])},determineDataLimits:ut.noop,afterDataLimits:function(){ut.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){ut.callback(this.options.beforeBuildTicks,[this])},buildTicks:ut.noop,afterBuildTicks:function(t){var e=this;return ut.isArray(t)&&t.length?ut.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=ut.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){ut.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){ut.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){ut.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,i=t.options.ticks,n=hi(t._ticks),a=ut.options._parseFont(i);e.font=a.string;var o=i.minRotation||0;if(n.length&&t.options.display&&t.isHorizontal())for(var r,s=ut.longestText(e,a.string,n,t.longestTextCache),l=s,d=t.getPixelForTick(1)-t.getPixelForTick(0)-6;l>d&&o<i.maxRotation;){var u=ut.toRadians(o);if(r=Math.cos(u),Math.sin(u)*s>t.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){ut.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ut.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=hi(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=t._isVisible(),l=n.position,d=t.isHorizontal(),u=ut.options._parseFont,h=u(a),c=n.gridLines.tickMarkLength;if(e.width=d?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?c:0,e.height=d?s&&r.drawTicks?c:0:t.maxHeight,o.display&&s){var f=u(o),g=ut.options.toPadding(o.padding),p=f.lineHeight+g.height;d?e.height+=p:e.width+=p}if(a.display&&s){var m=ut.longestText(t.ctx,h.string,i,t.longestTextCache),v=ut.numberOfLabelLines(i),b=.5*h.size,x=t.options.ticks.padding;if(t._maxLabelLines=v,t.longestLabelWidth=m,d){var y=ut.toRadians(t.labelRotation),k=Math.cos(y),w=Math.sin(y)*m+h.lineHeight*v+b;e.height=Math.min(t.maxHeight,e.height+w+x),t.ctx.font=h.string;var M,_,C=ci(t.ctx,i[0],h.string),S=ci(t.ctx,i[i.length-1],h.string),P=t.getPixelForTick(0)-t.left,I=t.right-t.getPixelForTick(i.length-1);0!==t.labelRotation?(M="bottom"===l?k*C:k*b,_="bottom"===l?k*b:k*S):(M=C/2,_=S/2),t.paddingLeft=Math.max(M-P,0)+3,t.paddingRight=Math.max(_-I,0)+3}else a.mirror?m=0:m+=x+b,e.width=Math.min(t.maxWidth,e.width+m),t.paddingTop=h.size/2,t.paddingBottom=h.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){ut.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ut.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:ut.noop,getPixelForValue:ut.noop,getValueForPixel:ut.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+a;return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+i;return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n=this,a=n.isHorizontal(),o=n.options.ticks.minor,r=t.length,s=!1,l=o.maxTicksLimit,d=n._tickSize()*(r-1),u=a?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.PaddingBottom),h=[];for(d>u&&(s=1+Math.floor(d/u)),r>l&&(s=Math.max(s,1+Math.floor(r/l))),e=0;e<r;e++)i=t[e],s>1&&e%s>0&&delete i.label,h.push(i);return h},_tickSize:function(){var t=this,e=t.isHorizontal(),i=t.options.ticks.minor,n=ut.toRadians(t.labelRotation),a=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),r=i.autoSkipPadding||0,s=t.longestLabelWidth+r||0,l=ut.options._parseFont(i),d=t._maxLabelLines*l.lineHeight+r||0;return e?d*a>s*o?s/a:d/o:d*o<s*a?d/a:s/o},_isVisible:function(){var t,e,i,n=this.chart,a=this.options.display;if("auto"!==a)return!!a;for(t=0,e=n.data.datasets.length;t<e;++t)if(n.isDatasetVisible(t)&&((i=n.getDatasetMeta(t)).xAxisID===this.id||i.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,i=e.options;if(e._isVisible()){var n,a,o,r=e.chart,s=e.ctx,l=st.global.defaultFontColor,d=i.ticks.minor,u=i.ticks.major||d,h=i.gridLines,c=i.scaleLabel,f=i.position,g=0!==e.labelRotation,p=d.mirror,m=e.isHorizontal(),v=ut.options._parseFont,b=d.display&&d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),x=di(d.fontColor,l),y=v(d),k=y.lineHeight,w=di(u.fontColor,l),M=v(u),_=d.padding,C=d.labelOffset,S=h.drawTicks?h.tickMarkLength:0,P=di(c.fontColor,l),I=v(c),A=ut.options.toPadding(c.padding),D=ut.toRadians(e.labelRotation),T=[],F=h.drawBorder?ui(h.lineWidth,0,0):0,L=ut._alignPixel;"top"===f?(n=L(r,e.bottom,F),a=e.bottom-S,o=n-F/2):"bottom"===f?(n=L(r,e.top,F),a=n+F/2,o=e.top+S):"left"===f?(n=L(r,e.right,F),a=e.right-S,o=n-F/2):(n=L(r,e.left,F),a=n+F/2,o=e.left+S);if(ut.each(b,function(n,s){if(!ut.isNullOrUndef(n.label)){var l,d,u,c,v,b,x,y,w,M,P,I,A,R,O,z,B=n.label;s===e.zeroLineIndex&&i.offset===h.offsetGridLines?(l=h.zeroLineWidth,d=h.zeroLineColor,u=h.zeroLineBorderDash||[],c=h.zeroLineBorderDashOffset||0):(l=ui(h.lineWidth,s),d=ui(h.color,s),u=h.borderDash||[],c=h.borderDashOffset||0);var N=ut.isArray(B)?B.length:1,W=function(t,e,i){var n=t.getPixelForTick(e);return i&&(1===t.getTicks().length?n-=t.isHorizontal()?Math.max(n-t.left,t.right-n):Math.max(n-t.top,t.bottom-n):n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}(e,s,h.offsetGridLines);if(m){var V=S+_;W<e.left-1e-7&&(d="rgba(0,0,0,0)"),v=x=w=P=L(r,W,l),b=a,y=o,A=e.getPixelForTick(s)+C,"top"===f?(M=L(r,t.top,F)+F/2,I=t.bottom,O=((g?1:.5)-N)*k,z=g?"left":"center",R=e.bottom-V):(M=t.top,I=L(r,t.bottom,F)-F/2,O=(g?0:.5)*k,z=g?"right":"center",R=e.top+V)}else{var E=(p?0:S)+_;W<e.top-1e-7&&(d="rgba(0,0,0,0)"),v=a,x=o,b=y=M=I=L(r,W,l),R=e.getPixelForTick(s)+C,O=(1-N)*k/2,"left"===f?(w=L(r,t.left,F)+F/2,P=t.right,z=p?"left":"right",A=e.right-E):(w=t.left,P=L(r,t.right,F)-F/2,z=p?"right":"left",A=e.left+E)}T.push({tx1:v,ty1:b,tx2:x,ty2:y,x1:w,y1:M,x2:P,y2:I,labelX:A,labelY:R,glWidth:l,glColor:d,glBorderDash:u,glBorderDashOffset:c,rotation:-1*D,label:B,major:n.major,textOffset:O,textAlign:z})}}),ut.each(T,function(t){var e=t.glWidth,i=t.glColor;if(h.display&&e&&i&&(s.save(),s.lineWidth=e,s.strokeStyle=i,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),h.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=t.major?M.string:y.string,s.fillStyle=t.major?w:x,s.textBaseline="middle",s.textAlign=t.textAlign;var n=t.label,a=t.textOffset;if(ut.isArray(n))for(var o=0;o<n.length;++o)s.fillText(""+n[o],0,a),a+=k;else s.fillText(n,0,a);s.restore()}}),c.display){var R,O,z=0,B=I.lineHeight/2;if(m)R=e.left+(e.right-e.left)/2,O="bottom"===f?e.bottom-B-A.bottom:e.top+B+A.top;else{var N="left"===f;R=N?e.left+B+A.top:e.right-B-A.top,O=e.top+(e.bottom-e.top)/2,z=N?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(R,O),s.rotate(z),s.textAlign="center",s.textBaseline="middle",s.fillStyle=P,s.font=I.string,s.fillText(c.labelString,0,0),s.restore()}if(F){var W,V,E,H,j=F,q=ui(h.lineWidth,b.length-1,0);m?(W=L(r,e.left,j)-j/2,V=L(r,e.right,q)+q/2,E=H=n):(E=L(r,e.top,j)-j/2,H=L(r,e.bottom,q)+q/2,W=V=n),s.lineWidth=F,s.strokeStyle=ui(h.color,0),s.beginPath(),s.moveTo(W,E),s.lineTo(V,H),s.stroke()}}}}),gi=fi.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var i=this,n=i.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===i.id?i.getRightValue(n.data.datasets[e].data[t]):i.ticks[t-i.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,o=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var r=n.getLabels().indexOf(t);e=-1!==r?r:e}if(n.isHorizontal()){var s=n.width/o,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+l}var d=n.height/o,u=d*(e-n.minIndex);return a&&(u+=d/2),n.top+u},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,i=e.options.offset,n=Math.max(e._ticks.length-(i?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/n;return t-=a?e.left:e.top,i&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}}),pi={position:"bottom"};gi._defaults=pi;var mi=ut.noop,vi=ut.isNullOrUndef;var bi=fi.extend({getRightValue:function(t){return"string"==typeof t?+t:fi.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=ut.sign(t.min),n=ut.sign(t.max);i<0&&n<0?t.max=0:i>0&&n>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,i=e.stepSize,n=e.maxTicksLimit;return i?t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1:(t=this._computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:mi,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:ut.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o,r=[],s=t.stepSize,l=s||1,d=t.maxTicks-1,u=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=ut.niceNum((g-f)/d/l)*l;if(p<1e-14&&vi(u)&&vi(h))return[f,g];(o=Math.ceil(g/p)-Math.floor(f/p))>d&&(p=ut.niceNum(o*p/d/l)*l),s||vi(c)?i=Math.pow(10,ut._decimalPlaces(p)):(i=Math.pow(10,c),p=Math.ceil(p*i)/i),n=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!vi(u)&&ut.almostWhole(u/p,p/1e3)&&(n=u),!vi(h)&&ut.almostWhole(h/p,p/1e3)&&(a=h)),o=(a-n)/p,o=ut.almostEquals(o,Math.round(o),p/1e3)?Math.round(o):Math.ceil(o),n=Math.round(n*i)/i,a=Math.round(a*i)/i,r.push(vi(u)?n:u);for(var m=1;m<o;++m)r.push(Math.round((n+m*p)*i)/i);return r.push(vi(h)?a:h),r}(n,t);t.handleDirectionalChanges(),t.max=ut.max(a),t.min=ut.min(a),e.reverse?(a.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),fi.prototype.convertTicksToLabels.call(t)}}),xi={position:"left",ticks:{callback:li.formatters.linear}},yi=bi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");void 0===s[l]&&(s[l]={positiveValues:[],negativeValues:[]});var d=s[l].positiveValues,u=s[l].negativeValues;i.isDatasetVisible(a)&&o(r)&&ut.each(n.data,function(i,n){var a=+t.getRightValue(i);isNaN(a)||r.data[n].hidden||(d[n]=d[n]||0,u[n]=u[n]||0,e.relativePoints?d[n]=100:a<0?u[n]+=a:d[n]+=a)})}),ut.each(s,function(e){var i=e.positiveValues.concat(e.negativeValues),n=ut.min(i),a=ut.max(i);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=ut.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}}),ki=xi;yi._defaults=ki;var wi=ut.valueOrDefault;var Mi={position:"left",ticks:{callback:li.formatters.logarithmic}};function _i(t,e){return ut.isFinite(t)&&t>=0?t:e}var Ci=fi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");i.isDatasetVisible(a)&&o(r)&&(void 0===s[l]&&(s[l]=[]),ut.each(n.data,function(e,i){var n=s[l],a=+t.getRightValue(e);isNaN(a)||r.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),ut.each(s,function(e){if(e.length>0){var i=ut.min(e),n=ut.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?n:Math.max(t.max,n)}})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||n<0||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n),0!==n&&(null===t.minNotZero||n<t.minNotZero)&&(t.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=_i(e.min,t.min),t.max=_i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(ut.log10(t.min))-1),t.max=Math.pow(10,Math.floor(ut.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(ut.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(ut.log10(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(ut.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:_i(e.min),max:_i(e.max)},a=t.ticks=function(t,e){var i,n,a=[],o=wi(t.min,Math.pow(10,Math.floor(ut.log10(e.min)))),r=Math.floor(ut.log10(e.max)),s=Math.ceil(e.max/Math.pow(10,r));0===o?(i=Math.floor(ut.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(o),o=n*Math.pow(10,i)):(i=Math.floor(ut.log10(o)),n=Math.floor(o/Math.pow(10,i)));var l=i<0?Math.pow(10,Math.abs(i)):1;do{a.push(o),10==++n&&(n=1,l=++i>=0?1:l),o=Math.round(n*Math.pow(10,i)*l)/l}while(i<r||i===r&&n<s);var d=wi(t.max,o);return a.push(d),a}(n,t);t.max=ut.max(a),t.min=ut.min(a),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),fi.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(ut.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,i,n,a,o,r=this,s=r.options.ticks,l=s.reverse,d=ut.log10,u=r._getFirstTickValue(r.minNotZero),h=0;return t=+r.getRightValue(t),l?(n=r.end,a=r.start,o=-1):(n=r.start,a=r.end,o=1),r.isHorizontal()?(e=r.width,i=l?r.right:r.left):(e=r.height,o*=-1,i=l?r.top:r.bottom),t!==n&&(0===n&&(e-=h=wi(s.fontSize,st.global.defaultFontSize),n=u),0!==t&&(h+=e/(d(a)-d(n))*(d(t)-d(n))),i+=o*h),i},getValueForPixel:function(t){var e,i,n,a,o=this,r=o.options.ticks,s=r.reverse,l=ut.log10,d=o._getFirstTickValue(o.minNotZero);if(s?(i=o.end,n=o.start):(i=o.start,n=o.end),o.isHorizontal()?(e=o.width,a=s?o.right-t:t-o.left):(e=o.height,a=s?t-o.top:o.bottom-t),a!==i){if(0===i){var u=wi(r.fontSize,st.global.defaultFontSize);a-=u,e-=u,i=d}a*=l(n)-l(i),a/=e,a=Math.pow(10,l(i)+a)}return a}}),Si=Mi;Ci._defaults=Si;var Pi=ut.valueOrDefault,Ii=ut.valueAtIndexOrDefault,Ai=ut.options.resolve,Di={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:li.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Ti(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function Fi(t){var e=t.ticks;return e.display&&t.display?Pi(e.fontSize,st.global.defaultFontSize)+2*e.backdropPaddingY:0}function Li(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||t>a?{start:e-i,end:e}:{start:e,end:e+i}}function Ri(t){return 0===t||180===t?"center":t<180?"left":"right"}function Oi(t,e,i,n){var a,o,r=i.y+n/2;if(ut.isArray(e))for(a=0,o=e.length;a<o;++a)t.fillText(e[a],i.x,r),r+=n;else t.fillText(e,i.x,r)}function zi(t,e,i){90===t||270===t?i.y-=e.h/2:(t>270||t<90)&&(i.y-=e.h)}function Bi(t){return ut.isNumber(t)?t:0}var Ni=bi.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Fi(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;ut.each(e.data.datasets,function(a,o){if(e.isDatasetVisible(o)){var r=e.getDatasetMeta(o);ut.each(a.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||r.data[a].hidden||(i=Math.min(o,i),n=Math.max(o,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Fi(this.options))},convertTicksToLabels:function(){var t=this;bi.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,i,n,a=ut.options._parseFont(t.options.pointLabels),o={l:0,r:t.width,t:0,b:t.height-t.paddingTop},r={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,d,u=Ti(t);for(e=0;e<u;e++){n=t.getPointPosition(e,t.drawingArea+5),s=t.ctx,l=a.lineHeight,d=t.pointLabels[e]||"",i=ut.isArray(d)?{w:ut.longestText(s,s.font,d),h:d.length*l}:{w:s.measureText(d).width,h:l},t._pointLabelSizes[e]=i;var h=t.getIndexAngle(e),c=ut.toDegrees(h)%360,f=Li(c,n.x,i.w,0,180),g=Li(c,n.y,i.h,90,270);f.start<o.l&&(o.l=f.start,r.l=h),f.end>o.r&&(o.r=f.end,r.r=h),g.start<o.t&&(o.t=g.start,r.t=h),g.end>o.b&&(o.b=g.end,r.b=h)}t.setReductions(t.drawingArea,o,r)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,i){var n=this,a=e.l/Math.sin(i.l),o=Math.max(e.r-n.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),s=-Math.max(e.b-(n.height-n.paddingTop),0)/Math.cos(i.b);a=Bi(a),o=Bi(o),r=Bi(r),s=Bi(s),n.drawingArea=Math.min(Math.floor(t-(a+o)/2),Math.floor(t-(r+s)/2)),n.setCenterPoint(a,o,r,s)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-a.paddingTop-n-a.drawingArea;a.xCenter=Math.floor((r+o)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/Ti(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(i)*e+this.xCenter,y:Math.sin(i)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,i=e.gridLines,n=e.ticks;if(e.display){var a=t.ctx,o=this.getIndexAngle(0),r=ut.options._parseFont(n);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.gridLines,o=i.pointLabels,r=Pi(n.lineWidth,a.lineWidth),s=Pi(n.color,a.color),l=Fi(i);e.save(),e.lineWidth=r,e.strokeStyle=s,e.setLineDash&&(e.setLineDash(Ai([n.borderDash,a.borderDash,[]])),e.lineDashOffset=Ai([n.borderDashOffset,a.borderDashOffset,0]));var d=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),u=ut.options._parseFont(o);e.font=u.string,e.textBaseline="middle";for(var h=Ti(t)-1;h>=0;h--){if(n.display&&r&&s){var c=t.getPointPosition(h,d);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke()}if(o.display){var f=0===h?l/2:0,g=t.getPointPosition(h,d+f+5),p=Ii(o.fontColor,h,st.global.defaultFontColor);e.fillStyle=p;var m=t.getIndexAngle(h),v=ut.toDegrees(m);e.textAlign=Ri(v),zi(v,t._pointLabelSizes[h],g),Oi(e,t.pointLabels[h]||"",g,u.lineHeight)}}e.restore()}(t),ut.each(t.ticks,function(e,s){if(s>0||n.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,i,n){var a,o=t.ctx,r=e.circular,s=Ti(t),l=Ii(e.color,n-1),d=Ii(e.lineWidth,n-1);if((r||s)&&l&&d){if(o.save(),o.strokeStyle=l,o.lineWidth=d,o.setLineDash&&(o.setLineDash(e.borderDash||[]),o.lineDashOffset=e.borderDashOffset||0),o.beginPath(),r)o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI);else{a=t.getPointPosition(0,i),o.moveTo(a.x,a.y);for(var u=1;u<s;u++)a=t.getPointPosition(u,i),o.lineTo(a.x,a.y)}o.closePath(),o.stroke(),o.restore()}}(t,i,l,s),n.display){var d=Pi(n.fontColor,st.global.defaultFontColor);if(a.font=r.string,a.save(),a.translate(t.xCenter,t.yCenter),a.rotate(o),n.showLabelBackdrop){var u=a.measureText(e).width;a.fillStyle=n.backdropColor,a.fillRect(-u/2-n.backdropPaddingX,-l-r.size/2-n.backdropPaddingY,u+2*n.backdropPaddingX,r.size+2*n.backdropPaddingY)}a.textAlign="center",a.textBaseline="middle",a.fillStyle=d,a.fillText(e,0,-l),a.restore()}}})}}}),Wi=Di;Ni._defaults=Wi;var Vi=ut.valueOrDefault,Ei=Number.MIN_SAFE_INTEGER||-9007199254740991,Hi=Number.MAX_SAFE_INTEGER||9007199254740991,ji={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},qi=Object.keys(ji);function Yi(t,e){return t-e}function Ui(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,o.push(n));return o}function Xi(t,e,i,n){var a=function(t,e,i){for(var n,a,o,r=0,s=t.length-1;r>=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]<i)r=n+1;else{if(!(a[e]>i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,d=(r[n]-o[n])*l;return o[n]+d}function Ki(t,e){var i=t._adapter,n=t.options.time,a=n.parser,o=a||n.format,r=e;return"function"==typeof a&&(r=a(r)),ut.isFinite(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null!==r?+r:(a||"function"!=typeof o||(r=o(e),ut.isFinite(r)||(r=i.parse(r))),r)}function Gi(t,e){if(ut.isNullOrUndef(e))return null;var i=t.options.time,n=Ki(t,t.getRightValue(e));return null===n?n:(i.round&&(n=+t._adapter.startOf(n,i.round)),n)}function Zi(t){for(var e=qi.indexOf(t)+1,i=qi.length;e<i;++e)if(ji[qi[e]].common)return qi[e]}function $i(t,e,i,n){var a,o=t._adapter,r=t.options,s=r.time,l=s.unit||function(t,e,i,n){var a,o,r,s=qi.length;for(a=qi.indexOf(t);a<s-1;++a)if(r=(o=ji[qi[a]]).steps?o.steps[o.steps.length-1]:Hi,o.common&&Math.ceil((i-e)/(r*o.size))<=n)return qi[a];return qi[s-1]}(s.minUnit,e,i,n),d=Zi(l),u=Vi(s.stepSize,s.unitStepSize),h="week"===l&&s.isoWeekday,c=r.ticks.major.enabled,f=ji[l],g=e,p=i,m=[];for(u||(u=function(t,e,i,n){var a,o,r,s=e-t,l=ji[i],d=l.size,u=l.steps;if(!u)return Math.ceil(s/(n*d));for(a=0,o=u.length;a<o&&(r=u[a],!(Math.ceil(s/(d*r))<=n));++a);return r}(e,i,l,n)),h&&(g=+o.startOf(g,"isoWeek",h),p=+o.startOf(p,"isoWeek",h)),g=+o.startOf(g,h?"day":l),(p=+o.startOf(p,h?"day":l))<i&&(p=+o.add(p,1,l)),a=g,c&&d&&!h&&!s.round&&(a=+o.startOf(a,d),a=+o.add(a,~~((g-a)/(f.size*u))*u,l));a<p;a=+o.add(a,u,l))m.push(+a);return m.push(+a),m}var Ji=fi.extend({initialize:function(){this.mergeTicksOptions(),fi.prototype.initialize.call(this)},update:function(){var t=this.options,e=t.time||(t.time={}),i=this._adapter=new si._date(t.adapters.date);return e.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),ut.mergeIf(e.displayFormats,i.formats()),fi.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),fi.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,i,n,a,o,r=this,s=r.chart,l=r._adapter,d=r.options.time,u=d.unit||"day",h=Hi,c=Ei,f=[],g=[],p=[],m=s.data.labels||[];for(t=0,i=m.length;t<i;++t)p.push(Gi(r,m[t]));for(t=0,i=(s.data.datasets||[]).length;t<i;++t)if(s.isDatasetVisible(t))if(a=s.data.datasets[t].data,ut.isObject(a[0]))for(g[t]=[],e=0,n=a.length;e<n;++e)o=Gi(r,a[e]),f.push(o),g[t][e]=o;else{for(e=0,n=p.length;e<n;++e)f.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=Ui(p).sort(Yi),h=Math.min(h,p[0]),c=Math.max(c,p[p.length-1])),f.length&&(f=Ui(f).sort(Yi),h=Math.min(h,f[0]),c=Math.max(c,f[f.length-1])),h=Gi(r,d.min)||h,c=Gi(r,d.max)||c,h=h===Hi?+l.startOf(Date.now(),u):h,c=c===Ei?+l.endOf(Date.now(),u)+1:c,r.min=Math.min(h,c),r.max=Math.max(h+1,c),r._horizontal=r.isHorizontal(),r._table=[],r._timestamps={data:f,datasets:g,labels:p}},buildTicks:function(){var t,e,i,n=this,a=n.min,o=n.max,r=n.options,s=r.time,l=[],d=[];switch(r.ticks.source){case"data":l=n._timestamps.data;break;case"labels":l=n._timestamps.labels;break;case"auto":default:l=$i(n,a,o,n.getLabelCapacity(a))}for("ticks"===r.bounds&&l.length&&(a=l[0],o=l[l.length-1]),a=Gi(n,s.min)||a,o=Gi(n,s.max)||o,t=0,e=l.length;t<e;++t)(i=l[t])>=a&&i<=o&&d.push(i);return n.min=a,n.max=o,n._unit=s.unit||function(t,e,i,n,a){var o,r;for(o=qi.length-1;o>=qi.indexOf(i);o--)if(r=qi[o],ji[r].common&&t._adapter.diff(a,n,r)>=e.length)return r;return qi[i?qi.indexOf(i):0]}(n,d,s.minUnit,n.min,n.max),n._majorUnit=Zi(n._unit),n._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,d=[],u=[e];for(a=0,o=t.length;a<o;++a)(s=t[a])>e&&s<i&&u.push(s);for(u.push(i),a=0,o=u.length;a<o;++a)l=u[a+1],r=u[a-1],s=u[a],void 0!==r&&void 0!==l&&Math.round((l+r)/2)===s||d.push({time:s,pos:a/(o-1)});return d}(n._timestamps.data,a,o,r.distribution),n._offsets=function(t,e,i,n,a){var o,r,s=0,l=0;return a.offset&&e.length&&(a.time.min||(o=Xi(t,"time",e[0],"pos"),s=1===e.length?1-o:(Xi(t,"time",e[1],"pos")-o)/2),a.time.max||(r=Xi(t,"time",e[e.length-1],"pos"),l=1===e.length?r:(r-Xi(t,"time",e[e.length-2],"pos"))/2)),{start:s,end:l}}(n._table,d,0,0,r),r.ticks.reverse&&d.reverse(),function(t,e,i){var n,a,o,r,s=[];for(n=0,a=e.length;n<a;++n)o=e[n],r=!!i&&o===+t._adapter.startOf(o,i),s.push({value:o,major:r});return s}(n,d,n._majorUnit)},getLabelForIndex:function(t,e){var i=this,n=i._adapter,a=i.chart.data,o=i.options.time,r=a.labels&&t<a.labels.length?a.labels[t]:"",s=a.datasets[e].data[t];return ut.isObject(s)&&(r=i.getRightValue(s)),o.tooltipFormat?n.format(Ki(i,r),o.tooltipFormat):"string"==typeof r?r:n.format(Ki(i,r),o.displayFormats.datetime)},tickFormatFunction:function(t,e,i,n){var a=this._adapter,o=this.options,r=o.time.displayFormats,s=r[this._unit],l=this._majorUnit,d=r[l],u=+a.startOf(t,l),h=o.ticks.major,c=h.enabled&&l&&d&&t===u,f=a.format(t,n||(c?d:s)),g=c?h:o.ticks.minor,p=Vi(g.callback,g.userCallback);return p?p(f,e,i):f},convertTicksToLabels:function(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(this.tickFormatFunction(t[e].value,e,t));return n},getPixelForOffset:function(t){var e=this,i=e.options.ticks.reverse,n=e._horizontal?e.width:e.height,a=e._horizontal?i?e.right:e.left:i?e.bottom:e.top,o=Xi(e._table,"time",t,"pos"),r=n*(e._offsets.start+o)/(e._offsets.start+1+e._offsets.end);return i?a-r:a+r},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=Gi(this,t)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=(i?(t-n)/i:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,o=Xi(e._table,"pos",a,"time");return e._adapter._create(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=ut.toRadians(e.maxRotation),a=Math.cos(n),o=Math.sin(n);return i*a+Vi(e.fontSize,st.global.defaultFontSize)*o},getLabelCapacity:function(t){var e=this,i=e.options.time.displayFormats.millisecond,n=e.tickFormatFunction(t,0,[],i),a=e.getLabelWidth(n),o=e.isHorizontal()?e.width:e.height,r=Math.floor(o/a);return r>0?r:1}}),Qi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};Ji._defaults=Qi;var tn={category:gi,linear:yi,logarithmic:Ci,radialLinear:Ni,time:Ji},en={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};si._date.override("function"==typeof t?{_id:"moment",formats:function(){return en},parse:function(e,i){return"string"==typeof e&&"string"==typeof i?e=t(e,i):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,i){return t(e).format(i)},add:function(e,i,n){return t(e).add(i,n).valueOf()},diff:function(e,i,n){return t.duration(t(e).diff(t(i))).as(n)},startOf:function(e,i,n){return e=t(e),"isoWeek"===i?e.isoWeekday(n).valueOf():e.startOf(i).valueOf()},endOf:function(e,i){return t(e).endOf(i).valueOf()},_create:function(e){return t(e)}}:{}),st._set("global",{plugins:{filler:{propagate:!0}}});var nn={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function an(t,e,i){var n,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(n=parseFloat(o,10),isFinite(n)&&Math.floor(n)===n)return"-"!==o[0]&&"+"!==o[0]||(n=e+n),!(n===e||n<0||n>=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function on(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if(ut.isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function rn(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function sn(t){var e=t.fill,i="dataset";return!1===e?null:(isFinite(e)||(i="boundary"),nn[i](t))}function ln(t){return t&&!t.skip}function dn(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)ut.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;o>0;--o)ut.canvas.lineTo(t,i[o],i[o-1],!0)}}var un={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,o,r=(t.data.datasets||[]).length,s=e.propagate,l=[];for(n=0;n<r;++n)o=null,(a=(i=t.getDatasetMeta(n)).dataset)&&a._model&&a instanceof Wt.Line&&(o={visible:t.isDatasetVisible(n),fill:an(a,n,r),chart:t,el:a}),i.$filler=o,l.push(o);for(n=0;n<r;++n)(o=l[n])&&(o.fill=rn(l,n,s),o.boundary=on(o),o.mapper=sn(o))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var n=t.ctx,a=i.el,o=a._view,r=a._children||[],s=i.mapper,l=o.backgroundColor||st.global.defaultColor;s&&l&&r.length&&(ut.canvas.clipArea(n,t.chartArea),function(t,e,i,n,a,o){var r,s,l,d,u,h,c,f=e.length,g=n.spanGaps,p=[],m=[],v=0,b=0;for(t.beginPath(),r=0,s=f+!!o;r<s;++r)u=i(d=e[l=r%f]._view,l,n),h=ln(d),c=ln(u),h&&c?(v=p.push(d),b=m.push(u)):v&&b&&(g?(h&&p.push(d),c&&m.push(u)):(dn(t,p,m,v,b),v=b=0,p=[],m=[]));dn(t,p,m,v,b),t.closePath(),t.fillStyle=a,t.fill()}(n,r,s,o,l,a._loop),ut.canvas.unclipArea(n))}}},hn=ut.noop,cn=ut.valueOrDefault;function fn(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}st._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return ut.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:ut.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var gn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:hn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:hn,beforeSetDimensions:hn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:hn,beforeBuildLabels:hn,buildLabels:function(){var t=this,e=t.options.labels||{},i=ut.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:hn,beforeFit:hn,fit:function(){var t=this,e=t.options,i=e.labels,n=e.display,a=t.ctx,o=ut.options._parseFont(i),r=o.size,s=t.legendHitBoxes=[],l=t.minSize,d=t.isHorizontal();if(d?(l.width=t.maxWidth,l.height=n?10:0):(l.width=n?10:0,l.height=t.maxHeight),n)if(a.font=o.string,d){var u=t.lineWidths=[0],h=0;a.textAlign="left",a.textBaseline="top",ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;(0===e||u[u.length-1]+n+i.padding>l.width)&&(h+=r+i.padding,u[u.length-(e>0?0:1)]=i.padding),s[e]={left:0,top:0,width:n,height:r},u[u.length-1]+=n+i.padding}),l.height+=h}else{var c=i.padding,f=t.columnWidths=[],g=i.padding,p=0,m=0,v=r+c;ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;e>0&&m+v>l.height-c&&(g+=p+i.padding,f.push(p),p=0,m=0),p=Math.max(p,n),m+=v,s[e]={left:0,top:0,width:n,height:r}}),g+=p,f.push(p),l.width+=g}t.width=l.width,t.height=l.height},afterFit:hn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,n=st.global,a=n.defaultColor,o=n.elements.line,r=t.width,s=t.lineWidths;if(e.display){var l,d=t.ctx,u=cn(i.fontColor,n.defaultFontColor),h=ut.options._parseFont(i),c=h.size;d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=u,d.fillStyle=u,d.font=h.string;var f=fn(i,c),g=t.legendHitBoxes,p=t.isHorizontal();l=p?{x:t.left+(r-s[0])/2+i.padding,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var m=c+i.padding;ut.each(t.legendItems,function(n,u){var h=d.measureText(n.text).width,v=f+c/2+h,b=l.x,x=l.y;p?u>0&&b+v+i.padding>t.left+t.minSize.width&&(x=l.y+=m,l.line++,b=l.x=t.left+(r-s[l.line])/2+i.padding):u>0&&x+m>t.top+t.minSize.height&&(b=l.x=b+t.columnWidths[l.line]+i.padding,x=l.y=t.top+i.padding,l.line++),function(t,i,n){if(!(isNaN(f)||f<=0)){d.save();var r=cn(n.lineWidth,o.borderWidth);if(d.fillStyle=cn(n.fillStyle,a),d.lineCap=cn(n.lineCap,o.borderCapStyle),d.lineDashOffset=cn(n.lineDashOffset,o.borderDashOffset),d.lineJoin=cn(n.lineJoin,o.borderJoinStyle),d.lineWidth=r,d.strokeStyle=cn(n.strokeStyle,a),d.setLineDash&&d.setLineDash(cn(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var s=f*Math.SQRT2/2,l=t+f/2,u=i+c/2;ut.canvas.drawPoint(d,n.pointStyle,s,l,u)}else 0!==r&&d.strokeRect(t,i,f,c),d.fillRect(t,i,f,c);d.restore()}}(b,x,n),g[u].left=b,g[u].top=x,function(t,e,i,n){var a=c/2,o=f+a+t,r=e+a;d.fillText(i.text,o,r),i.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(o,r),d.lineTo(o+n,r),d.stroke())}(b,x,n,h),p?l.x+=v+i.padding:l.y+=m})}},_getLegendItemAt:function(t,e){var i,n,a,o=this;if(t>=o.left&&t<=o.right&&e>=o.top&&e<=o.bottom)for(a=o.legendHitBoxes,i=0;i<a.length;++i)if(t>=(n=a[i]).left&&t<=n.left+n.width&&e>=n.top&&e<=n.top+n.height)return o.legendItems[i];return null},handleEvent:function(t){var e,i=this,n=i.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!n.onHover&&!n.onLeave)return}else{if("click"!==a)return;if(!n.onClick)return}e=i._getLegendItemAt(t.x,t.y),"click"===a?e&&n.onClick&&n.onClick.call(i,t.native,e):(n.onLeave&&e!==i._hoveredItem&&(i._hoveredItem&&n.onLeave.call(i,t.native,i._hoveredItem),i._hoveredItem=e),n.onHover&&e&&n.onHover.call(i,t.native,e))}});function pn(t,e){var i=new gn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.legend=i}var mn={id:"legend",_element:gn,beforeInit:function(t){var e=t.options.legend;e&&pn(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(ut.mergeIf(e,st.global.legend),i?(ke.configure(t,i,e),i.options=e):pn(t,e)):i&&(ke.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}},vn=ut.noop;st._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var bn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:vn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:vn,beforeSetDimensions:vn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:vn,beforeBuildLabels:vn,buildLabels:vn,afterBuildLabels:vn,beforeFit:vn,fit:function(){var t=this,e=t.options,i=e.display,n=t.minSize,a=ut.isArray(e.text)?e.text.length:1,o=ut.options._parseFont(e),r=i?a*o.lineHeight+2*e.padding:0;t.isHorizontal()?(n.width=t.maxWidth,n.height=r):(n.width=r,n.height=t.maxHeight),t.width=n.width,t.height=n.height},afterFit:vn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=t.options;if(i.display){var n,a,o,r=ut.options._parseFont(i),s=r.lineHeight,l=s/2+i.padding,d=0,u=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=ut.valueOrDefault(i.fontColor,st.global.defaultFontColor),e.font=r.string,t.isHorizontal()?(a=h+(f-h)/2,o=u+l,n=f-h):(a="left"===i.position?h+l:f-l,o=u+(c-u)/2,n=c-u,d=Math.PI*("left"===i.position?-.5:.5)),e.save(),e.translate(a,o),e.rotate(d),e.textAlign="center",e.textBaseline="middle";var g=i.text;if(ut.isArray(g))for(var p=0,m=0;m<g.length;++m)e.fillText(g[m],0,p,n),p+=s;else e.fillText(g,0,0,n);e.restore()}}});function xn(t,e){var i=new bn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.titleBlock=i}var yn={},kn=un,wn=mn,Mn={id:"title",_element:bn,beforeInit:function(t){var e=t.options.title;e&&xn(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(ut.mergeIf(e,st.global.title),i?(ke.configure(t,i,e),i.options=e):xn(t,e)):i&&(ke.removeBox(t,i),delete t.titleBlock)}};for(var _n in yn.filler=kn,yn.legend=wn,yn.title=Mn,ai.helpers=ut,function(){function t(t,e,i){var n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}function e(t){return null!=t&&"none"!==t}function i(i,n,a){var o=document.defaultView,r=ut._getParentNode(i),s=o.getComputedStyle(i)[n],l=o.getComputedStyle(r)[n],d=e(s),u=e(l),h=Number.POSITIVE_INFINITY;return d||u?Math.min(d?t(s,i,a):h,u?t(l,r,a):h):"none"}ut.where=function(t,e){if(ut.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return ut.each(t,function(t){e(t)&&i.push(t)}),i},ut.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},ut.findNextWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},ut.findPreviousWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;n>=0;n--){var a=t[n];if(e(a))return a}},ut.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},ut.almostEquals=function(t,e,i){return Math.abs(t-e)<i},ut.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&i+e>t},ut.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},ut.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},ut.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},ut.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},ut.toRadians=function(t){return t*(Math.PI/180)},ut.toDegrees=function(t){return t*(180/Math.PI)},ut._decimalPlaces=function(t){if(ut.isFinite(t)){for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}},ut.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},ut.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},ut.aliasPixel=function(t){return t%2==0?0:.5},ut._alignPixel=function(t,e,i){var n=t.currentDevicePixelRatio,a=i/2;return Math.round((e-a)*n)/n+a},ut.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),d=s/(s+l),u=l/(s+l),h=n*(d=isNaN(d)?0:d),c=n*(u=isNaN(u)?0:u);return{previous:{x:o.x-h*(r.x-a.x),y:o.y-h*(r.y-a.y)},next:{x:o.x+c*(r.x-a.x),y:o.y+c*(r.y-a.y)}}},ut.EPSILON=Number.EPSILON||1e-14,ut.splineCurveMonotone=function(t){var e,i,n,a,o,r,s,l,d,u=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=u.length;for(e=0;e<h;++e)if(!(n=u[e]).model.skip){if(i=e>0?u[e-1]:null,(a=e<h-1?u[e+1]:null)&&!a.model.skip){var c=a.model.x-n.model.x;n.deltaK=0!==c?(a.model.y-n.model.y)/c:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<h-1;++e)n=u[e],a=u[e+1],n.model.skip||a.model.skip||(ut.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,r=a.mK/n.deltaK,(l=Math.pow(o,2)+Math.pow(r,2))<=9||(s=3/Math.sqrt(l),n.mK=o*s*n.deltaK,a.mK=r*s*n.deltaK)));for(e=0;e<h;++e)(n=u[e]).model.skip||(i=e>0?u[e-1]:null,a=e<h-1?u[e+1]:null,i&&!i.model.skip&&(d=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-d,n.model.controlPointPreviousY=n.model.y-d*n.mK),a&&!a.model.skip&&(d=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+d,n.model.controlPointNextY=n.model.y+d*n.mK))},ut.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},ut.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},ut.niceNum=function(t,e){var i=Math.floor(ut.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},ut.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},ut.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;s&&s.length>0?(i=s[0].clientX,n=s[0].clientY):(i=a.clientX,n=a.clientY);var l=parseFloat(ut.getStyle(o,"padding-left")),d=parseFloat(ut.getStyle(o,"padding-top")),u=parseFloat(ut.getStyle(o,"padding-right")),h=parseFloat(ut.getStyle(o,"padding-bottom")),c=r.right-r.left-l-u,f=r.bottom-r.top-d-h;return{x:i=Math.round((i-r.left-l)/c*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-r.top-d)/f*o.height/e.currentDevicePixelRatio)}},ut.getConstraintWidth=function(t){return i(t,"max-width","clientWidth")},ut.getConstraintHeight=function(t){return i(t,"max-height","clientHeight")},ut._calculatePadding=function(t,e,i){return(e=ut.getStyle(t,e)).indexOf("%")>-1?i*parseInt(e,10)/100:parseInt(e,10)},ut._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},ut.getMaximumWidth=function(t){var e=ut._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-ut._calculatePadding(e,"padding-left",i)-ut._calculatePadding(e,"padding-right",i),a=ut.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},ut.getMaximumHeight=function(t){var e=ut._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-ut._calculatePadding(e,"padding-top",i)-ut._calculatePadding(e,"padding-bottom",i),a=ut.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},ut.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},ut.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},ut.fontString=function(t,e,i){return e+" "+t+"px "+i},ut.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},o=n.garbageCollect=[],n.font=e),t.font=e;var r=0;ut.each(i,function(e){null!=e&&!0!==ut.isArray(e)?r=ut.measureText(t,a,o,r,e):ut.isArray(e)&&ut.each(e,function(e){null==e||ut.isArray(e)||(r=ut.measureText(t,a,o,r,e))})});var s=o.length/2;if(s>i.length){for(var l=0;l<s;l++)delete a[o[l]];o.splice(0,s)}return r},ut.measureText=function(t,e,i,n,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,i.push(a)),o>n&&(n=o),n},ut.numberOfLabelLines=function(t){var e=1;return ut.each(t,function(t){ut.isArray(t)&&t.length>e&&(e=t.length)}),e},ut.color=X?function(t){return t instanceof CanvasGradient&&(t=st.global.defaultColor),X(t)}:function(t){return console.error("Color.js not found!"),t},ut.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:ut.color(t).saturate(.5).darken(.1).rgbString()}}(),ai._adapters=si,ai.Animation=vt,ai.animationService=bt,ai.controllers=ue,ai.DatasetController=Mt,ai.defaults=st,ai.Element=pt,ai.elements=Wt,ai.Interaction=ve,ai.layouts=ke,ai.platform=Ve,ai.plugins=Ee,ai.Scale=fi,ai.scaleService=He,ai.Ticks=li,ai.Tooltip=Je,ai.helpers.each(tn,function(t,e){ai.scaleService.registerScaleType(e,t,t._defaults)}),yn)yn.hasOwnProperty(_n)&&ai.plugins.register(yn[_n]);ai.platform.initialize();var Cn=ai;return"undefined"!=typeof window&&(window.Chart=ai),ai.Chart=ai,ai.Legend=yn.legend._element,ai.Title=yn.title._element,ai.pluginService=ai.plugins,ai.PluginBase=ai.Element.extend({}),ai.canvasHelpers=ai.helpers.canvas,ai.layoutService=ai.layouts,ai.LinearScaleBase=bi,ai.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],function(t){ai[t]=function(e,i){return new ai(e,ai.helpers.merge(i||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}}),Cn});
js/premium-frontend.js000064400000133664151526520750011036 0ustar00/*
PAGELAYER
http://pagelayer.com/
(c) Pagelayer Team
*/

// Things to do on document load
jQuery(document).ready(function(){
	
	jQuery('.pagelayer-slides').each(function(){
		pagelayer_pl_slides(jQuery(this));
	});
	
	jQuery('.pagelayer-featured_img').each(function(){
		pagelayer_pl_image(jQuery(this));
	});
	
	jQuery('.pagelayer-wp_posts_slider').each(function(){
		pagelayer_wp_posts_slider(jQuery(this));
	});
  
	jQuery('.pagelayer-review_slider').each(function(){
		pagelayer_reviews_slider(jQuery(this));
	});
	
	// Facebook Apps
	if(jQuery('[pagelayer-facebook-load]')){
		pagelayer_fb_apps(jQuery(this));
	}
	
	// For Pagelayer Pro
	jQuery('.pagelayer-image_hotspot').each(function(){
		pagelayer_image_hotspot(jQuery(this));
	});
	
	jQuery('.pagelayer-chart').each(function(){
		pagelayer_chart(jQuery(this));
	});
	
	jQuery('.pagelayer-table').each(function(){
		pagelayer_table(jQuery(this));
	});
	
	jQuery('.pagelayer-audio').each(function(){
		pagelayer_audio(jQuery(this));
	});
	
	jQuery('.pagelayer-post_folio').each(function(){
		pagelayer_post_folio(jQuery(this));
	});
	
	jQuery('.pagelayer-search').each(function(){
		pagelayer_search_form(jQuery(this));
	});
	
	jQuery('.pagelayer-sitemap').each(function(){
		pagelayer_sitemap_add_attributes(jQuery(this));
	});
	
	jQuery('.pagelayer-posts').each(function(){
		var is_slider = jQuery(this).find('.pagelayer-posts-container').data('enable_slider');
		if(is_slider){
			pagelayer_pl_posts(jQuery(this));
		}
	});
	
	jQuery('.pagelayer-video_slider').each(function(){
		pagelayer_pl_video_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-woo_menu_cart').each(function(){
		pagelayer_woo_menu_cart(jQuery(this));
	});
		
	jQuery('.pagelayer-popup-modal').each(function(){
		pagelayer_popup_setup(jQuery(this));
	});
	
	jQuery('.pagelayer-sticky-ele').each(function(){
		pagelayer_ele_sticky_handler(jQuery(this));
	});
	
	jQuery('.pagelayer-scrolling-effects').each(function(){
		pagelayer_scrolling_effects(jQuery(this));
	});
	
	jQuery('.pagelayer-mouse-effects').each(function(){
		pagelayer_mouse_effects(jQuery(this));
	});
	
	jQuery('.pagelayer-img_portfolio').each(function(){
		pagelayer_pl_img_portfolio(jQuery(this));
	});
	
	jQuery('.pagelayer-single_img').each(function(){
		pagelayer_pl_image(jQuery(this));
	});
	
	jQuery('.pagelayer-splash-container').each(function(){
		pagelayer_pl_splash_screen(jQuery(this));
	});
	
	jQuery('.pagelayer-fb-page-container, .pagelayer-fb-embed-container').each(function(){
		pagelayer_fb_width(jQuery(this));
	});

	jQuery('.pagelayer-before_after').each(function(){
		pagelayer_before_after_slider(jQuery(this));
	});
	
	jQuery('.pagelayer-image_map').each(function(){
		pagelayer_pl_image_map(jQuery(this));
		
		// Make image map editable
		if(!pagelayer_empty(pagelayer_is_live)){
			pagelayer_imgmap_handler(jQuery(this));
		}
	});
  
});

jQuery(window).resize(function(){
	jQuery('.pagelayer-scrolling-effects').each(function(){
		pagelayer_scrolling_effects(jQuery(this));
	});
});

// Add all shuffle instance in this object
var shuffleInstance = {};

// Portfolio Gallery
function pagelayer_pl_img_portfolio(jEle){
	
	var id = jEle.attr('pagelayer-id');
	var arr = [];
	
	// Fetch all categories in array 
	jEle.find('[port-cat]').each(function(){
		
		var cat = jQuery(this).attr('port-cat');
		
		if(cat){
			
			//var sel = jQuery(this).parent('.pagelayer-ele-wrap') ? jQuery(this).parent('.pagelayer-ele-wrap') : jQuery(this);
			
			jQuery(this).attr('data-groups','["'+cat+'"]');
			
			if(!arr.includes(cat)){
				arr.push(cat);
				
			}
		}
	})
	
	// Create category button html
	var html = '<button class="pagelayer-pfbtn" data-pgl_pfbtn="all">All</button>';
	
	arr.forEach(function(val){
		if(val && val != 'all'){
			html += '<button class="pagelayer-pfbtn" data-pgl_pfbtn="'+val+'">'+val+'</button>';
		}
	});
	
	// Append category buttons to holder
	jEle.find('.pagelayer-category-holder').empty().append(html);
	
	
	var setup = jEle.attr('pagelayer-setup');
	
	// Already setup ? then distroy shuffle
	if(setup && setup.length > 0 && !pagelayer_empty(shuffleInstance[id])){
		shuffleInstance[id].destroy();
	}
	
	// Create an shuffle instance
	var Shuffle = window.Shuffle;
	var element = jEle.find('.pagelayer-img_portfolio-holder');
	var sizer = jEle.find('.pagelayer-img_portfolio-holder');
	
	shuffleInstance[id] = new Shuffle(element,{
	  itemSelector: '.pagelayer-img_portfolio-holder>div',
	  //sizer: sizer // could also be a selector: '.my-sizer-element'
	});
	
	// set click events on category buttons
	if(!window.location.href.includes('pagelayer-live=1')){
		jEle.find('button').on("click", function(){
			shuffleInstance[id].filter(jQuery(this).attr('data-pgl_pfbtn'));
		});
	}
	
	// Set that we have setup everything
	jEle.attr('pagelayer-setup', 1);
	
}

// Reset Scrolling effects
function pagelayer_reset_scrolling(jEle, parentEle){
	
	if(jEle.length < 1){
		return;
	}
	
	var style = jEle.get(0).style;
	style.setProperty("--transY", 0 +"px");
	style.setProperty("--transX", 0 +"px");
	style.setProperty("--rot", 0 +"deg");
	jEle.css({"transform":"" , "opacity":"1" , "filter":"none"});
	parentEle.off('scroll.'+jEle.attr('pagelayer-id'));
}

// Handle the scrolling effects
function pagelayer_scrolling_effects(jEle, parentEle){
	
	parentEle = parentEle || jQuery(pagelayerGetDocumentElement());
	
	var win = pagelayerGetCurrentWindow();
	
	pagelayer_reset_scrolling(jEle, parentEle);
	
	// Is this element to be scrolled on this Screen Size ?
	var screens = jEle.attr('ele_motion_effect_on');
	if(pagelayer_empty(screens) || screens.search(pagelayer_get_media_mode()) == -1){
		return;
	}
	
	var style = jEle.get(0).style;
	var totalProperty = '';
	var documentHeight = parentEle.height();
	var screenMiddle = documentHeight/2;	
	var eMid = documentHeight/2;// By default motion_area-entire_page
	
	if(jEle.attr('motion_area') == 'viewport'){
		jEle.css('top', '0px');
		// For viewPort in Gutenberg
		if (parentEle.hasClass('interface-interface-skeleton__content')) {
			var scrollTopOfDiv = parentEle.scrollTop();
			var offsetFromTopOfDiv = jEle.parent().offset().top - parentEle.offset().top + scrollTopOfDiv;
			eMid = offsetFromTopOfDiv + jEle.parent().height() / 2;
		}else{
			eMid = jEle.parent().offset().top + jEle.parent().height() / 2;
		}

		screenMiddle = jQuery(win).height() / 2;
	}
	
	var screenHeightPercent = screenMiddle/100;
	
	// Vertical Scroll
	if(jEle.attr('ele_vertical_scroll')){
		if(jEle.attr('motion_area')=='entire_page'){
			jEle.offset({top:(documentHeight/2)});
		}
		totalProperty += "translateY(var(--transY))";
		var vertical_top = Math.ceil(jEle.attr('ele_v_sc_top_viewport')*(screenHeightPercent));
		var vertical_bottom = -Math.ceil(jEle.attr('ele_v_sc_bottom_viewport')*(screenHeightPercent));
	}
	
	// Horizontal scroll
	if(jEle.attr('ele_horizontal_scroll')){		
		totalProperty += "translateX(var(--transX))";
		var screenWidthPercent = jQuery(win).width()/200;
		var horizontal_right = (Math.ceil(jEle.attr('ele_h_sc_right_viewport')*(screenWidthPercent)));
		var horizontal_left = -(Math.ceil(jEle.attr('ele_h_sc_left_viewport')*(screenWidthPercent)));	
	}
	
	// Transparency
	if(jEle.attr('ele_transparency')){
		var fadingLevel = 1-jEle.attr('ele_transp_level')/10;			
		var transparency_top = Math.ceil(jEle.attr('ele_transp_top_viewport')*(screenHeightPercent));
		var transparency_bottom = Math.ceil(jEle.attr('ele_transp_bottom_viewport')*(screenHeightPercent));
	}
	
	// Blur
	if(jEle.attr('ele_blur')){	
		var blurringLevel = jEle.attr('ele_blur_level');		
		var blur_top = Math.ceil(jEle.attr('ele_blur_top_viewport')*(screenHeightPercent));
		var blur_bottom = Math.ceil(jEle.attr('ele_blur_bottom_viewport')*(screenHeightPercent));		
	}
	
	// Rotate
	if(jEle.attr('ele_rotate')){
		totalProperty += "rotate(var(--rot))";
		var rotate_top = Math.ceil(jEle.attr('ele_rot_top_viewport')*(screenHeightPercent));
		var rotate_bottom = -Math.ceil(jEle.attr('ele_rot_bottom_viewport')*(screenHeightPercent));
	}
	
	// Scale
	if(jEle.attr('ele_scale')){	
		var childScale = jEle.children("div");
		var scalingLevel = jEle.attr('ele_scl_level');		
		var scale_top = Math.ceil(jEle.attr('ele_scl_top_viewport')*(screenHeightPercent));
		var scale_bottom = Math.ceil(jEle.attr('ele_scl_bottom_viewport')*(screenHeightPercent));	
	}
	
	if(totalProperty != ''){
		jEle.css('transform', totalProperty);
	}
	
	// On Scroll calc and set
	parentEle.on('scroll.'+jEle.attr('pagelayer-id'), function(){	
	
		var vpMid = parentEle.scrollTop() + jQuery(win).height()/2;
		
		if(jEle.attr('ele_vertical_scroll')){
			var preCalc = ((eMid-vpMid)/10)*(jEle.attr('ele_v_sc_speed'));
			if(jEle.attr('ele_v_sc_direction') == 'opposite'){
				if(-preCalc<=vertical_top && -preCalc>vertical_bottom){
					style.setProperty("--transY", preCalc +"px");
				}
			}else if(jEle.attr('ele_v_sc_direction') == 'similar'){
				if(preCalc<=vertical_top && preCalc>vertical_bottom){
					style.setProperty("--transY", -preCalc +"px");	
				}
			}
		}
		
		if(jEle.attr('ele_horizontal_scroll')){
			var preCalc = (eMid-vpMid)*(jEle.attr('ele_h_sc_speed')/2);
			if(jEle.attr('ele_h_sc_direction')=='toleft'){
				if(preCalc<=horizontal_right && preCalc>horizontal_left)
					style.setProperty("--transX", preCalc +"px");	
			}else if(jEle.attr('ele_h_sc_direction')=='toright'){
				if(-preCalc<=horizontal_right && -preCalc>horizontal_left)
					style.setProperty("--transX", -preCalc +"px");					
			}
		}

		if(jEle.attr('ele_transparency')){			
			var preCalc = (vpMid)-eMid;
			
			if(preCalc>(-transparency_bottom) && preCalc<=transparency_top){
				
				var eMidB = eMid-transparency_bottom;
				var eMidT = eMid+transparency_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_transp_type')=='fadein'){
					var fadeIn = ((vpMid-eMidB)/eMidTB)+fadingLevel;
					jEle.css("opacity",fadeIn);
					
				}else if(jEle.attr('ele_transp_type')=='fadeout'){
					var fadeOut = ((eMidT-vpMid)/eMidTB)+fadingLevel;
					jEle.css("opacity",fadeOut);
					
				}else if(jEle.attr('ele_transp_type')=='fadeinout'){
					var fadeInOut1 = ((vpMid-eMidB)/(eMidTB/2))+fadingLevel;
					var fadeInOut2 = ((eMidT-vpMid)/(eMidTB/2))+fadingLevel;
					
					if(fadeInOut1<1+fadingLevel && fadeInOut1>0+fadingLevel){
						jEle.css("opacity",fadeInOut1);					
					}else if(fadeInOut2<1+fadingLevel && fadeInOut2>0+fadingLevel){
						jEle.css("opacity",fadeInOut2);										
					}
					
				}else if(jEle.attr('ele_transp_type')=='fadeoutin'){
					var fadeOutIn1 = (((vpMid-eMidB)/(eMidTB/2)-1))+fadingLevel;
					var fadeOutIn2 = (((eMidT-vpMid)/(eMidTB/2)-1))+fadingLevel;
					
					if(fadeOutIn2<1+fadingLevel && fadeOutIn2>0+fadingLevel){
						jEle.css("opacity",fadeOutIn2);					
					}else if(fadeOutIn1<1+fadingLevel && fadeOutIn1>0+fadingLevel){
						jEle.css("opacity",fadeOutIn1);										
					}
				}					
			}				
		}
		
		if(jEle.attr('ele_blur')){			
			var preCalc = vpMid-eMid;
			
			if(preCalc>-(blur_bottom) && preCalc<=blur_top){
				
				var eMidB = eMid-blur_bottom;
				var eMidT = eMid+blur_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_blur_type')=='blurin'){
					var blurIn = ((eMidT-vpMid)/eMidTB)*blurringLevel;					
					jEle.css("filter","blur("+blurIn+"px)");
				}else if(jEle.attr('ele_blur_type')=='blurout'){
					var blurOut = ((vpMid-eMidB)/eMidTB)*blurringLevel;
					jEle.css("filter","blur("+blurOut+"px)");
				}else if(jEle.attr('ele_blur_type')=='blurinout'){
					var blurInOut1 = (vpMid-eMidB)/(eMidTB/2)*blurringLevel;
					var blurInOut2 = (eMidT-vpMid)/(eMidTB/2)*blurringLevel;
					
					if(blurInOut1<1*blurringLevel && blurInOut1>0.01*blurringLevel){
						jEle.css("filter","blur("+blurInOut1+"px)");					
					}else if(blurInOut2<1*blurringLevel && blurInOut2>0.01*blurringLevel){
						jEle.css("filter","blur("+blurInOut2+"px)");										
					}
				}else if(jEle.attr('ele_blur_type')=='bluroutin'){
					var blurOutIn1 = ((vpMid-eMidB)/(eMidTB/2)-1)*blurringLevel;
					var blurOutIn2 = ((eMidT-vpMid)/(eMidTB/2)-1)*blurringLevel;
					
					if(blurOutIn2<1*blurringLevel && blurOutIn2>0.01*blurringLevel){
						jEle.css("filter","blur("+blurOutIn2+"px)");					
					}else if(blurOutIn1<1*blurringLevel && blurOutIn1>0.01*blurringLevel){							
						jEle.css("filter","blur("+blurOutIn1+"px)");					
					}
				}			
			}
		}
		
		if(jEle.attr('ele_rotate')){
			var preCalc = ((vpMid-eMid)/2);
			var rotSpeed = jEle.attr('ele_rot_speed')/2;
			if(jEle.attr('ele_rot_direction')=='clockwise'){
				if(preCalc<=rotate_top && preCalc>rotate_bottom){
					style.setProperty("--rot", preCalc*rotSpeed +"deg");
				}
			}else if(jEle.attr('ele_rot_direction')=='anticlockwise'){
				if(preCalc<=rotate_top && preCalc>rotate_bottom){
					style.setProperty("--rot", -preCalc*rotSpeed +"deg");
				}
			}
		}
		
		if(jEle.attr('ele_scale')){
			
			var preCalc = vpMid-eMid;
			
			if(preCalc>-(scale_bottom) && preCalc<=scale_top){
				
				var eMidB = eMid-scale_bottom;
				var eMidT = eMid+scale_top;
				var eMidTB = eMidT-eMidB;
				
				if(jEle.attr('ele_scl_direction')=='scaleup'){
					var scaleUp = ((vpMid-eMidB)/eMidTB)*scalingLevel+1;
					childScale.css("transform","scale("+ scaleUp +")");
				}else if(jEle.attr('ele_scl_direction')=='scaledown'){
					var scaleDown = ((eMidT-vpMid)/eMidTB)*scalingLevel+1;
					childScale.css("transform","scale("+ scaleDown +")");
				}else if(jEle.attr('ele_scl_direction')=='scaleupdown'){
					var scaleUpDown2 = (vpMid-eMidB)/(eMidTB/2)*scalingLevel+1;
					var scaleUpDown1 = (eMidT-vpMid)/(eMidTB/2)*scalingLevel+1;
					
					if(scaleUpDown1<1*scalingLevel && scaleUpDown1>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleUpDown1 +")");
					}else if(scaleUpDown2<1*scalingLevel && scaleUpDown2>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleUpDown2 +")");
					}
				}else if(jEle.attr('ele_scl_direction')=='scaledownup'){
					var scaleDownUp1 = ((vpMid-eMidB)/(eMidTB/2)-1)*scalingLevel+1;
					var scaleDownUp2 = ((eMidT-vpMid)/(eMidTB/2)-1)*scalingLevel+1;
					
					if(scaleDownUp1<1*scalingLevel && scaleDownUp1>0.1*scalingLevel){
						childScale.css("transform","scale("+ scaleDownUp1 +")");		
					}else if(scaleDownUp2<1*scalingLevel && scaleDownUp2>0.1*scalingLevel){		
						childScale.css("transform","scale("+ scaleDownUp2 +")");		
					}
				}
			}			
		}			
	});
};

function pagelayer_mouse_reset(jEle){
	
	var win = pagelayerGetCurrentWindow();
	
	jEle.css("transform", "");
	var style = jEle.get(0).style;
	style.setProperty("--transY", 0 +"px");
	style.setProperty("--transX", 0 +"px");
	style.setProperty("--rotX", 0 +"deg");
	style.setProperty("--rotY", 0 +"deg");
	jQuery(win).off('mousemove.'+jEle.attr('pagelayer-id'));
}

// Mouse Effects setup
function pagelayer_mouse_effects(jEle){
	
	pagelayer_mouse_reset(jEle);
	
	var style = jEle.get(0).style;
	var mouseproperty = '';
	
	var halfWidth = jEle.parent().offset().left+jEle.parent().width()/2;
	var halfHeight = jEle.parent().offset().top+jEle.parent().height()/2;
	
	if(jEle.attr('ele_m_track')){
		mouseproperty += 'translateX(var(--transX)) translateY(var(--transY))';
		var mouseLevel = jEle.attr('ele_m_tr_level');
	}
	
	if(jEle.attr('ele_3d_tilt')){
		mouseproperty += ' rotateX(var(--rotX)) rotateY(var(--rotY))';
		jEle.parent().css("perspective", "1200px");
		var tiltLevel = jEle.attr('ele_3d_tilt_level');
	}
	
	if(mouseproperty != ''){
		jEle.css("transform", mouseproperty);
	}
	
	var win = pagelayerGetCurrentWindow();
	
	jQuery(win).bind('mousemove.'+jEle.attr('pagelayer-id'), function(event){
		
		if(jEle.attr('ele_m_track')){		
			if(jEle.attr('ele_m_tr_direction') == 'opposite'){
				var x =((event.pageX - halfWidth)*mouseLevel)/10;
				var y =((event.pageY - halfHeight)*mouseLevel)/10;
				style.setProperty("--transX",-x +"px");
				style.setProperty("--transY",-y +"px");
				//console.log(halfWidth +"  "+ mouseLevel);
			}else if(jEle.attr('ele_m_tr_direction') == 'same'){
				var x =((event.pageX - halfWidth)*mouseLevel)/10;
				var y = ((event.pageY-halfHeight)*mouseLevel)/10;
				style.setProperty("--transX",x +"px");
				style.setProperty("--transY",y +"px");
			}
		}
	
		if(jEle.attr('ele_3d_tilt')){				
			if(jEle.attr('ele_3d_tilt_direction')=='opposite'){
				var x=((event.pageX - halfWidth)*tiltLevel)/100;
				var y=((event.pageY - halfHeight)*tiltLevel)/100;
				style.setProperty("--rotX", y +"deg");
				style.setProperty("--rotY",-x + "deg");
			}else if(jEle.attr('ele_3d_tilt_direction')=='same'){
				var x=((event.pageX - halfWidth)*tiltLevel)/100;
				var y=((event.pageY - halfHeight)*tiltLevel)/100;				
				style.setProperty("--rotX",-y + "deg");
				style.setProperty("--rotY",x +"deg");
			}
		}
	});
}

// Element sticky handler
function pagelayer_ele_sticky_handler(jEle, parentEle){
	
	// Set element stickied
	if(jEle.attr('pagelayer-stickied-ele') == 1){
		return;
	}
	
	parentEle = parentEle || jQuery(window);

	jEle.attr('pagelayer-stickied-ele', 1);
	
	var jEleTop = jEle.offset().top;
	var jEleW = jEle[0].clientWidth +'px';
	var oldstyle = jEle.attr('style') || '';	
	
	var pagelayer_sticky = function(){
		var position = jEle.attr('data-sticky-position') || '';
		var offset = jEle.attr('data-sticky-offset') || 0;
		var sticky_in_col = jEle.attr('data-sticky_in_col') || '';
		var sticky_on = jEle.attr('data-sticky-on') || '';
		sticky_on = sticky_on.split(',');
	
		// If match the media
		var do_sticky = false;
		for(var x in sticky_on){
			if(pagelayer_get_media_mode() == sticky_on[x]){
				do_sticky = true;
			}
		}
		
		// If there is a wrapper
		var wrapper = jEle.parent('.pagelayer-ele-wrap');
		if(wrapper.length > 0 ){
			
			// Reset jEle
			jEle.next('.pagelayer-sticky-space-holder').remove();
			jEle.attr('style', oldstyle);
			
			// Get wrapper old syle
			oldstyle = wrapper.attr('oldstyle') || '';
			if(pagelayer_empty(oldstyle)){
				oldstyle = wrapper.attr('style') || '1';
				wrapper.attr('oldstyle', oldstyle);
			}else if(oldstyle == '1'){
				oldstyle = '';
			}
			
		}else{
			wrapper = jEle;
		}
		
		var parentHeight = parentEle.height();
		var parentScrollTop = parentEle.scrollTop();
		var topToCheck = jEleTop - parentScrollTop;
		
		// Do fixed the element
		var pagelayer_fixed = function(){
			
			var opp_position = (position == 'top') ? 'bottom' : 'top';
			var fixed_css = {'position': 'fixed', 'width': jEleW, 'max-width': jEleW, [position] : offset +'px', [opp_position]: 'auto','z-index' : '99'}
			
			// For the sticky in columns 
			if(!pagelayer_empty(sticky_in_col)){
				//fixed_css['position'] = 'sticky';
				var container = wrapper.parent();
				var containerTop = container.offset().top;
				if((containerTop + container.height()) - parentScrollTop <= wrapper.outerHeight(true) + offset || containerTop - parentScrollTop >= parentHeight - wrapper.outerHeight(true) -  offset){
					fixed_css['position'] = 'absolute';
					fixed_css[opp_position] = '0px';
					fixed_css[position] = 'auto';
				}
			}
			
			// Add position holder element
			if(wrapper.next('.pagelayer-sticky-space-holder').length < 1 ){
				var clone = wrapper.clone(true);
				clone.addClass('pagelayer-sticky-space-holder');
				clone.css({'visibility' : 'hidden', 'transition': 'none 0s ease 0s', 'animation': '0s ease 0s 1 normal none running none'});
				
				// Remove pagelayer-parent attributes to avoid group children list double
				if(!pagelayer_empty(pagelayer_is_live)){
					clone.removeClass('pagelayer-ele-wrap');
					clone.removeClass('pagelayer-ele');
					clone.find('.pagelayer-ele').removeClass('pagelayer-ele');
					clone.find('[pagelayer-id]').removeAttr('pagelayer-id');
				}
				
				// Add 
				wrapper.after(clone);
				
				//wrapper.after('<div class="pagelayer-sticky-space-holder" style="width:'+wrapper.outerWidth(true)+'px;height:'+wrapper.outerHeight(true)+'px;visibility:hidden;margin:0px;"></div>');
			}
			
			// Css for fixed the element
			wrapper.css(fixed_css);
		}
		
		// TODO: manage margin
		var mTopEle = parseFloat(wrapper.css('margin-top'));
		var mBottomEle = parseFloat(wrapper.css('margin-bottom'));
		
		// Fixed on top
		if( position == 'top' && (topToCheck <= offset+mTopEle && do_sticky) ){
			pagelayer_fixed();
		// Fixed on bottom
		}else if( position == 'bottom' && topToCheck + wrapper.outerHeight()+mBottomEle >= parentHeight - offset && do_sticky) {
			pagelayer_fixed();
		// Set old style
		}else{
			wrapper.attr('style', oldstyle);
			wrapper.next('.pagelayer-sticky-space-holder').remove();
			jEleW = wrapper[0].clientWidth +'px';
			jEleTop = wrapper.offset().top;
		}
		
		return true;
	};
	
	// Run for the first time
	pagelayer_sticky();
	
	// On window scroll
	parentEle.scroll(pagelayer_sticky);	
	parentEle.resize(pagelayer_sticky);	
	
}

function pagelayer_pl_posts(jEle){
	
	var ul = jEle.find('.pagelayer-posts-container');
	
	ul.addClass('pagelayer-owl-carousel pagelayer-owl-theme');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-owl-');
	
	// Already setup ?
	var setup = jEle.attr('pagelayer-setup');
	
	// If already setup then Destroy Owl
	if(setup && setup.length > 0){
		ul.pagelayerOwlCarousel('destroy');
		ul.find('[class^="pagelayer-owl-"]').remove();
	}
	
	//console.log(options);
	ul.pagelayerOwlCarousel(options);
	
	// Set that we have setup everything
	jEle.attr('pagelayer-setup', 1);
}

function pagelayer_pl_slides(jEle){
	var ul = jEle.find('.pagelayer-slides-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	var blurNav = false;
	
	if(pagelayer_is_live){
		
		if(!options.nav && !options.dots) {
			options.nav = true;
			options.dots = true;
			blurNav = true;
		}
		
		options.mouseDrag = false;
	}
	
	pagelayer_owl_init(jEle, ul, options);
	
	if(blurNav){
		ul.find('.pagelayer-owl-nav button').css({'filter': 'blur(2px)'});
		ul.find('.pagelayer-owl-dot').css({'filter': 'blur(2px)'});
	}
	
	// Shows element animations after slide change
	ul.on('refresh.owl.carousel translate.owl.carousel', function(e) {
		var slide = jQuery(this);
    
		if(!pagelayer_is_live) {
			slide.find('.pagelayer-wow').addClass('animated');
			return; 
		}
			
		slide.find('.pagelayer-ele').each(function() {
			var ele = jQuery(this);
			
			if(ele.css('animation-name') == 'none') {
				return;
			}
			
			ele.addClass('pagelayer-wow animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
				ele.removeClass('pagelayer-wow animated');
			});
		});
	});
	
}

// For Pagelayer Pro
// Show tooltip in image hotspot
function pagelayer_image_hotspot(jEle){
	
	// Drag and Drop function for image
	if (typeof pagelayer_preDAndD_image !== "undefined") {
		pagelayer_preDAndD_image(jEle);
	}
	
	var tooltip_click = jEle.find('.pagelayer-icon-holder');
	var icon_holder = jEle.find('.pagelayer-hotspots-icon-holder');
	icon_holder.off('click');
	icon_holder.find('.pagelayer-tooltip-text').removeClass('pagelayer-tooltip-on-click');
	
	if(tooltip_click.hasClass('pagelayer-hotspots-click')){
		icon_holder.each(function(){
			
			jQuery(this).click(function(){
				jQuery(this).find( '.pagelayer-tooltip-text' ).toggleClass('pagelayer-tooltip-on-click');
			})	

		});
	}	
	
	// Assigning animation classes to icon holder
	if(!pagelayer_empty(tooltip_click.attr('pagelayer-animation'))){
		icon_holder.addClass('pagelayer-animation-'+tooltip_click.attr('pagelayer-animation'));
	}
	
}

var pagelayer_chart_objects = {};

// Show Chart render
function pagelayer_chart(jEle){
	
	var holder = jEle.find('.pagelayer-chart-holder');
	var id = jEle.attr('pagelayer-id');

	var type = holder.attr('chart-type');
	var labels = holder.attr('chart-labels') || '';
	var legend = holder.attr('chart-legend');
	
	var chart_datasets = [];
	labels = labels.split(',');
	//console.log(labels);
	
	jEle.find('.pagelayer-chart-child-holder').find('.pagelayer-chart-datasets').each(function(){
		var tmp_dataset = {};
		//console.log(jQuery(this).attr('chart-datasets'));
		var chartDatasets = jQuery(this).attr('chart-datasets') || '';
		tmp_dataset['data'] = chartDatasets.split(',');
		//tmp_dataset['data'] = [734,784,2478,5267,433];
		tmp_dataset['label'] = jQuery(this).attr('datasets-label');
		tmp_dataset['backgroundColor'] = ( holder.attr('chart-colors') ? holder.attr('chart-colors').split(',') : jQuery(this).attr('dataset-bg') );
		tmp_dataset['borderColor'] = jQuery(this).attr('border-color');
		tmp_dataset['borderWidth'] = 1;
		tmp_dataset['fill'] = ( jQuery(this).attr('dataset-fill') ? true : false );
		chart_datasets.push(tmp_dataset);
	});
	//console.log(chart_datasets);
	//chart_datasets = chart_datasets.join(',');
	
	if(id in pagelayer_chart_objects && typeof pagelayer_chart_objects[id].destroy == 'function'){
		pagelayer_chart_objects[id].destroy();
	}
	
	pagelayer_chart_objects[id] = new Chart(jEle.find('.pagelayer-chart-holder'), {
		type: type,
		data: {
		  labels: labels,
		  datasets: 
		  chart_datasets
		},
		options: {
			//rotation: holder.attr('data-pierotate') * Math.PI,
			//circumference: holder.attr('data-circumference') * Math.PI,
			maintainAspectRatio: ( holder.attr('chart-height') ? false : true ),
			legend: { 
				display: ( legend ? true : false ),
				position: legend,
			},
			scales: {
				xAxes: [
					{
						barPercentage: 1,
						categoryPercentage: 0.9,
						ticks:{
							beginAtZero: holder.attr('data-xbegin'),
							fontColor: holder.attr('data-xcolor'),
							fontSize: holder.attr('data-xsize'),
							autoSkip: false,
							maxRotation: holder.attr('data-xrotate'),
							minRotation: holder.attr('data-xrotate')
						},
						//stacked: true
					}
				],
				yAxes:[
					{
						ticks:{
							beginAtZero: holder.attr('data-ybegin'),
							fontColor: holder.attr('data-ycolor'),
							fontSize: holder.attr('data-ysize'),
							autoSkip: false,
							maxRotation: holder.attr('data-yrotate'),
							minRotation: holder.attr('data-yrotate')
						},
						//stacked: true
					}
				]
			}
		}
	});

}

// Show table render
function pagelayer_table(jEle){
	
	var tHolder = jEle.find('.pagelayer-table-holder');
	var dHolder = jEle.find('.pagelayer-data-holder');
	var trEle = dHolder.find(".pagelayer-table_row");
	var tdlength = 0;
	tHolder.empty();
	
	/*trEle.each(function(){
		var tdEle = jQuery(this).find(".pagelayer-table_col").length;
		if(tdlength < tdEle){tdlength = tdEle}
	});*/
	
	// Add rows
	trEle.each(function(){
		var this_trEle = jQuery(this);
		var this_trId = this_trEle.attr('pagelayer-id');
		var tdEle = this_trEle.find(".pagelayer-table_col");
		
		var html = '';
		
		// Add columns
		tdEle.each(function(){
			var td_data_Holder = jQuery(this).find('.pagelayer-col-data');
			var td_id = jQuery(this).attr('pagelayer-id');
			var tdata = td_data_Holder.attr('data-td') || '';
			var t_tag = td_data_Holder.attr('data-tag') || '';
			var attrs = {};
			var col_attr = '';
			
			attrs['colspan']= td_data_Holder.attr('data-colspan') || '';
			attrs['rowspan'] = td_data_Holder.attr('data-rowspan') || '';
			
			if(!pagelayer_empty(pagelayer_is_live)){
				 attrs['pagelayer-ref-id'] = td_id;
				 attrs['pagelayer-editable'] = 'data';
				 attrs['contenteditable'] = 'true';
			}
			
			for(var key in attrs){
				if(!pagelayer_empty(attrs[key])){
					col_attr += key+'="'+attrs[key]+'"';
				}
				
			}
			
			html = html+'<'+t_tag +' '+col_attr+' pagelayer-table-id="'+td_id+'">'+tdata+'</'+t_tag+'>';
		});
		
		/* if(tdlength > tdEle.length){
			
			var extra_td = tdlength - tdEle.length;
			for(var i=0; extra_td >i; i++){
				html = html+'<td></td>';
			}
		} */
		
		tHolder.append('<tr pagelayer-table-id="'+this_trId+'">'+html+'</tr>');
	});
	
	if(!pagelayer_empty(pagelayer_is_live)){
		tHolder.on('input', '[contenteditable]', function(){
			var jEle = jQuery(this);
			var val = pagelayer_trim(jEle.html());
			var id = jEle.closest('[pagelayer-ref-id]').attr('pagelayer-ref-id');
			
			if(pagelayer_empty(id)){
				return;
			}
			
			jQuery('[pagelayer-id='+id+']').find('.pagelayer-col-data').attr('data-td', val);
			
		});
	}
	
}

function pagelayer_audio(jEle){
	
	var audio = jQuery(jEle.find('audio'));
	var container = jEle.find('.pagelayer-audio-container');
	var features = ['playpause','tracks','fullscreen'];
	
	(container.attr('show_duration') ? features.push('duration') : '' );
	(container.attr('show_progress') ? features.push('progress') : '' );
	(container.attr('show_current') ? features.push('current') : '' );
	(container.attr('show_volume') ? features.push('volume') : '' );
	
	audio.mediaelementplayer({
		//features: ['playpause','duration','progress','current','volume','tracks','fullscreen']
		features: features
	});
}

// Post Portfolio Handler - Premium
function pagelayer_post_folio(jEle){
	var btn = jEle.find('.pagelayer-postfolio-btn');
	var thumb = jEle.find('.pagelayer-postfolio-thumb');
	
	btn.unbind('click');
	btn.on('click', function(){
		var btn_cat = jQuery(this).data("filter");
		
		if(btn_cat == 'all'){
			jQuery(thumb).fadeIn(1200);
		}else{
			thumb.each(function(){
				var thumb_cat = jQuery(this).data("category");
				if(!pagelayer_empty(thumb_cat)){
					thumb_cat = thumb_cat.split(' ');
				
					if(jQuery.inArray( btn_cat, thumb_cat ) == -1){
						jQuery(this).hide();
					}else{
						jQuery(this).fadeIn(600);
					}
				}else{
					jQuery(this).hide();
				}
			});
		}
	});
}

// Search Form handler - Premium
function pagelayer_search_form(jEle){
	
	// In full screen mode set auto complete offscreenBuffering
	jEle.find('.pagelayer-search-full-screen form').attr('autocomplete', 'off');
	
	jEle.find('.pagelayer-search-toggle').click(function(){
		jEle.find('.pagelayer-search-fields').toggleClass('show');
	});
	
	jEle.find('.pagelayer-search-fields').click(function(e){
		 e = window.event || e; 
		if(this === e.target) {
			jQuery(this).removeClass('show');
		}
	});
}

// Login Form handler - Premium
function pagelayer_login_submit(jEle, e){
	e.preventDefault();
	var fdata = new FormData( jQuery(jEle).closest('form')[0] );
	
	// Append the nonce
	fdata.append('pagelayer_nonce', pagelayer_global_nonce);
	
	jQuery.ajax({
		url: pagelayer_ajaxurl+'action=pagelayer_login_submit',
		type: "POST",
		data: fdata,
		processData: false,
		contentType: false,
		cache:false,
		success:function(result){				
			var json = jQuery.parseJSON(result);
			// console.log(json);
			if(!pagelayer_empty(json['error'])){
				jQuery(".pagelayer-login-error-box").html(json['error']).fadeIn().delay(10000).fadeOut();  
			}else{
				if(!pagelayer_empty(json['redirect'])){
					window.location.href = json['redirect'];
				}else{
					location.reload(true);
				}
			}			 
		}
	});
}

//Review slider handler - Premium
function pagelayer_reviews_slider(jEle){
	
	var ul = jEle.find('.pagelayer-reviews-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);
	
}		

// Facebook App ID handler - Premium
function pagelayer_fb_apps(jEle){
	var app_id = jEle.find('.pagelayer-app-details').attr('pagelayer-app-id');
	
	if(pagelayer_empty(app_id) || app_id == "{{fb-app-id}}"){
		app_id = pagelayer_facebook_id;
	}
	
	// If still empty
	if(pagelayer_empty(app_id)){
		return;
	}
	
	var win = pagelayerGetCurrentWindow();
	var doc = pagelayerGetDocumentElement();
	
	win.fbAsyncInit = function() {		
		win.FB.init({
			appId            : app_id,
			autoLogAppEvents : true,
			xfbml            : true,
			version          : 'v3.3'
		});
	};
	win.FB = null;
	(function(d, s, id) {
		var js, fjs = d.getElementsByTagName(s)[0];
		js = d.createElement(s); js.id = id;
		js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0";
		fjs.parentNode.insertBefore(js, fjs);
	}(doc, 'script', 'facebook-jssdk'));
}

// SiteMap Attribute Handler- Premium
function pagelayer_sitemap_add_attributes(jEle){
	
	var nofollow = jEle.find('.pagelayer-sitemap-div-holder').data('nofollow');
	
	if(!pagelayer_empty(nofollow)){
		jEle.find('.pagelayer-sitemap-section .pagelayer-sitemap-list-item a').attr('rel','nofollow');		
	}

}

// Initialize video slider
function pagelayer_pl_video_slider(jEle){
	
	var ul = jEle.find('.pagelayer-video-slider-holder');
	
	// Build the options
	var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-');
	
	pagelayer_owl_init(jEle, ul, options);
	
}

// Splash widget
function pagelayer_pl_splash_screen(jEle){
	
	if(!pagelayer_empty(pagelayer_is_live)){
		return;
	}
	
	if( jEle.attr('display_type') == "once"){
	
		if (!sessionStorage.isVisited) {
			sessionStorage.isVisited = "true";
			jEle.delay(jEle.attr('delay')).fadeIn();
		}
	}else{
			jEle.delay(jEle.attr('delay')).fadeIn();
	}
	
	jEle.find('.pagelayer-splash-close, .pagelayer-splash-bg-close').on('click', function(){
		jEle.fadeOut();
	});		
}

// Facebook width adjustment function
function pagelayer_fb_width(jEle){
	
	var facebook = (jEle.find('.fb-page').length ? jEle.find('.fb-page') : jEle.find('.fb-embed'));
	
	var fb_resize = function(){
		facebook.attr('data-width', jEle.width());	
		FB.XFBML.parse();
	};
  
	setTimeout(fb_resize, 1000);
	
	var win = pagelayerGetCurrentWindow();
	
	jQuery(win).on('resize', function(){
		setTimeout(fb_resize, 1000);
	});
}

// WooCommenrce cart
function pagelayer_woo_menu_cart(jEle){
	
	// On click menu cart
	jEle.find('.pagelayer-menu-cart-toggle').click(function(e){
		e.preventDefault();
		jEle.find('.pagelayer-menu-cart-container').toggle();
	});
	
	// On click menu cart close
	jEle.find('.pagelayer-menu-cart-close').click(function(){
		jEle.find('.pagelayer-menu-cart-container').hide();
	});
	
}

// Setup the pop-ups
function pagelayer_popup_setup(popEle){
	
	var jEle = popEle.find('.pagelayer-popup').first();
	var id = jEle.attr('pagelayer-id');
	var popup_content = popEle.find('.pagelayer-popup-modal-content');
	var data = new Object();
	
	// Set the Pou-up id
	popEle.attr('pagelayer-popup-id', id);
	
	if(jEle.length < 1) return;
	
	jQuery.each(jEle[0].attributes, function(index, att){
		if(att.name.match(/data\-/i)){
			data[att.name.substr(5)] = att.value;
		}
	});	
	
	// Show pop-up
	var popup_show = function(force){
				
		// Is there a cookie?
		if( !pagelayer_empty(data['popup_cookie_session']) && !pagelayer_empty(data['popup_cookie_name']) && pagelayer_empty(force)){
			var name = data['popup_cookie_name']+ "=";
			var decodedCookie = decodeURIComponent(document.cookie);
			var ca = decodedCookie.split(';');

			for(var i = 0; i <ca.length; i++) {
				var c = ca[i];
				while (c.charAt(0) == ' ') {
					c = c.substring(1);
				}

				if (c.indexOf(name) == 0) {
					return;
				}
			}
		}
		
		// Avoid multi time open
		if(!pagelayer_empty(popEle.attr('pagelayer-popup-Shown')) && pagelayer_empty(data['popup_multi_time'])){
			return;
		}
			
		popEle.css({'display' : 'flex'});
		popEle.attr('pagelayer-popup-Shown', 1);
		
		// Animate the Pop-up content
		if(!pagelayer_empty(data['popup_animation'])){
			popup_content.addClass(data['popup_animation'] + ' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
				jQuery(this).removeClass(data['popup_animation']+ ' animated');
			});
		}
		
		// Auto close
		if(!pagelayer_empty(data['popup_auto_close'])){
			var cSecond = parseFloat(data['popup_auto_close']);
			setTimeout(function(){
				popEle.find('.pagelayer-popup-close').click();
			}, cSecond * 1000);
		}
		
	}
	
	// Append the close element
	// remove close element
	popEle.find('.pagelayer-popup-close').remove();
	
	// Put close button inside or outside
	if(data['popup_cbtn_position'] == 'outside'){
		popEle.append('<div class="pagelayer-popup-close"><i class="fas fa-times" ></i></div>');
	}else{
		popEle.find('.pagelayer-popup-modal-content').append('<div class="pagelayer-popup-close"><i class="fas fa-times" ></i></div>');
	}  
  
	var closer = popEle.find('.pagelayer-popup-close');
	
	// On click close
	closer.click(function(e){
		jQuery(document).trigger('pagelayer_popup_close', e, popEle);
		e.preventDefault();
		e.stopPropagation();
		popEle.hide();
	});
	
	// Hide pop-up on click modal container
	if ( !pagelayer_empty(data['overlay_close']) ){ 
		popEle.click(function(e){
			if(jQuery(e.target).closest('.pagelayer-popup-modal-content').length > 0) return;
			closer.click();
		});
	}
	
	// Hide pop-up click on selector
	if ( !pagelayer_empty(data['selector_close']) ){ 
		jQuery(data['selector_close']).click(function(e){
			closer.click();
		});
	}
	
	// Is there a cookie to be set to be remembered ?
	if( !pagelayer_empty(data['popup_cookie_session']) && !pagelayer_empty(data['popup_cookie_name']) ){
		
		// Set cookie on close as well ?
		if(!pagelayer_empty(data['popup_cookie_close'])){
			data['popup_cookie_selector'] = '.pagelayer-popup-close'+(pagelayer_empty(data['popup_cookie_selector']) ? '' : ','+data['popup_cookie_selector']);
		}
		
		if(!pagelayer_empty(data['popup_cookie_selector'])){		
			pagelayer_popup_set_cookie(data, closer);
		}
	}
	
	// Pop-up triggers
	// If we are in editor
	if ( !pagelayer_empty(popEle.attr('pagelayer-popup-editor')) ) {
		closer.unbind('click');
		popEle.unbind('click');
		popEle.removeAttr('pagelayer-popup-Shown');
		popup_show(true);
	}
	
	// Click popup show
	if(!pagelayer_empty(data['trig_click'])){
		jQuery(data['trig_click_ele']).click(popup_show);
	}
	
	// Popup show on load
	if(!pagelayer_empty(data['trig_load'])){
		var second = parseFloat(data['trig_load_sec'] || 0);
		setTimeout(popup_show, second * 1000);
	}
	
	// Popup show on scroll
 	if(!pagelayer_empty(data['trig_scroll'])){

		// Initial state
		var scrollPos = 0;
		
		// adding scroll event
		jQuery(window).on('scroll', function(){
			
			// detects new state and compares it with the new one
			if ( scrollY > scrollPos){
				if(data['trig_scroll_dir'] == 'down'){
					let scroll_per = scrollY*100/(jQuery(document).height() - innerHeight);
					let scr_per =parseInt(data['trig_scroll_per']) || 0;
					
					if( scr_per <=  scroll_per){
						popup_show();
					}
				}
			}else if(data['trig_scroll_dir'] == 'up'){
				popup_show();
			}
			
			// saves the new position for iteration.
			scrollPos = scrollY;
		});
	}
	
	// Popup show on scroll to element
	if(!pagelayer_empty(data['trig_scroll_to_ele'])){
		
		// adding scroll event
		jEle.find(data['trig_scroll_to_ele_sel']).on('scroll', function(){
			popup_show();
		});
	}
	
	// On scroll popup show
	if(!pagelayer_empty(data['trig_page_exit_intent'])){
		jQuery(document).on('mouseleave', popup_show);
	}

	// When page load popup hide
	if(!pagelayer_empty(data['trig_before_load'])){
		closer.click();
	}
}

// Sets the cookie
function pagelayer_popup_set_cookie(data, closer){
	jQuery(data['popup_cookie_selector']).click(function(e){
		var exdays = data['popup_cookie_exp'] || 0;
		var d = new Date();
		d.setTime(d.getTime() + ( parseFloat(exdays) *24*60*60*1000));
		var expires = "expires="+ d.toUTCString();
		document.cookie = data['popup_cookie_name'] + "=1;" + expires + ";path=/";
		if(closer && !jQuery(e.target).is(closer)){
			closer.click();
		}
	});
}

// Before After Slider Handler
function pagelayer_before_after_slider(jEle){
	
	let event = jEle.find('.pagelayer-before-after-container').attr('data-resize-event'),
		slider = jEle.find('.pagelayer-before-after-slider'),
		after = jEle.find('.pagelayer-after-image'),
		resizer = jEle.find('.pagelayer-resizer'),
		buttons = jEle.find('.pagelayer-before-btn, .pagelayer-after-btn'),
		plID = jEle.attr('pagelayer-id');
	
	resizer.removeAttr('style');
	after.removeAttr('style');
	
	// z - Custom value for both
	var slideIt = function(e, z){
		
		z = z || false;
		
		let x, y;
		
		if(z != false){
			x =	y = z;
		}else{
			let pos = slider.offset(),
				eleWidth = slider.width(),
				eleHeight = slider.height();
						
			x = Math.min( (e.pageX - pos.left), eleWidth ) * 100 / eleWidth;
			y = Math.min( (e.pageY - pos.top), eleHeight) * 100 / eleHeight;
		}
		
		if(x < 0 || x > 99.7 || y < 0 || y > 99.7){
			return false;
		}

		if(slider.hasClass('pagelayer-before-after-slider-vertical')){
			resizer.css({'top': y+'%'});
			after.css({'clip-path': 'polygon(0px '+y+'%, 100% '+y+'%, 100% 100%, 0% 100%)'});
			return;
		}
		
		resizer.css({'left': x+'%'});
		after.css({'clip-path': 'polygon('+x+'% 0%, 100% 0%, 100% 100%, '+x+'% 100%)'});
	}
	
	var resizeOn = function(){
		slider.addClass('resize');
	}
	
	var resizeOff = function(){
		slider.removeClass('resize');
	}
	
	// Before After Button click handler
	jEle.on('click', '.pagelayer-after-btn, .pagelayer-before-btn', function(e){
		e.stopPropagation();
		e.preventDefault();
		
		var slide = (jQuery(this).hasClass('pagelayer-before-btn')) ? 90 : 10;
		
		// Start resizing
		resizeOn();

		slideIt(e, slide);
		
		// Stop resizing
		resizeOff();
	});
	
	var win = pagelayerGetCurrentWindow();
	var doc = pagelayerGetDocumentElement();
	
	// Unbind All events
	jQuery(win).unbind('mousemove.bf_slider'+plID);
	slider.unbind('click mouseover mouseout');
	resizer.unbind('mousedown');
	jQuery(doc).unbind('mouseup.bf_slider'+plID);
	
	// If there is no events
	if(event == 'none' || pagelayer_empty(event)){
		return;
	}
		
	if(event == 'hover'){
		// No need of buttons while hover effect
		buttons.fadeOut();
		slider.on('mouseover', resizeOn);
		slider.on('mouseout', resizeOff);
	}else{		
		resizer.on('mousedown', function(e){
			// To prevent widgets from being dragged.
			e.stopPropagation();
			e.preventDefault();
			resizeOn();
			buttons.fadeOut();
		});
		
		jQuery(doc).on('mouseup.bf_slider'+plID, function(e){
			resizeOff();
			buttons.fadeIn();
		});
	}

	jQuery(win).on('mousemove.bf_slider'+plID, function(e){
		
		if(!slider.hasClass('resize')){
			return;
		}
		
		// Stop divs being selected.
		e.stopPropagation();
		e.preventDefault();
		
		slideIt(e);
	});
	
	slider.on('click', slideIt);
}

// Image Map Widget
function pagelayer_pl_image_map(jEle){		
	var svgEle = jEle.find('.pagelayer-imgmap-svg');
	var data = [];

	svgEle.find('.pagelayer-imgmap-item').each(function(){
		var data_link = jQuery(this).attr('data-link');
		var data_id = jQuery(this).attr('data-id');
		data[data_id] = data_link;
	});

	pagelayer_resize_imgmap(jEle);

	jQuery(pagelayerGetCurrentWindow()).off('resize.plimgmap').on('resize.plimgmap',function(){
		pagelayer_resize_imgmap(jEle);
	});

	if(!pagelayer_is_live){
		for (const key in data) {
			if(data == undefined ||  data[key].length === 0){
				continue;
			}
			var elem = jEle.find('[data-id='+key+']');
			elem.css({'cursor':'pointer'});
			elem.off('click').on('click',function(){
				window.open(data[key], "_blank");				
			});
		}
		svgEle.addClass('pagelayer-imgmap-hover-active');
	}
}

function pagelayer_resize_imgmap(jEle){
	var svgEle = jEle.find('svg');
	var pathEles = svgEle.find('path');

	if(pathEles.length > 0){
		for (var i = 0; i < pathEles.length; i++) {
			pagelayer_resize_imgmap_item(jQuery(pathEles[i]), jEle);
		}
	}
}

function pagelayer_resize_imgmap_item(path_ele, jEle = ''){

	var wrap = jEle.find('.pagelayer-imgmap-wrapper');
	var img_ele = jEle.find('img');

	// Delay while resizing map
	setTimeout(() => {

		// Auto resize wrapper
		wrap.css('cssText','width:'+img_ele.width()+'px;height:'+img_ele.height()+'px;left:'+img_ele.position().left+'px;top:'+img_ele.position().top+'px;');

		var mapWidth = wrap.width();
		var mapHeight = wrap.height();
		var cords = path_ele.attr('data-cord');
		var isActive = path_ele.hasClass('pagelayer-map-item-active') ? true : false;
		
		cords = cords.split(',');
	
		var tmpArr = [];
		var tmpCord = '';
		var count = 0;
		
		cords.forEach((ele,index) => {
			var prefix = index == 1 ? 'M' : 'L';
			var perc = ele;
	
			if(tmpCord.length == 0){
				tmpCord = (mapWidth / 100) * perc;
			}else{
				var cord = (mapHeight / 100) * perc;
	
				if(pagelayer_is_live){
					var cordWrap = jEle.find('.pagelayer-imgmap-coordinates-wraper');
					var mapId = path_ele.attr('data-id');
					var cord_ele = jEle.find('.pl-cord-'+mapId).eq(count);
					
					if(cord_ele.length == 0){
						var cordHTML = `<div class="pagelayer-imgmap-coord pl-cord-`+mapId+`" title="Drag to reposition" data-id="`+count+`" style="left:`+(tmpCord)+`px;top:`+(cord)+`px" style="display:block;">
							<span class="pagelayer-imgmap-remove-cord fa fa-trash"></span>
						</div>`;
						cordWrap.append(cordHTML);
					}else{
						var visibility = isActive ? 'display:block' : '';
						cord_ele.css('cssText','left:'+tmpCord+'px;top:'+cord+'px;'+visibility);
					}
				}
	
				tmpArr.push(prefix + tmpCord+' '+cord);
	
				tmpCord = '';
				count++;
			}
		});
	
		// Close path denoted by z
		var endOpr = pagelayer_is_live ? '' : 'z';
		var value = tmpArr.join('').toString() + endOpr;
		cords = cords.toString();
		
		path_ele.attr('data-cord',cords);
		path_ele.attr('d',value);

	}, 10);

}

function pagelayer_create_imgmap_svg(classes = [], attrs = []){

	// Create svg path element and append in the svg
	var elem = document.createElementNS('http://www.w3.org/2000/svg', 'path');
	if(classes.length > 0){
		classes.forEach(cls => {
			elem.classList.add(cls);
		});
	}

	if(attrs.length > 0){
		attrs.forEach(attr => {
			elem.setAttribute(attr[0],attr[1]);
		});
	}
	
	return elem;
}js/premium.js000064400000125277151526520750007222 0ustar00

// Render for audio
function pagelayer_render_pl_audio(el){
	
	el.tmp['src-url'] = el.tmp['src-url'] || el.atts['src'];
	
	return;
	
	/*// Do we have a URL ?
	if(!pagelayer_empty(el.atts['a_url'])){
				
		//Get the file extension
		var extension = el.atts['a_url'].substr(el.atts['a_url'].lastIndexOf('.') + 1);
	
		//Create source tag according to audio file
		switch(extension){
			
			default:
			case 'mp3':
				el.atts['a_type'] = 'audio/mpeg';
				break;
			
			case 'ogg':
				el.atts['a_type']= 'audio/ogg';
				break;
			
			case 'wav':
				el.atts['a_type'] = 'audio/wav';
				break;
			
		}
		
	}
	
	// Add the attr
	if(!pagelayer_empty(el.atts['a_url']) && !pagelayer_empty(el.atts['a_type'])){
		el.CSS.attr.push({'sel': '{{element}} source', 'val': 'src="{{a_url}}"'});
		el.CSS.attr.push({'sel': '{{element}} source', 'val': 'type="{{a_type}}"'});
	} */
	
};

function pagelayer_render_end_pl_audio(el){
	var jEle = el.$;
	pagelayer_audio(jEle);
}

// render the video slider
function pagelayer_render_end_pl_video_slider(el){	
	pagelayer_owl_destroy(el.$, '.pagelayer-video-slider-holder');		
	pagelayer_pl_video_slider(el.$);
};

// End Render for splash
function pagelayer_render_end_pl_splash(el){
	
	var jEle = el.$;
	var container = jEle.find('.pagelayer-splash-container');
	
	container.fadeIn();
	
	el.$.find('.pagelayer-splash-close, .pagelayer-splash-bg-close').on('click', function(e){
		container.fadeOut();
	});
	
	if(el.atts['style'] == 'custom'){
		container.css({'background': el.atts['shadow_color'], 'color': el.atts['content_color']});
	}else{
		container.css({'background': '', 'color': ''});
	}
	
	container.removeClass().addClass('pagelayer-splash-container pagelayer-splash-'+el.atts['style']);
}

// Render the Posts
function pagelayer_render_end_pl_posts(el){
	var post = {};
	post['pagelayer_nonce'] = pagelayer_ajax_nonce;
	
	// Page count
	if(el.atts['count']) post['posts_per_page'] = el.atts['count'];
	
	if(el.atts['show_thumb']) post['show_thumb'] = el.atts['show_thumb'];
	if(el.atts['thumb_size']) post['thumb_size'] = el.atts['thumb_size'];
	if(el.atts['show_content']) post['show_content'] = el.atts['show_content'];
	if(el.atts['show_title']) post['show_title'] = el.atts['show_title'];
	if(el.atts['more']) post['more'] = el.atts['more'];
	if(el.atts['btn_type']) post['btn_type'] = el.atts['btn_type'];
	if(el.atts['size']) post['size'] = el.atts['size'];
	if(el.atts['icon_position']) post['icon_position'] = el.atts['icon_position'];
	if(el.atts['icon']) post['icon'] = el.atts['icon'];
	if(el.atts['show_more']) post['show_more'] = el.atts['show_more'];
	if(el.atts['meta_sep']) post['meta_sep'] = el.atts['meta_sep'];
	if(el.atts['exc_length']) post['exc_length'] = el.atts['exc_length'];
	if(el.atts['post_type']) post['post_type'] = el.atts['post_type'];
	if(el.atts['posts_order']) post['order'] = el.atts['posts_order'];
	if(el.atts['inc_term']) post['term'] = el.atts['inc_term'];
	if(el.atts['inc_author']) post['author_name'] = el.atts['inc_author'];
	if(el.atts['exc_term']) post['exc_term'] = el.atts['exc_term'];
	if(el.atts['exc_author']) post['exc_author'] = el.atts['exc_author'];
	if(el.atts['offset']) post['offset'] = el.atts['offset'];
	if(el.atts['ignore_sticky']) post['ignore_sticky'] = el.atts['ignore_sticky'];
	if(el.atts['orderby']) post['orderby'] = el.atts['orderby'];
	if(el.atts['by_period']) post['by_period'] = el.atts['by_period'];
	if(el.atts['before_date']) post['before_date'] = el.atts['before_date'];
	if(el.atts['after_date']) post['after_date'] = el.atts['after_date'];
	if(el.atts['thumb_img_type']) post['thumb_img_type'] = el.atts['thumb_img_type'];
  
	var img_size = el.tmp['def_thumb_img-'+el.atts['thumb_size']+'-url'];
	if(el.atts['def_thumb_img']) post['def_thumb_img'] = pagelayer_empty(img_size) ? el.tmp['def_thumb_img-url'] : img_size;
	
	if(el.atts['meta']){
		var meta_arr = el.atts['meta'].split(',');
		jQuery.each(meta_arr, function(index, value){
			post[value] = value;
		});
	}
	
	if(pagelayer_empty(pagelayer_posts_data) || !pagelayer_compare_object(pagelayer_posts_data, post) || pagelayer_empty(pagelayer_ajax_data[el['id']])){
		
		pagelayer_posts_data = post;
	
		jQuery.ajax({
			url: pagelayer_ajax_url+'action=pagelayer_posts_data',
			type: 'post',
			data: post,
			success: function(data){
				//console.log(data);
				el.$.find('.pagelayer-posts-container').html(data);
				pagelayer_ajax_data[el['id']] = data;
				if(el.atts['enable_slider']){
					pagelayer_pl_posts(el.$);
				}
			}
		});
	}else{
		el.$.find('.pagelayer-posts-container').html(pagelayer_ajax_data[el['id']]);
		if(el.atts['enable_slider']){
			pagelayer_pl_posts(el.$);
		}
	}
}

var pagelayer_folio_data = {};

// Render the Post portfolio
function pagelayer_render_html_pl_post_folio(el){
	
	var post = {};	
	post['pagelayer_nonce'] = pagelayer_ajax_nonce;
	
	if(el.atts['type']) post['post_type'] = el.atts['type'];	
	if(el.atts['filter_by']) post['filter_by'] = el.atts['filter_by'];
	if(el.atts['count']) post['posts_per_page'] = el.atts['count'];// Page count
	
	if(pagelayer_empty(pagelayer_folio_data) || !pagelayer_compare_object(pagelayer_folio_data, post) || pagelayer_empty(pagelayer_ajax_data[el['id']])){
		
		pagelayer_folio_data = post;
		
		jQuery.ajax({
			url: pagelayer_ajax_url+'action=pagelayer_fetch_posts',
			type: 'post',
			data: post,
			success: function(data){
				//console.log(data);
				el.$.find('.pagelayer-postfolio-section').html(data);
				pagelayer_ajax_data[el['id']] = data;
				pagelayer_post_folio(el.$);
			}
		});
		
	}else{
		el.$.find('.pagelayer-postfolio-section').html(pagelayer_ajax_data[el['id']]);
	}
	
}

// Render the chart
function pagelayer_render_pl_chart(el){
	el['atts']['xcolor'] = pagelayer_empty(el['atts']['xcolor']) ? '' : pagelayer_parse_color(el['atts']['xcolor'], false);
	el['atts']['ycolor'] = pagelayer_empty(el['atts']['ycolor']) ? '' : pagelayer_parse_color(el['atts']['ycolor'], false);
}

// Render the chart
function pagelayer_render_end_pl_chart(el){ 
	var jEle = el.$;
	pagelayer_chart(jEle);
}

// Render the chart Dataset
function pagelayer_render_pl_chart_datasets(el){
	el['atts']['chart_border_color'] = pagelayer_empty(el['atts']['chart_border_color']) ? '' : pagelayer_parse_color(el['atts']['chart_border_color'], false);
	el['atts']['bg_color'] = pagelayer_empty(el['atts']['bg_color']) ? '' : pagelayer_parse_color(el['atts']['bg_color'], false);
}

// Render the search form
function pagelayer_render_pl_search(el){
	if('placeholder' in el.atts){
		el.tmp['placeholder'] = pagelayer_htmlEntities(el.atts['placeholder']);
	}
}

// Render the search form
function pagelayer_render_end_pl_search(el){
	pagelayer_search_form(el.$);
}

//var shuffleInstance1 = {};
// Render the img portfolio
function pagelayer_render_end_pl_img_portfolio(el){
	pagelayer_pl_img_portfolio(el.$);
}

// Render the img portfolio
function pagelayer_render_pl_single_img(el){
	
	jQuery(el.$).parent().attr('data-groups','["'+el.atts['cat_name']+'"]');
	
	el.atts['func_img'] = el.tmp['img-'+el.atts['img-size']+'-url'] || el.tmp['img-url'];
	el.atts['func_img'] = el.atts['func_img'] || el.atts['img'];
	
	// What is the link ?
	if('link_type' in el.atts){
		
		// Custom url
		if(el.atts['link_type'] == 'custom_url'){
			el.atts['func_link'] = pagelayer_empty(el.tmp['link']) ? '' : el.tmp['link'];
		}
		
		// Link to the media file itself
		if(el.atts['link_type'] == 'media_file'){
			el.atts['func_link'] = el.tmp['img-url'] || el.atts['img'];
		}
		
		// Lightbox
		if(el.atts['link_type'] == 'lightbox'){
			el.atts['func_link'] = el.tmp['img-url'] || el.atts['img'];
		}
	}
}

// Incase if there is a lightbox
function pagelayer_render_end_pl_single_img(el){
	pagelayer_pl_image(el.$);
}

// Render the wp custom menus
function pagelayer_sc_render_pl_wp_custom_menu(el){ 
	var jEle = el.$;	
	var params = {
		title: pagelayer_get_att(jEle, 'title'),
		nav_menu: pagelayer_get_att(jEle, 'nav_menu')
	};
	
	var wp_custom_menu = jQuery.ajax({
		url: pagelayer_ajax_url+'&action=pagelayer_fetch_wp_custom_menu',
		type: 'POST',
		data: params,
		async: false
	}).responseText;
	
	jEle.find('.pagelayer-wp-custom-menu-container').html(wp_custom_menu);
	
}

// Render the pages
function pagelayer_sc_render_pl_wp_pages(el){ 

	var jEle = el.$;
	
	var params = {
		sortby: pagelayer_get_att(jEle, 'sortby'),
		exclude: pagelayer_get_att(jEle, 'exclude')
	}
	
	var wp_pages = jQuery.ajax({
		url: pagelayer_ajax_url+'&action=pagelayer_fetch_wp_pages',
		type: 'POST',
		data: params,
		async: false
	}).responseText;
	
	jEle.find('.pagelayer-wp-pages-title').html(pagelayer_get_att(jEle, 'title'));
	
	jEle.find('.pagelayer-wp-pages').html(wp_pages);
	
}

// Render tags
function pagelayer_sc_render_pl_wp_search(el){
	var jEle = el.$;
	var title = pagelayer_get_att(jEle, 'title');
	
	//show title for recent comments
	jEle.find('.pagelayer-wp-search-title').empty().text(title);
	
	//Ajax call for fetching recent comments
	jQuery.ajax({
		type: "POST",
		url: pagelayer_ajax_url+'&action=pagelayer_wp_search',
		success: function(response){
			if(!pagelayer_empty(response)){
				jEle.find('.pagelayer-wp-search-option').empty().html(response);
			} 
		}
	});
}

//render tags
function pagelayer_sc_render_pl_wp_rss(el){
	var jEle = el.$;
	var title = '';
	var items = pagelayer_get_att(jEle, 'items');
	var url = pagelayer_get_att(jEle, 'url');
	var summary, author, date = 0;
	
	if(pagelayer_get_att(jEle, 'show_summary') == 'checked'){
		summary = 1;
	}
	if(pagelayer_get_att(jEle, 'show_author') == 'checked'){
		author = 1;
	}
	if(pagelayer_get_att(jEle, 'show_date') == 'checked'){
		date = 1;
	}
	var t = pagelayer_get_att(jEle, 'title');
	if(!pagelayer_empty(t)){
		title = t;
	}
	
	//Ajax call for fetching recent comments
	jQuery.ajax({
		type: "POST",
		url: pagelayer_ajax_url+'&action=pagelayer_wp_rss',
		data: {"num_items": items, "URL" : url, "summary" : summary, "author" : author, "date" : date, "title": title },
		success: function(response){
			if(!pagelayer_empty(response)){
				jEle.find('.pagelayer-wp-rss-option').empty().html(response);
			} 
		}
	});
}

//render tags
function pagelayer_sc_render_pl_wp_meta(el){
	var jEle = el.$;
	var title = '';
	var t = pagelayer_get_att(jEle, 'title');
	if(!pagelayer_empty(t)){
		title = t;
	}
	
	//Ajax call for fetching recent comments
	jQuery.ajax({
		type: "POST",
		url: pagelayer_ajax_url+'&action=pagelayer_wp_meta',
		data: { "title": title },
		success: function(response){
			if(!pagelayer_empty(response)){
				jEle.find('.pagelayer-wp-meta-option').empty().html(response);
			}
		}
	});
};

// Render the image hotspot
function pagelayer_render_pl_image_hotspot(el){  

  // Remove animation classes
	el.$.find('.pagelayer-hotspots-icon-holder').removeClass (function (index, className) {
		return (className.match (/(^|\s)pagelayer-animation-\S+/g) || []).join(' ');
	});
	// Decide the image URL
	el.tmp['img-url'] = el.tmp['img-url'] || el.atts['img'];

}

// Setup of image hotspot
function pagelayer_render_end_pl_image_hotspot(el){
	pagelayer_image_hotspot(el.$);
};

// Render the table
function pagelayer_render_end_pl_table(el){
	pagelayer_table(el.$);
};

// Render the Author Block
function pagelayer_render_pl_author_box(el){
	var jEle = el.$;
	
	if(el.atts['box_source'] == 'current'){
		el.tmp['avatar-url'] = pagelayer_author['avatar'];
		el.atts['display_name'] = pagelayer_author['display_name'];
		el.atts['description'] = pagelayer_author['description'];
		el.atts['user_url'] = pagelayer_author['user_url'];
	}else{
		el.tmp['avatar-url'] = el.tmp['avatar-url'] || el.atts['avatar'];
	}
	
	el.atts['display_html'] = '<'+el.atts['name_style']+'>'+el.atts['display_name']+'</'+el.atts['name_style']+'>';
};


// Render the Sitemap
function pagelayer_render_pl_sitemap_item(el){
	var jEle = el.$;
	
	var html_element = '';
	var data_type = '', post_order = '', order = '', hier = '', depth = '';
	
	if(el.atts['sitemap_type'] == 'post_type'){
		
		if(pagelayer_empty(el.atts['title'])){
			el.atts['title'] = 'Pages';
		}
		
		data_type = el.atts['source_post'];		
		post_order = el.atts['order_post'];
		order = el.atts['order'];
		hier = el.atts['hierarchical'];
		depth = el.atts['depth'];
		
		jQuery.ajax({
			type: "POST",
			url: pagelayer_ajax_url+'&action=pagelayer_get_pages_list',
			data: { 
				"type": data_type , 
				"post_order": post_order, 
				"order": order, 
				"hier": hier, 
				"depth": depth,
				pagelayer_nonce: pagelayer_ajax_nonce
			},
			async:false,
			success: function(response){
				html_element += '<div class="pagelayer-sitemap-section">';
				html_element += '<span>'+el.atts['title']+'</span>';
				html_element += response;
				html_element += '</div>';
				//jEle.find('.pagelayer-sitemap-section').html(html_element);
				el.atts['sitemap_html'] = html_element;
			}
		});
	}else{
		if(pagelayer_empty(el.atts['title'])){
			el.atts['title'] = 'Categories';
		}
		
		data_type = el.atts['source_taxonomy'];

		post_order = el.atts['order_taxonomy'];
		order = el.atts['order'];
		hier = el.atts['hierarchical'];
		depth = el.atts['depth'];
		empty = el.atts['hide_empty'];
		
		jQuery.ajax({
			type: "POST",
			url: pagelayer_ajax_url+'&action=pagelayer_get_taxonomy_list',
			data: { 
				"type": data_type , 
				"post_order": post_order, 
				"order": order, 
				"hier": hier, 
				"depth": depth,
				"empty": empty,
				pagelayer_nonce: pagelayer_ajax_nonce
			},
			async:false,
			success: function(response){
				html_element += '<div class="pagelayer-sitemap-section">';
				html_element += '<span>'+el.atts['title']+'</span>';
				html_element += response;	
				html_element += '</div>';
				//jEle.find('.pagelayer-sitemap-section').html(html_element);	
				el.atts['sitemap_html'] = html_element;
			}
		});
	}
		
};

// Render the fb button
function pagelayer_render_pl_fb_btn(el){
	jEle = el.$;
	if(el.atts['link_type'] == "current"){
		el.atts['custom-url'] = pagelayer_post_permalink;
	}
	pagelayer_fb_apps(el.$);
};

// Render the fb embed
function pagelayer_render_pl_fb_embed(el){
	pagelayer_fb_apps(el.$);
};

// Render the fb page
function pagelayer_render_pl_fb_page(el){
	pagelayer_fb_apps(el.$);
};

// Render the fb comments
function pagelayer_render_pl_fb_comments(el){
	jEle = el.$;
	if(el.atts['link_type'] == "current"){
		el.atts['custom-url'] = pagelayer_post_permalink;	
	}
	pagelayer_fb_apps(el.$);
};

// Render the slides
function pagelayer_render_end_pl_slides(el){
	pagelayer_owl_destroy(el.$, '.pagelayer-slides-holder');		
	pagelayer_pl_slides(el.$);
}

// Render the Single Review
function pagelayer_render_end_pl_review(el){
	var jEle = el.$.find('.pagelayer-stars-container');
	pagelayer_stars(jEle);
}

// Render the Review Slider
function pagelayer_render_end_pl_review_slider(el){
	pagelayer_owl_destroy(el.$, '.pagelayer-reviews-holder');		
	pagelayer_reviews_slider(el.$);
}

// Render the template content
function pagelayer_render_pl_templates(el){
	
	el.atts['template_content'] = '';
	
	if( !pagelayer_empty(el.atts['templates']) ){
		jQuery.ajax({
			url: pagelayer_ajax_url+'&action=pagelayer_apply_revision&revisionID='+el.atts['templates'],
			type: 'post',
			data: {
				pagelayer_nonce: pagelayer_ajax_nonce,
				'pagelayer-live' : 1,
			},
			success: function(response, status, xhr){
			
				var obj = jQuery.parseJSON(response);
				if(obj['error']){
					pagelayer_show_msg(obj['error'], 'error');
					el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'});
				}else{
					el.$.find('.pagelayer-template-content').html(obj['content']);
					var selector = el.$.find('.pagelayer-template-content .pagelayer-ele');
					//pagelayer_element_setup(selector, true);
					//selector.find('.pagelayer-ele-overlay').remove();
					
					// Unwrap the wraps
					if(selector.parent().is('.pagelayer-ele-wrap')){
						selector.unwrap();
					}
				}
			}
		});
	}else{
		el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'});
	}
	
}

/////////////////////////////
////WooCommerce Shortcode Js  
/////////////////////////////

var product_data_timer = {};

function pagelayer_ajax_do_shortcodes(el, success){
	
	var jEle = el.$;
	var shortcode_data = pagelayer_generate_sc(jEle, true);
	
	// Clear any previous timeout
	clearTimeout(product_data_timer[el.id]);
	
	// Set a timer for constant change
	product_data_timer[el.id] = setTimeout(function(){
		// Make the call
		jQuery.ajax({
			url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes',
			type: 'POST',
			data: {
				pagelayer_nonce: pagelayer_ajax_nonce,
				shortcode_data: shortcode_data
			},
			success: function(data){
				if(typeof success == 'function'){
					success(data);
					return;
				}
				
				var container = jQuery(data).find(success);
				
				if(container.length > 0){
					data = container.html();
				}
				
				el.$.find(success).html(data);
			}
		});
	}, 200);
}

// Render the product image
function pagelayer_render_pl_product_images(el){
	
	el.atts['product_images_templ'] = '';
	
	var success = function(data){
		var container = jQuery(data).find('.pagelayer-product-images-container');
		
		if(container.length > 0){
			data = container.html();
		}
		
		el.$.find('.pagelayer-product-images-container').html(data);
		
		jQuery(".woocommerce-product-gallery").each( function() {
			jQuery(this).wc_product_gallery();
		});
	}
	
	pagelayer_ajax_do_shortcodes(el, success);
	
}

// Render product price
function pagelayer_render_pl_product_price(el){	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-price-container');
}

function pagelayer_render_pl_product_short_desc(el) {	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-short-desc');
}

// Render product add to cart
function pagelayer_render_pl_add_to_cart(el){	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-add-to-cart-holder');
}

// Render product product meta
function pagelayer_render_pl_product_meta(el){	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-meta');
}

// Render product product meta
function pagelayer_render_pl_product_addi_info(el){
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-addi-info-container');
}

// Render product product meta
function pagelayer_render_pl_product_data_tabs(el){	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-data-tabs-container');
}

// Render product product rating
function pagelayer_render_pl_product_rating(el){	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-rating');
}

// Render the related product
function pagelayer_render_pl_product_related(el){
	
	el.atts['related_products'] = '';
	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-related-container');
	
}

// Render the WooCommerce pages
function pagelayer_render_pl_woo_pages(el){
	
	el.atts['page_content'] = '';
	var shortcode ='';
	
	// if is not empty
	if( !pagelayer_empty(el.atts['pages']) ){
		shortcode = '['+ el.atts['pages'] +']';
	}
	
	jQuery.ajax({
		url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes',
		type: 'post',
		data: {
			pagelayer_nonce: pagelayer_ajax_nonce,
			shortcode_data: shortcode,
		},
		success: function(response){
						
			// If the content is empty
			if(pagelayer_empty(response)){
				response = '<div class="woocommerce">Content not found</div>';
			}
			
			// if is checkout page
			if ( 'woocommerce_checkout' === el.atts['pages'] && '<div class="woocommerce"></div>' ==  $content ) {
				response = '<div class="woocommerce">Your cart is currently empty.</div>';
			}
			
			el.$.find('.pagelayer-woo-pages-container').html(response);
		}
	});
	
}

// Render the WooCommerce pages
function pagelayer_render_pl_product_categories(el){
	
	el.atts['product_categories'] = '';
	
	// Clear any previous timeout
	clearTimeout(product_data_timer[el.id]);
	
	// Set a timer for constant change
	product_data_timer[el.id] = setTimeout(function(){
			
		jQuery.ajax({
			url: pagelayer_ajax_url+'&action=pagelayer_product_categories',
			type: 'post',
			data: {
				pagelayer_nonce: pagelayer_ajax_nonce,
				atts: el.atts,
			},
			success: function(response){				
				el.$.find('.pagelayer-product-categories-container').html(response);
			}
		});
		
	}, 200);
	
}

// Render the archive products
function pagelayer_render_pl_product_archives(el){
	
	el.atts['product_archives'] = '';
	
	pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-archives-container');
	
}

// Render the products
function pagelayer_render_pl_products(el){
	
	el.atts['products_content'] = '';
	
	// Clear any previous timeout
	clearTimeout(product_data_timer[el.id]);
	
	// Set a timer for constant change
	product_data_timer[el.id] = setTimeout(function(){
			
		jQuery.ajax({
			url: pagelayer_ajax_url+'&action=pagelayer_products_ajax',
			type: 'post',
			data: {
				pagelayer_nonce: pagelayer_ajax_nonce,
				atts: el.atts,
			},
			success: function(response){				
				el.$.find('.pagelayer-products-container').html(response);
			}
		});
		
	}, 200);
	
}

// Render the products
function pagelayer_render_end_pl_woo_menu_cart(el){
	
	var success = function(data){
		var html = jQuery(data).find('.pagelayer-woo-menu-cart-container').html();
		el.$.find('.pagelayer-woo-menu-cart-container').html(html);
		
		pagelayer_woo_menu_cart(el.$);
	}
	
	pagelayer_ajax_do_shortcodes(el, success);
}

// Function to sticky the element on render, if sticky attr is set
pagelayer_add_action('pagelayer_sc_render_end', function(e, el){		
	
	// Is there any adding_attribute attribute then initialize in editor
	if(el.atts['ele_attributes']){
		pagelayer_add_attributes(el);
	}
	
	// Is there any scrolling effects then initialize in editor
	if(el.atts['ele_scrolling_effects']){
		pagelayer_scrolling_effects(el.$);
	}	
	
	// Is there any mouse effects then initialize in editor
	if(el.atts['ele_mouse_effects']){
		pagelayer_mouse_effects(el.$);
	}
	
	//console.log(el);
	if(pagelayer_empty(el.atts['ele_sticky_pos'])){return;}
	
	// Do sticky the elemen
	pagelayer_ele_sticky_handler(el.$);
	
});

// Adding Custom Attributes
var pagelayer_custom_attr = {};	
function pagelayer_add_attributes(el){

	// Remove all attributes first	  
	if(el.id in pagelayer_custom_attr){
		pagelayer_custom_attr[el.id].forEach(function(item, index){
			el.$.removeAttr(item);
		});  
	}
  
	pagelayer_custom_attr[el.id] = [];
  	
	// Then create attributes
	var val = pagelayer_trim(el.atts['ele_attributes'].split(';'));
			
	val.forEach(function(item, index){
		
		// Split from first equal only
		var splitValue = item.split(/=(.*)/);
		var attKey = pagelayer_trim(splitValue[0]);
		
		pagelayer_custom_attr[el.id].push(attKey);
		
		if(attKey.length < 1 || pagelayer_empty(attKey.match(/^[a-z_]+[\w:.-]*$/i))){
			return;
		}
		
		if(splitValue.length < 2){
			el.$.attr(attKey, '');
			return;
		}
		
		el.$.attr(attKey, splitValue[1]);
		
	});
}
	
// Function to always show Popup when editing the popup
pagelayer_add_action('pagelayer_setup_history', function(){
	
	if(!('pagelayer_template_type' in pagelayer_post && pagelayer_post['pagelayer_template_type'] == 'popup')){
		return;
	}

	jQuery(pagelayer_editable).wrap('<div class="pagelayer-popup-modal" pagelayer-popup-editor="1">'+
		'<div class="pagelayer-popup-modal-content">'+
			'<div class="pagelayer-popup-content">'+
			'</div>'+
		'</div>'+
	'</div>');
	
	pagelayer.$$('.pagelayer-settings-icon, .pagelayer-settings').attr('pagelayer-tag', 'pl_popup');
	pagelayer.$$('.pagelayer-settings').click();
	pagelayer_popup_setup(jQuery('[pagelayer-popup-editor="1"]'));
});

pagelayer_last_popup = {anim:'', close: ''};

// Render the pop-up
function pagelayer_render_end_pl_popup(el){
	
	// If the anim is same dont render animation again
	if(pagelayer_last_popup.anim == el.atts['popup_animation'] && pagelayer_last_popup.close == el.atts['popup_cbtn_position']){
		return;
	}
	
	// Set the new type
	pagelayer_last_popup.anim = el.atts['popup_animation'];
	pagelayer_last_popup.close = el.atts['popup_cbtn_position'];
	
	var modal = el.$.closest('.pagelayer-popup-modal');
	
	if(modal.length > 0){
		pagelayer_popup_setup(modal);
	}
}

// Render the call to action widget
function pagelayer_render_pl_call(el){
	el.tmp['cta_image-url'] = el.tmp['cta_image-url'] || el.atts['cta_image'];
}

//Render before after slider
function pagelayer_render_pl_before_after(el){
	el.tmp['before_image-url'] = el.tmp['before_image-url'] || el.atts['before_image'];
	el.tmp['after_image-url'] = el.tmp['after_image-url'] || el.atts['after_image'];
}

function pagelayer_render_end_pl_before_after(el){
	pagelayer_before_after_slider(el.$);
}

// Render the image map
function pagelayer_render_pl_image_map(el){
	
	el.atts['map_img_id'] = el.tmp['img_map-id-'+el.atts['img_map-size']+'-url'] || el.tmp['map_img-id-url'];
	el.atts['map_img_id'] = el.atts['map_img_id'] || el.atts['map_img-id'];
	el.atts['pagelayer-srcset'] = el.atts['map_img_id']+', '+el.atts['map_img_id']+' 1x, ';

	if (el.atts['pagelayer_image_map']) {
		el.atts['pagelayer_map_path'] = ''; 
		for (const key in el.atts['pagelayer_image_map']) {
			const data_cord = el.atts['pagelayer_image_map'][key]?.path || '';
			const data_id = key; 
			const data_link = el.atts['pagelayer_image_map'][key]?.link || '';
			el.atts['pagelayer_map_path'] += `<path class='pagelayer-imgmap-item' d='${data_cord}' stroke-width='2' data-cord='${data_cord}' data-id='${data_id}' fill-opacity='0.3' fill-rule='evenodd' data-link='${data_link}'></path>`;
		}
	}

	var image_atts = {
		name : 'map_img-id',
		size : 'img_map-size'
	};
	
	pagelayer_get_img_src(el, image_atts);
}

function pagelayer_render_end_pl_image_map(el){
	// Re-render image maps
	pagelayer_pl_image_map(el.$);
	
	// Re-render image map handler
	pagelayer_imgmap_handler(el.$);
}

// Image Map handler
function pagelayer_imgmap_handler(jEle){
	
	var mapObj = pagelayer_get_att(jEle,'pagelayer_image_map') || {},
		sEle = jEle.find('svg'),
		cordWrap = jEle.find('.pagelayer-imgmap-coordinates-wraper'),
		toolbar = jEle.find('.pagelayer-imgmap-toolbar'),
		wrap = jEle.find('.pagelayer-imgmap-wrapper');
	
	// Cords drag handler
	var handle_cord_drag = function(jEle){
		var cordEle = jEle.find('.pagelayer-imgmap-coord');
		var isDragging = false;

		const stopDragging = () => {
			isDragging = false;
			cordEle.removeClass('pagelayer-mapele-dragging').off('mouseup click');
			jQuery(document).off('mouseup.imgmap');
		};

		cordEle.off('mousedown').on('mousedown', function (e) {
			e.stopPropagation();
			e.preventDefault();

			if (jQuery(e.target).hasClass('pagelayer-imgmap-remove-cord')) return;

			isDragging = true;
			jQuery(this).addClass('pagelayer-mapele-dragging').mouseup(stopDragging).click(stopDragging);

			jQuery(document).on('mouseup.imgmap', stopDragging);

			sEle.off('mouseup mousemove');

			sEle.mouseup(function(e){
				isdragging = false;
			});

			sEle.mousemove(function (e) {
				if (!isDragging) return;

				const dragEle = jEle.find('.pagelayer-imgmap-coord.pagelayer-mapele-dragging');
				if (!dragEle.length) return;

				const xPer = ((e.offsetX / wrap.width()) * 100).toFixed(2);
				const yPer = ((e.offsetY / wrap.height()) * 100).toFixed(2);

				dragEle.css({ left: `${xPer}%`, top: `${yPer}%` });
				update_active_element_coordinates(xPer, yPer, dragEle.data('id'));
			});
		});
	}

	// Update active element's coordinates
	var update_active_element_coordinates = function(x, y, id){
		const activeEle = jEle.find('.pagelayer-imgmap-item.pagelayer-map-item-active');
		const coords = activeEle.attr('data-cord').split(',');
		coords.splice(id * 2, 2, x, y);
		activeEle.attr('data-cord', coords.join(','));
		pagelayer_resize_imgmap(jEle);
	};
	
	// Delete cord handler
	var cord_delete_handler = function(e){
		e.stopPropagation();
		const parent = jQuery(this).parent();
		const cordPos = parent.attr('data-id');
		const activeEle = sEle.find('.pagelayer-map-item-active');
		const activeEleId = activeEle.attr('data-id');
		// Remove coordinates
		const cords = activeEle.attr('data-cord').split(',');
		cords.splice(cordPos * 2, 2);
		activeEle.attr('data-cord', cords.join(','));
		parent.remove();
		// Reindex coordinates and resize the image map
		jEle.find(`.pl-cord-${activeEleId}`).each((index, elem) => {
			jQuery(elem).attr('data-id', index);
		});
		pagelayer_resize_imgmap(jEle);
	}
	
	// Map items click handler
	var handleClick = function(){
		
		if(sEle.find('.pagelayer-map-item-active').length > 0){
			return;
		}
		
		sEle.find('.pagelayer-map-item-active_is_editable').removeClass('pagelayer-map-item-active_is_editable')

		var imageMapItem = jQuery(this).addClass('pagelayer-map-item-active_is_editable');

		set_toolbar_editable(true, 'selected');
		
		// Edit map item
		toolbar.find('.pagelayer-map_edit').off('click').on('click', function (e){
			e.preventDefault();
			editItem(imageMapItem);
		});
		
		
		jEle.on('click.handleOutsideClick', function(event){
			event.preventDefault();
			if(sEle.find('.pagelayer-map-item-active').length > 0){
				return;
			}

			if(!jQuery(event.target).hasClass('pagelayer-imgmap-item')){
				imageMapItem.removeClass('pagelayer-map-item-active_is_editable');
				set_toolbar_editable(false, 'selected');
				set_toolbar_editable(false);
				jEle.off('click.handleOutsideClick');
			}
		});
	}
	
	// Remove image map item
	var remove_map_item = function(id){
		if(id in mapObj) delete mapObj[id];
		pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj);
		handle_navigator(id, 'delete');
		cordWrap.find('.pl-cord-'+id).remove();
		jEle.find('.pagelayer-imgmap-item[data-id="'+id+'"]').remove();
	}
	
	// Edit Map Item
	var editItem = function(imageMapItem){
		setTimeout(() => {
			set_toolbar_editable(true);
			
			imageMapItem.removeClass('pagelayer-map-item-active_is_editable').addClass('pagelayer-map-item-active');
		
			sEle.css('cursor', 'crosshair');
			
			var updatedActId = imageMapItem.attr('data-id');
			var link = (mapObj[updatedActId] && mapObj[updatedActId].link && mapObj[updatedActId].link.length > 0) ? mapObj[updatedActId].link : '';
			if (link.length > 0) toolbar.find('.pagelayer-map_href').css('color', 'blue');
			cordWrap.find(`.pl-cord-${updatedActId}`).show();
			toolbar.find('.pagelayer-imgmap-toolbar-link input[type=text]').val(link);
			
			handle_navigator(updatedActId, 'set_active');
			handle_cord_drag(jEle);
			
			cordWrap.find('.pagelayer-imgmap-remove-cord').off('click').on('click', cord_delete_handler);
			
		}, 100);
	}
	
	// Add Toolbar
	if(toolbar.length < 1){
		var toolbarHtml = `<div class="pagelayer-imgmap-toolbar">
			<span class="pagelayer-imgmap-toolbar-mover" title="Drag Toolbar"></span>
			<button class="pagelayer-imgmap-toolbar-item pagelayer-map_append" title="Add"><i class="fas fa-plus"></i></button>
			<button class="pagelayer-imgmap-toolbar-item pagelayer-map_save" title="Save"><i class="fas fa-check"></i></button>
			<button class="pagelayer-imgmap-toolbar-item pagelayer-map_edit" title="Edit"><i class="fas fa-edit"></i></button>
			<button class="pagelayer-imgmap-toolbar-item pagelayer-map_href" title="Insert Link"><i class="fas fa-link"></i></button>
			<button class="pagelayer-imgmap-toolbar-item pagelayer-map_remove" title="Delete"><i class="fas fa-trash"></i></button>
			<div class="pagelayer-imgmap-toolbar-link">
				<input type="text" name="url" placeholder="https://example.com" autocomplete="off">
				<span class="pagelayer-imgmap-save-link pagelayer-btn-success">Save</span>
			</div>
			<button class="pagelayer-map-list-trigger" title="Navigator"><i class="fas fa-sitemap"></i></button>
			<div class="pagelayer-imgmap-navigator">
				<div class="pagelayer-imgmap-navigator-header">
					<i class="fas fa-sitemap"></i><span>Navigator</span>
					<span class="fa fa-remove pagelayer-imgmap-navigator-close"></span>
				</div>
				<div class="pagelayer-imgmap-navigator-wrap"></div>
			</div>
		</div>`;

		toolbar = wrap.append(toolbarHtml).find('.pagelayer-imgmap-toolbar');
	}
	
	var linkWrap = toolbar.find('.pagelayer-imgmap-toolbar-link'),
		linkEle = linkWrap.find('input[type="text"]'),
		navigator = toolbar.find('.pagelayer-imgmap-navigator'),
		navigatorWrap = navigator.find('.pagelayer-imgmap-navigator-wrap');
		
	// Change mode of Toolbar
	var set_toolbar_editable = function(on = true, mode = 'edit'){
		
		var edit = mode;
		var select = mode == 'edit'? 'selected' : 'edit';
		
		// Toggle editing options
		if(on){
			toolbar.addClass('pagelayer-imgmap-'+edit);
			toolbar.removeClass('pagelayer-imgmap-'+select);
			return;
		}
		
		toolbar.removeClass('pagelayer-imgmap-'+edit);
	}
	
	// On move Toolbar	
	toolbar.find('.pagelayer-imgmap-toolbar-mover').off('mousedown').on('mousedown', e => {
		e.preventDefault();
		toolbar.addClass('pagelayer-imgmap-toolbar-dragging');
		sEle.on('mousemove', e => {
			toolbar.hasClass('pagelayer-imgmap-toolbar-dragging') &&
				toolbar.css({ left: `${e.offsetX - 5}px`, top: `${e.offsetY - 5}px` });
		});
		jQuery(document).off('mousedown.pl_svg_ele').on('mouseup.pl_svg_ele', () => {
			toolbar.removeClass('pagelayer-imgmap-toolbar-dragging');
			sEle.off('mousemove');
		});
	});
	
	// Toolbar actions
	toolbar.find('.pagelayer-imgmap-toolbar-item').off('click').on('click', function(e){
		e.stopPropagation();

		var tEle = jQuery(this),
			activeEle = sEle.find('.pagelayer-map-item-active'),
			actEleId = activeEle.attr('data-id'),
			isEditing = false;

		if(linkEle.length < 1) toolbar.find('.pagelayer-map_href').css('color', 'inherit');
		sEle.css('cursor','initial');
		
		// Add new map item
		if(tEle.hasClass('pagelayer-map_append')){
			var eleId = pagelayer_randstr(6),
				attrs = [
					['d',''], ['data-id', eleId], ['stroke-linejoin', 'round'],
					['fill-rule', 'evenodd'], ['fill-opacity', '0.3'], ['stroke-width', '2'],
					['data-cord', '{{data}}'], ['data-link', '{{link_href}}']
				],
				pathEle = pagelayer_create_imgmap_svg(['pagelayer-imgmap-item', 'pagelayer-map-item-active'], attrs);

			handle_navigator(eleId, 'append', true);
			sEle.find('g')[0].appendChild(pathEle);
			sEle.find('.pagelayer-imgmap-item').on('click', handleClick);
			isEditing = true;
		}
		
		// Remove map item
		if(tEle.hasClass('pagelayer-map_remove')){
			let activeId = sEle.find('.pagelayer-map-item-active, .pagelayer-map-item-active_is_editable').attr('data-id');
			remove_map_item(activeId);
		}
		
		// Link to map item
		if(tEle.hasClass('pagelayer-map_href')){
			toolbar.find('.pagelayer-imgmap-toolbar-link').fadeToggle();
			isEditing = true;
		}
		
		// Save map item cords
		if(tEle.hasClass('pagelayer-map_save')){
			if(cordWrap.find('.pl-cord-' + actEleId).length < 3){
				return alert('Please draw at least 3 coordinates!');
			}
			
			var finalValues = activeEle.attr('data-cord') || '',
			currentItem = navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${actEleId}"]`),
			title = currentItem.find('.pagelayer-imgmap-navigator-title').text();
			
			mapObj[actEleId] = mapObj[actEleId] || {};
			mapObj[actEleId].path = finalValues || '';
			mapObj[actEleId].title = title || '';
	
			pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj);
	
			jQuery('.pagelayer-map_href').css('color', linkWrap.css('display') == 'block' && linkEle.val() ? 'blue' : 'inherit');
			handle_navigator(actEleId, 'reset_active');
	
			cordWrap.find('.pl-cord-' + actEleId).hide();
			cordWrap.find('.pagelayer-imgmap-coord').removeClass('pagelayer-mapele-dragging');
			sEle.find('.pagelayer-imgmap-item').removeClass('pagelayer-map-item-active');
		}
		
		// Toggle editing options
		set_toolbar_editable(isEditing);
		
	});
	
	// Save link of map items
	jEle.find('.pagelayer-imgmap-save-link').click(function() {
		let parent = jQuery(this).parent();
		let actEleId = sEle.find('.pagelayer-map-item-active').data('id');
		mapObj = mapObj || {};
		(mapObj[actEleId] = mapObj[actEleId] || {}).link = parent.find('input').val() || '';
		parent.fadeOut();
	});
	
	// SVG click handler and add new cords to map items
	sEle.off('click').on('click', function(e){
		var activeEle = sEle.find('.pagelayer-map-item-active');

		if(activeEle.length < 1){
			toolbar.css({ left: e.offsetX - 15, top: e.offsetY - 40 });
			return;
		}

		linkEle.val(''); // Reset Link field
		sEle.css('cursor','crosshair'); // Change cursor property

		var [mapWidth, mapHeight] = [wrap.width(), wrap.height()];
		var [xPer, yPer] = [(e.offsetX / mapWidth * 100).toFixed(2), (e.offsetY / mapHeight * 100).toFixed(2)];
		var coords = (activeEle.attr('data-cord') || '');

		coords = (coords == '{{data}}' || coords == '') ? [] : coords.split(',');
		coords.push(xPer, yPer);
		activeEle.attr('data-cord', coords);

		// Append cordinates
		const cordLen = cordWrap.find(`.pl-cord-${activeEle.attr('data-id')}`).length;
		const coordHTML = `<div class="pagelayer-imgmap-coord pl-cord-${activeEle.attr('data-id')}" 
			title="Drag to reposition" data-id="${cordLen}" 
			style="left:${e.offsetX}px; top:${e.offsetY}px;">
				<span class="pagelayer-imgmap-remove-cord fa fa-trash"></span>
			</div>`;

		cordWrap.append(coordHTML);

		setTimeout(() => pagelayer_resize_imgmap(jEle), 100);
		handle_cord_drag(jEle);
		cordWrap.find('.pagelayer-imgmap-remove-cord').off('click mousedown').on('click', cord_delete_handler);
	});
	
	// Map items click handler
	sEle.find('.pagelayer-imgmap-item').on('click', handleClick);
	
	// Toggle navigator
	toolbar.find('.pagelayer-map-list-trigger').off('click').on('click', function(){
		navigator.toggle();
	});
	
	navigator.find('.pagelayer-imgmap-navigator-close').on('click',function(){
		navigator.hide();
	});
	
	// Navigator item move handler
	var navigator_move_item = function(curEle, is_next = false) {
		const arr = Object.keys(mapObj);
		const curPos = arr.indexOf(curEle);
	
		if (curPos === -1 || (curPos === 0 && !is_next) || (curPos === arr.length - 1 && is_next)) {
			return false;
		}
		const swapIndex = is_next ? curPos + 1 : curPos - 1;
		[arr[curPos], arr[swapIndex]] = [arr[swapIndex], arr[curPos]]
		mapObj = arr.reduce((newEl, key) => ({ ...newEl, [key]: mapObj[key] }), {});
	
		pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj);
		const elem = jEle.find(`path[data-id="${curEle}"]`);
		is_next ? elem.next().after(elem) : elem.prev().before(elem);
	
		return true;
	}
	
	// Navigator handler
	var handle_navigator = function(id, opr = 'append', is_active = false){
		if (!id) return;		
		const item = navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${id}"]`);

		switch(opr){
			case 'append':
				if (item.length > 0) return;
				const wrapItems = navigatorWrap.children('.pagelayer-imgmap-navigator-item').length + 1;
				const cls = is_active ? 'pagelayer-navigator-item-active' : '';
				const title = mapObj[id]?.title || `Map Item ${wrapItems}`;

				const content = `
				<div class="pagelayer-imgmap-navigator-item ${cls}" data-id="${id}">
					<div data-id="${id}" class="pagelayer-imgmap-navigator-item-drag"><i class="fas fa-th-list"></i></div>
					<div class="pagelayer-imgmap-navigator-title">${title}</div>
					<div class="pagelayer-imgmap-navigator-actions">
						${['Move Up', 'Edit', 'Delete', 'Move Down'].map((action, i) => `
							<button value="${id}" class="pagelayer-map-navigator-trigger ${['navigator_move_up', 'navigator_pagelayer-map_edit', 'navigator_pagelayer-map_remove', 'navigator_move_down'][i]}" title="${action}">
								<i class="${['fa fa-arrow-up', 'fa fa-pencil', 'fas fa-trash', 'fa fa-arrow-down'][i]}"></i>
							</button>`).join('')}
					</div>
				</div>`;
				navigatorWrap.append(content);

				var trigger = navigatorWrap.find('.pagelayer-map-navigator-trigger');
				trigger.off('click').on('click', function(e){
					e.stopPropagation();
					var eleId = jQuery(this).val();

					if(jQuery(this).hasClass('navigator_pagelayer-map_edit')){
						const activeEle = sEle.find('.pagelayer-map-item-active');
						
						// Multi Item editing
						if(activeEle.length > 0){
							if(eleId === activeEle.attr('data-id')) return;
							toolbar.find('.pagelayer-imgmap-toolbar-item.pagelayer-map_save').click();
						}
						
						let iEle = jEle.find(`.pagelayer-imgmap-item[data-id="${eleId}"]`);
						iEle.on('click', editItem(iEle));
						
					}else if (jQuery(this).hasClass('navigator_move_down') || jQuery(this).hasClass('navigator_move_up')){
						const par = jQuery(this).closest('.pagelayer-imgmap-navigator-item');
						const moveUp = jQuery(this).hasClass('navigator_move_up');
						const sibling = moveUp ? par.prev() : par.next();

						if(sibling.length > 0){
							navigator_move_item(eleId, !moveUp);
							moveUp ? sibling.before(par) : sibling.after(par);
						}				
					}else if(jQuery(this).hasClass('navigator_pagelayer-map_remove')){
						remove_map_item(eleId);
						toolbar.removeClass('pagelayer-imgmap-edit');
					}
				});
				
				// Make title editable
				navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${id}"] .pagelayer-imgmap-navigator-title`).off('blur').on('click', function (){
					const editable = jQuery(this).attr('contenteditable', 'true').focus();
					const oldVal = editable.text().trim();
					
					editable.on('blur', function (e) {
						const newValue = editable.text().trim();
						if (!newValue) {
							alert('Error changing title');
							editable.text(oldVal);
						}else{
							mapObj[id].title = newValue;
							pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj);
						}
						editable.attr('contenteditable', 'false').off('blur');
					});
				});
				break;

			case 'delete':
				item.remove();
				break;
			case 'reset_active':
				navigatorWrap.find('.pagelayer-imgmap-navigator-item').removeClass('pagelayer-navigator-item-active');
				break;
			case 'set_active':
				if(!item.hasClass('pagelayer-navigator-item-active')){
					item.addClass('pagelayer-navigator-item-active');
					jQuery('.pagelayer-imgmap-navigator-wrap').animate({
						scrollTop: 0
					});
				}
				break;
		}
	}
	
	// Build Navigator
	if(Object.keys(mapObj).length > 0){
		for (var mapId in mapObj) {
			handle_navigator(mapId);
		}
	}

	pagelayer_resize_imgmap(jEle);
	jQuery(window).on('resize', function(){pagelayer_resize_imgmap(jEle)});
}js/shuffle.min.js000064400000046730151526520750007756 0ustar00!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Shuffle=e()}(this,function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function i(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function r(){}r.prototype={on:function(t,e,i){var n=this.e||(this.e={});return(n[t]||(n[t]=[])).push({fn:e,ctx:i}),this},once:function(t,e,i){var n=this;function s(){n.off(t,s),e.apply(i,arguments)}return s._=e,this.on(t,s,i)},emit:function(t){for(var e=[].slice.call(arguments,1),i=((this.e||(this.e={}))[t]||[]).slice(),n=0,s=i.length;n<s;n++)i[n].fn.apply(i[n].ctx,e);return this},off:function(t,e){var i=this.e||(this.e={}),n=i[t],s=[];if(n&&e)for(var o=0,r=n.length;o<r;o++)n[o].fn!==e&&n[o].fn._!==e&&s.push(n[o]);return s.length?i[t]=s:delete i[t],this}};var l=r,a=r;l.TinyEmitter=a;var u="undefined"!=typeof Element?Element.prototype:{},h=u.matches||u.matchesSelector||u.webkitMatchesSelector||u.mozMatchesSelector||u.msMatchesSelector||u.oMatchesSelector,f=function(t,e){if(!t||1!==t.nodeType)return!1;if(h)return h.call(t,e);for(var i=t.parentNode.querySelectorAll(e),n=0;n<i.length;n++)if(i[n]==t)return!0;return!1};var c=function(t,e){var i,n,s,o,r=0;return function(){i=this,n=arguments;var t=new Date-r;return o||(t>=e?l():o=setTimeout(l,e-t)),s};function l(){o=0,r=+new Date,s=t.apply(i,n),i=null,n=null}};function d(){}function m(t){return parseFloat(t)||0}var p=function(){function e(i,n){t(this,e),this.x=m(i),this.y=m(n)}return i(e,null,[{key:"equals",value:function(t,e){return t.x===e.x&&t.y===e.y}}]),e}(),v=function(){function e(i,n,s,o,r){t(this,e),this.id=r,this.left=i,this.top=n,this.width=s,this.height=o}return i(e,null,[{key:"intersects",value:function(t,e){return t.left<e.left+e.width&&e.left<t.left+t.width&&t.top<e.top+e.height&&e.top<t.top+t.height}}]),e}(),y={BASE:"shuffle",SHUFFLE_ITEM:"shuffle-item",VISIBLE:"shuffle-item--visible",HIDDEN:"shuffle-item--hidden"},g=0,_=function(){function e(i){t(this,e),g+=1,this.id=g,this.element=i,this.isVisible=!0,this.isHidden=!1}return i(e,[{key:"show",value:function(){this.isVisible=!0,this.element.classList.remove(y.HIDDEN),this.element.classList.add(y.VISIBLE),this.element.removeAttribute("aria-hidden")}},{key:"hide",value:function(){this.isVisible=!1,this.element.classList.remove(y.VISIBLE),this.element.classList.add(y.HIDDEN),this.element.setAttribute("aria-hidden",!0)}},{key:"init",value:function(){this.addClasses([y.SHUFFLE_ITEM,y.VISIBLE]),this.applyCss(e.Css.INITIAL),this.scale=e.Scale.VISIBLE,this.point=new p}},{key:"addClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.add(t)})}},{key:"removeClasses",value:function(t){var e=this;t.forEach(function(t){e.element.classList.remove(t)})}},{key:"applyCss",value:function(t){var e=this;Object.keys(t).forEach(function(i){e.element.style[i]=t[i]})}},{key:"dispose",value:function(){this.removeClasses([y.HIDDEN,y.VISIBLE,y.SHUFFLE_ITEM]),this.element.removeAttribute("style"),this.element=null}}]),e}();_.Css={INITIAL:{position:"absolute",top:0,left:0,visibility:"visible",willChange:"transform"},VISIBLE:{before:{opacity:1,visibility:"visible"},after:{transitionDelay:""}},HIDDEN:{before:{opacity:0},after:{visibility:"hidden",transitionDelay:""}}},_.Scale={VISIBLE:1,HIDDEN:.001};var E=null,I=function(){if(null!==E)return E;var t=document.body||document.documentElement,e=document.createElement("div");return e.style.cssText="width:10px;padding:2px;box-sizing:border-box;",t.appendChild(e),E="10px"===window.getComputedStyle(e,null).width,t.removeChild(e),E};function b(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window.getComputedStyle(t,null),n=m(i[e]);return I()||"width"!==e?I()||"height"!==e||(n+=m(i.paddingTop)+m(i.paddingBottom)+m(i.borderTopWidth)+m(i.borderBottomWidth)):n+=m(i.paddingLeft)+m(i.paddingRight)+m(i.borderLeftWidth)+m(i.borderRightWidth),n}var S={reverse:!1,by:null,compare:null,randomize:!1,key:"element"};function T(t,e){var i=Object.assign({},S,e),n=Array.from(t),s=!1;return t.length?i.randomize?function(t){for(var e=t.length;e;){e-=1;var i=Math.floor(Math.random()*(e+1)),n=t[i];t[i]=t[e],t[e]=n}return t}(t):("function"==typeof i.by?t.sort(function(t,e){if(s)return 0;var n=i.by(t[i.key]),o=i.by(e[i.key]);return void 0===n&&void 0===o?(s=!0,0):n<o||"sortFirst"===n||"sortLast"===o?-1:n>o||"sortLast"===n||"sortFirst"===o?1:0}):"function"==typeof i.compare&&t.sort(i.compare),s?n:(i.reverse&&t.reverse(),t)):[]}var k={},w="transitionend",C=0;function L(t){return!!k[t]&&(k[t].element.removeEventListener(w,k[t].listener),k[t]=null,!0)}function D(t,e){var i=w+(C+=1),n=function(t){t.currentTarget===t.target&&(L(i),e(t))};return t.addEventListener(w,n),k[i]={element:t,listener:n},i}function z(t){return Math.max.apply(Math,t)}function M(t,e,i,n){var s=t/e;return Math.abs(Math.round(s)-s)<n&&(s=Math.round(s)),Math.min(Math.ceil(s),i)}function A(t,e,i){if(1===e)return t;for(var n=[],s=0;s<=i-e;s++)n.push(z(t.slice(s,s+e)));return n}function F(t,e){for(var i,n=(i=t,Math.min.apply(Math,i)),s=0,o=t.length;s<o;s++)if(t[s]>=n-e&&t[s]<=n+e)return s;return 0}function x(t,e){var i={};t.forEach(function(t){i[t.top]?i[t.top].push(t):i[t.top]=[t]});var n=[],s=[],o=[];return Object.keys(i).forEach(function(t){var r=i[t];s.push(r);var l,a=r[r.length-1],u=a.left+a.width,h=Math.round((e-u)/2),f=r,c=!1;if(h>0){var d=[];(c=r.every(function(t){var e=new v(t.left+h,t.top,t.width,t.height,t.id),i=!n.some(function(t){return v.intersects(e,t)});return d.push(e),i}))&&(f=d)}if(!c&&r.some(function(t){return n.some(function(e){var i=v.intersects(t,e);return i&&(l=e),i})})){var m=o.findIndex(function(t){return t.includes(l)});o.splice(m,1,s[m])}n=n.concat(f),o.push(f)}),[].concat.apply([],o).sort(function(t,e){return t.id-e.id}).map(function(t){return new p(t.left,t.top)})}function O(t){return Array.from(new Set(t))}var N=0,H=function(e){function r(e){var i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,r),(i=o(this,n(r).call(this))).options=Object.assign({},r.options,s),i.options.delimeter&&(i.options.delimiter=i.options.delimeter),i.lastSort={},i.group=r.ALL_ITEMS,i.lastFilter=r.ALL_ITEMS,i.isEnabled=!0,i.isDestroyed=!1,i.isInitialized=!1,i._transitions=[],i.isTransitioning=!1,i._queue=[];var l=i._getElementOption(e);if(!l)throw new TypeError("Shuffle needs to be initialized with an element.");return i.element=l,i.id="shuffle_"+N,N+=1,i._init(),i.isInitialized=!0,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(r,l),i(r,[{key:"_init",value:function(){if(this.items=this._getItems(),this.options.sizer=this._getElementOption(this.options.sizer),this.element.classList.add(r.Classes.BASE),this._initItems(this.items),this._onResize=this._getResizeFunction(),window.addEventListener("resize",this._onResize),"complete"!==document.readyState){var t=this.layout.bind(this);window.addEventListener("load",function e(){window.removeEventListener("load",e),t()})}var e=window.getComputedStyle(this.element,null),i=r.getSize(this.element).width;this._validateStyles(e),this._setColumns(i),this.filter(this.options.group,this.options.initialSort),this.element.offsetWidth,this.setItemTransitions(this.items),this.element.style.transition="height ".concat(this.options.speed,"ms ").concat(this.options.easing)}},{key:"_getResizeFunction",value:function(){var t=this._handleResize.bind(this);return this.options.throttle?this.options.throttle(t,this.options.throttleTime):t}},{key:"_getElementOption",value:function(t){return"string"==typeof t?this.element.querySelector(t):t&&t.nodeType&&1===t.nodeType?t:t&&t.jquery?t[0]:null}},{key:"_validateStyles",value:function(t){"static"===t.position&&(this.element.style.position="relative"),"hidden"!==t.overflow&&(this.element.style.overflow="hidden")}},{key:"_filter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastFilter,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.items,i=this._getFilteredSets(t,e);return this._toggleFilterClasses(i),this.lastFilter=t,"string"==typeof t&&(this.group=t),i}},{key:"_getFilteredSets",value:function(t,e){var i=this,n=[],s=[];return t===r.ALL_ITEMS?n=e:e.forEach(function(e){i._doesPassFilter(t,e.element)?n.push(e):s.push(e)}),{visible:n,hidden:s}}},{key:"_doesPassFilter",value:function(t,e){if("function"==typeof t)return t.call(e,e,this);var i=e.getAttribute("data-"+r.FILTER_ATTRIBUTE_KEY),n=this.options.delimiter?i.split(this.options.delimiter):JSON.parse(i);function s(t){return n.includes(t)}return Array.isArray(t)?this.options.filterMode===r.FilterMode.ANY?t.some(s):t.every(s):n.includes(t)}},{key:"_toggleFilterClasses",value:function(t){var e=t.visible,i=t.hidden;e.forEach(function(t){t.show()}),i.forEach(function(t){t.hide()})}},{key:"_initItems",value:function(t){t.forEach(function(t){t.init()})}},{key:"_disposeItems",value:function(t){t.forEach(function(t){t.dispose()})}},{key:"_updateItemCount",value:function(){this.visibleItems=this._getFilteredItems().length}},{key:"setItemTransitions",value:function(t){var e=this.options,i=e.speed,n=e.easing,s=this.options.useTransforms?["transform"]:["top","left"],o=Object.keys(_.Css.HIDDEN.before).map(function(t){return t.replace(/([A-Z])/g,function(t,e){return"-".concat(e.toLowerCase())})}),r=s.concat(o).join();t.forEach(function(t){t.element.style.transitionDuration=i+"ms",t.element.style.transitionTimingFunction=n,t.element.style.transitionProperty=r})}},{key:"_getItems",value:function(){var t=this;return Array.from(this.element.children).filter(function(e){return f(e,t.options.itemSelector)}).map(function(t){return new _(t)})}},{key:"_mergeNewItems",value:function(t){var e=Array.from(this.element.children);return T(this.items.concat(t),{by:function(t){return e.indexOf(t)}})}},{key:"_getFilteredItems",value:function(){return this.items.filter(function(t){return t.isVisible})}},{key:"_getConcealedItems",value:function(){return this.items.filter(function(t){return!t.isVisible})}},{key:"_getColumnSize",value:function(t,e){var i;return 0===(i="function"==typeof this.options.columnWidth?this.options.columnWidth(t):this.options.sizer?r.getSize(this.options.sizer).width:this.options.columnWidth?this.options.columnWidth:this.items.length>0?r.getSize(this.items[0].element,!0).width:t)&&(i=t),i+e}},{key:"_getGutterSize",value:function(t){return"function"==typeof this.options.gutterWidth?this.options.gutterWidth(t):this.options.sizer?b(this.options.sizer,"marginLeft"):this.options.gutterWidth}},{key:"_setColumns",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.getSize(this.element).width,e=this._getGutterSize(t),i=this._getColumnSize(t,e),n=(t+e)/i;Math.abs(Math.round(n)-n)<this.options.columnThreshold&&(n=Math.round(n)),this.cols=Math.max(Math.floor(n||0),1),this.containerWidth=t,this.colWidth=i}},{key:"_setContainerSize",value:function(){this.element.style.height=this._getContainerSize()+"px"}},{key:"_getContainerSize",value:function(){return z(this.positions)}},{key:"_getStaggerAmount",value:function(t){return Math.min(t*this.options.staggerAmount,this.options.staggerAmountMax)}},{key:"_dispatch",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.isDestroyed||(e.shuffle=this,this.emit(t,e))}},{key:"_resetCols",value:function(){var t=this.cols;for(this.positions=[];t;)t-=1,this.positions.push(0)}},{key:"_layout",value:function(t){var e=this,i=this._getNextPositions(t),n=0;t.forEach(function(t,s){function o(){t.applyCss(_.Css.VISIBLE.after)}if(p.equals(t.point,i[s])&&!t.isHidden)return t.applyCss(_.Css.VISIBLE.before),void o();t.point=i[s],t.scale=_.Scale.VISIBLE,t.isHidden=!1;var r=e.getStylesForTransition(t,_.Css.VISIBLE.before);r.transitionDelay=e._getStaggerAmount(n)+"ms",e._queue.push({item:t,styles:r,callback:o}),n+=1})}},{key:"_getNextPositions",value:function(t){var e=this;if(this.options.isCentered){var i=t.map(function(t,i){var n=r.getSize(t.element,!0),s=e._getItemPosition(n);return new v(s.x,s.y,n.width,n.height,i)});return this.getTransformedPositions(i,this.containerWidth)}return t.map(function(t){return e._getItemPosition(r.getSize(t.element,!0))})}},{key:"_getItemPosition",value:function(t){return function(t){for(var e=t.itemSize,i=t.positions,n=t.gridSize,s=t.total,o=t.threshold,r=t.buffer,l=M(e.width,n,s,o),a=A(i,l,s),u=F(a,r),h=new p(n*u,a[u]),f=a[u]+e.height,c=0;c<l;c++)i[u+c]=f;return h}({itemSize:t,positions:this.positions,gridSize:this.colWidth,total:this.cols,threshold:this.options.columnThreshold,buffer:this.options.buffer})}},{key:"getTransformedPositions",value:function(t,e){return x(t,e)}},{key:"_shrink",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getConcealedItems(),i=0;e.forEach(function(e){function n(){e.applyCss(_.Css.HIDDEN.after)}if(e.isHidden)return e.applyCss(_.Css.HIDDEN.before),void n();e.scale=_.Scale.HIDDEN,e.isHidden=!0;var s=t.getStylesForTransition(e,_.Css.HIDDEN.before);s.transitionDelay=t._getStaggerAmount(i)+"ms",t._queue.push({item:e,styles:s,callback:n}),i+=1})}},{key:"_handleResize",value:function(){this.isEnabled&&!this.isDestroyed&&this.update()}},{key:"getStylesForTransition",value:function(t,e){var i=Object.assign({},e);if(this.options.useTransforms){var n=this.options.roundTransforms?Math.round(t.point.x):t.point.x,s=this.options.roundTransforms?Math.round(t.point.y):t.point.y;i.transform="translate(".concat(n,"px, ").concat(s,"px) scale(").concat(t.scale,")")}else i.left=t.point.x+"px",i.top=t.point.y+"px";return i}},{key:"_whenTransitionDone",value:function(t,e,i){var n=D(t,function(t){e(),i(null,t)});this._transitions.push(n)}},{key:"_getTransitionFunction",value:function(t){var e=this;return function(i){t.item.applyCss(t.styles),e._whenTransitionDone(t.item.element,t.callback,i)}}},{key:"_processQueue",value:function(){this.isTransitioning&&this._cancelMovement();var t=this.options.speed>0,e=this._queue.length>0;e&&t&&this.isInitialized?this._startTransitions(this._queue):e?(this._styleImmediately(this._queue),this._dispatch(r.EventType.LAYOUT)):this._dispatch(r.EventType.LAYOUT),this._queue.length=0}},{key:"_startTransitions",value:function(t){var e=this;this.isTransitioning=!0,function(t,e,i){i||("function"==typeof e?(i=e,e=null):i=d);var n=t&&t.length;if(!n)return i(null,[]);var s=!1,o=new Array(n);function r(t){return function(e,r){if(!s){if(e)return i(e,o),void(s=!0);o[t]=r,--n||i(null,o)}}}t.forEach(e?function(t,i){t.call(e,r(i))}:function(t,e){t(r(e))})}(t.map(function(t){return e._getTransitionFunction(t)}),this._movementFinished.bind(this))}},{key:"_cancelMovement",value:function(){this._transitions.forEach(L),this._transitions.length=0,this.isTransitioning=!1}},{key:"_styleImmediately",value:function(t){if(t.length){var e=t.map(function(t){return t.item.element});r._skipTransitions(e,function(){t.forEach(function(t){t.item.applyCss(t.styles),t.callback()})})}}},{key:"_movementFinished",value:function(){this._transitions.length=0,this.isTransitioning=!1,this._dispatch(r.EventType.LAYOUT)}},{key:"filter",value:function(t,e){this.isEnabled&&((!t||t&&0===t.length)&&(t=r.ALL_ITEMS),this._filter(t),this._shrink(),this._updateItemCount(),this.sort(e))}},{key:"sort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastSort;if(this.isEnabled){this._resetCols();var e=T(this._getFilteredItems(),t);this._layout(e),this._processQueue(),this._setContainerSize(),this.lastSort=t}}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isEnabled&&(t||this._setColumns(),this.sort())}},{key:"layout",value:function(){this.update(!0)}},{key:"add",value:function(t){var e=this,i=O(t).map(function(t){return new _(t)});this._initItems(i),this._resetCols();var n=T(this._mergeNewItems(i),this.lastSort),s=this._filter(this.lastFilter,n),o=function(t){return i.includes(t)},r=function(t){t.scale=_.Scale.HIDDEN,t.isHidden=!0,t.applyCss(_.Css.HIDDEN.before),t.applyCss(_.Css.HIDDEN.after)},l=this._getNextPositions(s.visible);s.visible.forEach(function(t,i){o(t)&&(t.point=l[i],r(t),t.applyCss(e.getStylesForTransition(t,{})))}),s.hidden.forEach(function(t){o(t)&&r(t)}),this.element.offsetWidth,this.setItemTransitions(i),this.items=this._mergeNewItems(i),this.filter(this.lastFilter)}},{key:"disable",value:function(){this.isEnabled=!1}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isEnabled=!0,t&&this.update()}},{key:"remove",value:function(t){var e=this;if(t.length){var i=O(t),n=i.map(function(t){return e.getItemByElement(t)}).filter(function(t){return!!t});this._toggleFilterClasses({visible:[],hidden:n}),this._shrink(n),this.sort(),this.items=this.items.filter(function(t){return!n.includes(t)}),this._updateItemCount(),this.once(r.EventType.LAYOUT,function(){e._disposeItems(n),i.forEach(function(t){t.parentNode.removeChild(t)}),e._dispatch(r.EventType.REMOVED,{collection:i})})}}},{key:"getItemByElement",value:function(t){return this.items.find(function(e){return e.element===t})}},{key:"resetItems",value:function(){var t=this;this._disposeItems(this.items),this.isInitialized=!1,this.items=this._getItems(),this._initItems(this.items),this.once(r.EventType.LAYOUT,function(){t.setItemTransitions(t.items),t.isInitialized=!0}),this.filter(this.lastFilter)}},{key:"destroy",value:function(){this._cancelMovement(),window.removeEventListener("resize",this._onResize),this.element.classList.remove("shuffle"),this.element.removeAttribute("style"),this._disposeItems(this.items),this.items.length=0,this._transitions.length=0,this.options.sizer=null,this.element=null,this.isDestroyed=!0,this.isEnabled=!1}}],[{key:"getSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=window.getComputedStyle(t,null),n=b(t,"width",i),s=b(t,"height",i);if(e){var o=b(t,"marginLeft",i),r=b(t,"marginRight",i),l=b(t,"marginTop",i),a=b(t,"marginBottom",i);n+=o+r,s+=l+a}return{width:n,height:s}}},{key:"_skipTransitions",value:function(t,e){var i=t.map(function(t){var e=t.style,i=e.transitionDuration,n=e.transitionDelay;return e.transitionDuration="0ms",e.transitionDelay="0ms",{duration:i,delay:n}});e(),t[0].offsetWidth,t.forEach(function(t,e){t.style.transitionDuration=i[e].duration,t.style.transitionDelay=i[e].delay})}}]),r}();return H.ShuffleItem=_,H.ALL_ITEMS="all",H.FILTER_ATTRIBUTE_KEY="groups",H.EventType={LAYOUT:"shuffle:layout",REMOVED:"shuffle:removed"},H.Classes=y,H.FilterMode={ANY:"any",ALL:"all"},H.options={group:H.ALL_ITEMS,speed:250,easing:"cubic-bezier(0.4, 0.0, 0.2, 1)",itemSelector:"*",sizer:null,gutterWidth:0,columnWidth:0,delimiter:null,buffer:0,columnThreshold:.01,initialSort:null,throttle:c,throttleTime:300,staggerAmount:15,staggerAmountMax:150,useTransforms:!0,filterMode:H.FilterMode.ANY,isCentered:!1,roundTransforms:!0},H.Point=p,H.Rect=v,H.__sorter=T,H.__getColumnSpan=M,H.__getAvailablePositions=A,H.__getShortColumn=F,H.__getCenteredPositions=x,H});
//# sourceMappingURL=shuffle.min.js.map
init.php000064400000016270151526520750006236 0ustar00<?php

// We need the ABSPATH
if (!defined('ABSPATH')) exit;

// Ok so we are now ready to go
register_activation_hook(PAGELAYER_PRO_FILE, 'pagelayer_pro_activation');

// Prevent update of pagelayer free
// This also work for auto update
add_filter('site_transient_update_plugins', 'pagelayer_pro_disable_manual_update_for_plugin');
add_filter('pre_site_transient_update_plugins', 'pagelayer_pro_disable_manual_update_for_plugin');

// Auto update free version after update pro version
add_action('upgrader_process_complete', 'pagelayer_pro_update_free_after_pro', 10, 2);

// Add the action to load the plugin
add_action('plugins_loaded', 'pagelayer_pro_load_plugin');

// The function that will be called when the plugin is loaded
function pagelayer_pro_load_plugin(){

	global $pagelayer;
	
	// Load license
	pagelayer_pro_load_license();
	
	// Check if the installed version is outdated
	pagelayer_pro_update_check();
	
	// Load the language
	load_plugin_textdomain('pagelayer-pro', false, PAGELAYER_PRO_SLUG.'/languages/');
	
	// Check for updates
	include_once(PAGELAYER_PRO_DIR.'/main/plugin-update-checker.php');
	$pagelayer_updater = Pagelayer_PucFactory::buildUpdateChecker(pagelayer_pro_api_url().'updates.php?version='.PAGELAYER_PRO_VERSION, PAGELAYER_PRO_FILE);
	
	// Add the license key to query arguments
	$pagelayer_updater->addQueryArgFilter('pagelayer_pro_updater_filter_args');
	
	// Show the text to install the license key
	add_filter('puc_manual_final_check_link-pagelayer-pro', 'pagelayer_pro_updater_check_link', 10, 1);
	
	// Load the template builder
	include_once(PAGELAYER_PRO_DIR.'/main/template-builder.php');
	
	$pagelayer->allowed_mime_type = array(
		'otf' => 'font/otf',
		'ttf' => 'font/ttf',
		'woff' => 'font/woff|application/font-woff|application/x-font-woff',
		'woff2' => 'font/woff2|font/x-woff2'
	);
	
	// Load the pagelayer custom fonts
	include_once(PAGELAYER_PRO_DIR.'/main/custom_fonts.php');
	
	// Are we to disable the notice
	if(current_user_can('activate_plugins')){
		if(isset($_GET['pagelayer-pro-version-notice']) && (int)$_GET['pagelayer-pro-version-notice'] == 0){
			check_ajax_referer('pagelayer_pro_version_nonce', 'pagelayer_nonce');
			
			if(!empty($_REQUEST['type'])){
				// Notice dismiss for 7 days
				update_option('pagelayer_pro_'.$_REQUEST['type'].'_version_nag', time() + (7 * 86400));
			}
			die('DONE');
		}
		
		// Show the version notice
		add_action('admin_notices', 'pagelayer_pro_free_version_nag');
	}
	
}

// Nag when plugins dont have same version.
function pagelayer_pro_free_version_nag(){
	if(!defined('PAGELAYER_VERSION')){
		return;
	}
	
	$sctipt_enqueue = false;
	$older_pro = get_option('pagelayer_pro_older_pro_version_nag');
	$older_free = get_option('pagelayer_pro_older_free_version_nag');
	
	if(version_compare(PAGELAYER_VERSION, PAGELAYER_PRO_VERSION) > 0 && (empty($older_pro) || $older_pro < time())){
		echo '<div class="pagelayer-pro-version-notice notice notice-warning is-dismissible" data-notice="older_pro" onclick="pagelayer_pro_notice_dismiss(event)">
			<p style="font-size:16px;">'.esc_html__('You are using an older version of Pagelayer Pro. We recommend updating to the latest version to ensure seamless and uninterrupted use of the plugin.').'</p>
		</div>';
	
		$sctipt_enqueue = true;
	}elseif(version_compare(PAGELAYER_VERSION, PAGELAYER_PRO_VERSION) < 0 && (empty($older_free) || $older_free < time())){
		echo '<div class="pagelayer-pro-version-notice notice notice-warning is-dismissible" data-notice="older_free" onclick="pagelayer_pro_notice_dismiss(event)">
			<p style="font-size:16px;">'.esc_html__('You are using an older version of Pagelayer. We recommend updating to the latest free version to ensure smooth and uninterrupted use of the plugin.') .'</p>
		</div>';
		
		$sctipt_enqueue = true;
	}
	
	if($sctipt_enqueue){
		echo '
	<script type="application/javascript">
		function pagelayer_pro_notice_dismiss(e){
			
			 e.preventDefault();
			 var target = jQuery(e.target);
			 
			if(!target.hasClass("notice-dismiss")){
				return;
			}
				
			var jEle = target.closest(".pagelayer-pro-version-notice");
			
			var data = {};
			data["type"] = jEle.data("notice");
			
			jEle.hide();
			
			// Save this preference
			jQuery.post("'.admin_url('?pagelayer-pro-version-notice=0&pagelayer_nonce='.wp_create_nonce("pagelayer_pro_version_nonce") ).'", data, function(response) {
			//alert(response);
			});
			return false;
		};
	</script>';
	}
}

// Add filter to load custom widgets functions
add_action('pagelayer_load_shortcode_functions', 'pagelayer_pro_load_shortcode_functions');
function pagelayer_pro_load_shortcode_functions(){
	include_once(PAGELAYER_PRO_DIR.'/main/freemium_functions.php');
	include_once(PAGELAYER_PRO_DIR.'/main/premium_functions.php');
}

// Apply filter to load custom widgets after shortcodes
add_action('pagelayer_after_add_shortcode', 'pagelayer_pro_after_add_shortcode');
function pagelayer_pro_after_add_shortcode(){
	include_once(PAGELAYER_PRO_DIR.'/main/freemium.php');
	include_once(PAGELAYER_PRO_DIR.'/main/premium.php');
}

// Load customizer setting
add_action('pagelayer_after_wc_customization', 'pagelayer_pro_after_wc_customization');
function pagelayer_pro_after_wc_customization(){
	include_once(PAGELAYER_PRO_DIR.'/main/premium-woocommerce.php');
}

// Load Local google fonts
add_action('pagelayer_google_fonts_url', 'pagelayer_pro_google_fonts_url');
function pagelayer_pro_google_fonts_url($fonts_url){
	
	// Is google font serve locally?
	if(get_option('pagelayer_local_gfont') != 1){
		return $fonts_url;
	}
	
	$upload_dir = wp_upload_dir();
	$local_font_md5 = md5($fonts_url);
	$_fonts_url = $upload_dir['baseurl'].'/pl-google-fonts/'.$local_font_md5.'.css';
	$_fonts_path = $upload_dir['basedir'].'/pl-google-fonts/'.$local_font_md5.'.css';
	
	if(!file_exists($_fonts_path) && file_exists(PAGELAYER_PRO_DIR.'/main/download_google_fonts.php')){
		include_once(PAGELAYER_PRO_DIR.'/main/download_google_fonts.php');
		pagelayer_pro_download_google_fonts($fonts_url);
	}
	
	return $_fonts_url;
}

// Load js files for editor
add_action('pagelayer_editor_give_js', 'pagelayer_pro_editor_give_js');
function pagelayer_pro_editor_give_js($js){
	$js.= '&premium=premium.js';
	return $js;
}

// Load js files
add_action('pagelayer_add_give_js', 'pagelayer_pro_add_give_js');
function pagelayer_pro_add_give_js($js){
	$js.= '&premium=chart.min.js,premium-frontend.js,shuffle.min.js';
	return $js;
}

// Load css files
add_action('pagelayer_add_give_css', 'pagelayer_pro_add_give_css');
function pagelayer_pro_add_give_css($css){
	$css.= '&premium=premium-frontend.css';
	return $css;
}

// Load this For audio widget
add_action('pagelayer_load_audio_widget', 'pagelayer_pro_load_audio_widget');
function pagelayer_pro_load_audio_widget($is_audio){
	global $pagelayer;
	
	if($is_audio || pagelayer_is_live_iframe()){
		wp_enqueue_script('wp-mediaelement');
		wp_enqueue_style( 'wp-mediaelement' );
		$pagelayer->sc_audio_enqueued = 1;
	}
}

// Load the langs
add_action('pagelayer_load_languages', 'pagelayer_pro_load_languages');
function pagelayer_pro_load_languages($langs){
	
	$_langs = @file_get_contents(PAGELAYER_PRO_DIR.'/languages/en.json');
	$_langs = @json_decode($_langs, true);
		
	if(!empty($_langs)){
		$langs = array_merge($langs, $_langs);
	}
	
	return $langs;
}
languages/en.json000064400000000004151526520750010011 0ustar00{

}pagelayer-pro.php000064400000003362151526520750010040 0ustar00<?php
/*
Plugin Name: Pagelayer Pro
Plugin URI: https://pagelayer.com/
Description: Pagelayer is a WordPress page builder plugin. Its very easy to use and very light on the browser.
Version: 2.0.0
Author: Pagelayer Team
Author URI: https://pagelayer.com/
Text Domain: pagelayer-pro
*/

// We need the ABSPATH
if (!defined('ABSPATH')) exit;

if(!function_exists('add_action')){
	echo 'You are not allowed to access this page directly.';
	exit;
}

// If PAGELAYER_PRO_VERSION exists then the plugin is loaded already !
if(defined('PAGELAYER_PRO_VERSION')) {
	return;
}

define('PAGELAYER_PRO_FILE', __FILE__);
define('PAGELAYER_PRO_URL', plugins_url('', PAGELAYER_PRO_FILE));
define('PAGELAYER_PRO_API', 'https://api.pagelayer.com/');
define('PAGELAYER_PRO_VERSION', '2.0.0');
define('PAGELAYER_PRO_DIR', dirname(PAGELAYER_PRO_FILE));
define('PAGELAYER_PRO_BASE', plugin_basename(PAGELAYER_PRO_FILE));
define('PAGELAYER_PRO_SLUG', 'pagelayer-pro');
define('PAGELAYER_PRO_CSS', PAGELAYER_PRO_URL.'/css');
define('PAGELAYER_PRO_JS', PAGELAYER_PRO_URL.'/js');
define('PAGELAYER_PRO_DEV', file_exists(dirname(__FILE__).'/dev.php') ? 1 : 0);

include_once(PAGELAYER_PRO_DIR.'/main/functions.php');

$_tmp_plugins = get_option('active_plugins');
$_pl_version = get_option('pagelayer_version');

if(
	!defined('SITEPAD') && (
	!(in_array('pagelayer/pagelayer.php', $_tmp_plugins) || 
	pagelayer_pro_is_network_active('pagelayer')) || 
	!file_exists(WP_PLUGIN_DIR . '/pagelayer/pagelayer.php') || 
	(!empty($_pl_version) && version_compare($_pl_version, '1.8.7', '<')))
){
	include_once(PAGELAYER_PRO_DIR .'/main/pagelayer-init.php');
	return;
}

// Load this after active free version
define('PAGELAYER_PREMIUM', plugin_basename(__FILE__));

include_once(dirname(__FILE__).'/init.php');
main/license.php000064400000013526151526520750007642 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// license.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_VERSION')) {
	exit('Hacking Attempt !');
}

include_once(PAGELAYER_DIR.'/main/settings.php');

// The License Page
function pagelayer_license(){
	
	global $pl_error, $lic_resp;
	
	if(isset($_REQUEST['save_pl_license'])){
		check_admin_referer('pagelayer-options');
	}

	// Is there a license key ?
	if(isset($_POST['save_pl_license'])){
	
		$license = pagelayer_optpost('pagelayer_license');
		
		// Check if its a valid license
		if(empty($license)){
			$pl_error['lic_invalid'] = __('The license key was not submitted', 'pagelayer');
			return pagelayer_license_T();
		}
		
		pagelayer_pro_load_license($license);
		
		if(is_array($lic_resp)){
			$json = json_decode($lic_resp['body'], true);
			//print_r($json);
		}else{
		
			$pl_error['resp_invalid'] = __('The response was malformed<br>'.var_export($lic_resp, true), 'pagelayer');
			return pagelayer_license_T();
			
		}
		
		// Save the License
		if(empty($json['license'])){
		
			$pl_error['lic_invalid'] = __('The license key is invalid', 'pagelayer');
			return pagelayer_license_T();
			
		}else{
			
			// Mark as saved
			$GLOBALS['pl_saved'] = true;
		}
		
	}
	
	pagelayer_license_T();
	
}

// The License Page - THEME
function pagelayer_license_T(){
	
	global $pagelayer, $pl_error;

	pagelayer_page_header('Pagelayer License');

	// Saved ?
	if(!empty($GLOBALS['pl_saved'])){
		echo '<div class="notice notice-success"><p>'. __('The settings were saved successfully', 'pagelayer'). '</p></div><br />';
	}
	
	if(date('Ymd') <= 20200331 && !defined('PAGELAYER_PREMIUM')){
		echo '<div class="updated"><p><span style="font-size: 14px"><b>Promotional Offer</b></span> : If you buy <a href="'.PAGELAYER_PRO_PRICE_URL.'"><b>Pagelayer Pro</b></a> before <b>31st March, 2020</b> then you will get an additional year free and your license will expire on <b>31st March, 2022</b></p></div><br />.';
	}
	
	// Any errors ?
	if(!empty($pl_error)){
		pagelayer_report_error($pl_error);echo '<br />';
	}
	
	?>
	
	<div class="postbox">
	
		<button class="handlediv button-link" aria-expanded="true" type="button">
			<span class="screen-reader-text"><?php _e('Toggle panel: System Information');?></span>
			<span class="toggle-indicator" aria-hidden="true"></span>
		</button>
		
		<h2 class="hndle ui-sortable-handle">
			<span><?php echo __('System Information', 'pagelayer'); ?></span>
		</h2>
		
		<div class="inside">
		
		<form action="" method="post" enctype="multipart/form-data">
		<?php wp_nonce_field('pagelayer-options'); ?>
		<table class="wp-list-table fixed striped users" cellspacing="1" border="0" width="95%" cellpadding="10" align="center">
		<?php
			echo '
			<tr>				
				<th align="left" width="25%">'.__('Pagelayer Version', 'pagelayer').'</th>
				<td>'.PAGELAYER_VERSION.(defined('PAGELAYER_PREMIUM') ? ' (PRO Version)' : '').'</td>
			</tr>';
			
			echo '
			<tr>			
				<th align="left" valign="top">'.__('Pagelayer License', 'pagelayer').'</th>
				<td align="left">
					'.(defined('PAGELAYER_PREMIUM') && empty($pagelayer->license) ? '<span style="color:red">Unlicensed</span> &nbsp; &nbsp;' : '').' 
					<input type="text" name="pagelayer_license" value="'.(empty($pagelayer->license) ? '' : $pagelayer->license['license']).'" size="30" placeholder="e.g. PAGEL-11111-22222-33333-44444" style="width:300px;" /> &nbsp; 
					<input name="save_pl_license" class="button button-primary" value="Update License" type="submit" />';
					
					if(!empty($pagelayer->license)){
						
						$expires = $pagelayer->license['expires'];
						$expires = substr($expires, 0, 4).'/'.substr($expires, 4, 2).'/'.substr($expires, 6);
						
						echo '<div style="margin-top:10px;">License Status : '.(empty($pagelayer->license['status_txt']) ? 'N.A.' : $pagelayer->license['status_txt']).' &nbsp; &nbsp; &nbsp;
						'.($pagelayer->license['expires'] <= date('Ymd') ?  __('License Expires : ', 'pagelayer-pro') .'<span style="color:red">'.$expires.'</span>' : (empty($pagelayer->license['has_plid']) ? __('License Expires : ', 'pagelayer-pro') . $expires : '')).'
						</div>';
					}
					
					
				echo 
				'</td>
			</tr>';
			
			echo '<tr>
				<th align="left">'.__('URL', 'pagelayer').'</th>
				<td>'.get_site_url().'</td>
			</tr>
			<tr>				
				<th align="left">'.__('Path', 'pagelayer').'</th>
				<td>'.ABSPATH.'</td>
			</tr>
			<tr>				
				<th align="left">'.__('Server\'s IP Address', 'pagelayer').'</th>
				<td>'.$_SERVER['SERVER_ADDR'].'</td>
			</tr>
			<tr>				
				<th align="left">'.__('wp-config.php is writable', 'pagelayer').'</th>
				<td>'.(is_writable(ABSPATH.'/wp-config.php') ? '<span style="color:red">Yes</span>' : '<span style="color:green">No</span>').'</td>
			</tr>';
			
			if(file_exists(ABSPATH.'/.htaccess')){
				echo '
			<tr>				
				<th align="left">'.__('.htaccess is writable', 'pagelayer').'</th>
				<td>'.(is_writable(ABSPATH.'/.htaccess') ? '<span style="color:red">Yes</span>' : '<span style="color:green">No</span>').'</td>
			</tr>';
			
			}
			
		?>
		</table>
		</form>
		
		</div>
	</div>

<?php
	
	pagelayer_page_footer();

}main/functions.php000064400000025134151526520760010227 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// functions.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Is called when the ADMIN enables the plugin
function pagelayer_pro_activation(){

	global $wpdb;

	$sql = array();

	add_option('pagelayer_pro_version', PAGELAYER_PRO_VERSION);
	add_option('pagelayer_pro_options', array());	
	
	// Update free verion
	pagelayer_pro_update_free_after_pro(null, array(
		'action' => 'update',
		'type' => 'plugin',
		'plugin' => 'pagelayer-pro/pagelayer-pro.php',
		'silent_skin' => true,
	));

}

// Checks if we are to update ?
function pagelayer_pro_update_check(){

global $wpdb;

	$sql = array();
	$current_version = get_option('pagelayer_pro_version');
	$version = (int) str_replace('.', '', $current_version);

	// No update required
	if($current_version == PAGELAYER_PRO_VERSION){
		return true;
	}

	// Is it first run ?
	if(empty($current_version)){

		// Reinstall
		pagelayer_pro_activation();

		// Trick the following if conditions to not run
		$version = (int) str_replace('.', '', PAGELAYER_PRO_VERSION);

	}
	
	$is_network_wide = pagelayer_pro_is_network_active('pagelayer-pro');
	
	if($is_network_wide){
		$free_ins = get_site_option('pagelayer_free_installed');
	}else{
		$free_ins = get_option('pagelayer_free_installed');
	}
		
	// If plugin runing reached here it means Pagelayer free installed 
	if(empty($free_ins)){
		if($is_network_wide){
			update_site_option('pagelayer_free_installed', time());
		}else{
			update_option('pagelayer_free_installed', time());
		}
	}
	
	// Re-init NAG dismiss expire time
	update_option('pagelayer_pro_older_pro_version_nag', time());
	update_option('pagelayer_pro_older_free_version_nag', time());
	
	// Save the new Version
	update_option('pagelayer_pro_version', PAGELAYER_PRO_VERSION);

}

// Load license data
function pagelayer_pro_load_license($parent = 0){
	
	global $pagelayer, $lic_resp;
	
	$license_field = 'pagelayer_license';
	$license_api_url = PAGELAYER_PRO_API;
	
	// Save license
	if(!empty($parent) && is_string($parent) && strlen($parent) > 5){		
		$lic['license'] = $parent;
	
	// Load license of Soft Pro
	}elseif(!empty($parent)){
		$license_field = 'softaculous_pro_license';
		$lic = get_option('softaculous_pro_license', []);
	
	// My license
	}else{
		$lic = get_option($license_field, []);
	}
	
	// Loaded license is a Soft Pro
	if(!empty($lic['license']) && preg_match('/^softwp/is', $lic['license'])){
		$license_field = 'softaculous_pro_license';
		$license_api_url = 'https://a.softaculous.com/softwp/';
		$prods = apply_filters('softaculous_pro_products', []);
	}else{
		$prods = [];
	}

	if(empty($lic['last_update'])){
		$lic['last_update'] = time() - 86600;
	}
	
	// Update license details as well
	if(!empty($lic) && !empty($lic['license']) && (time() - @$lic['last_update']) >= 86400){
		
		$url = $license_api_url.'/license.php?license='.$lic['license'].'&prods='.implode(',', $prods).'&url='.rawurlencode(site_url());
		$resp = wp_remote_get($url);
		$lic_resp = $resp;

		//Did we get a response ?
		if(is_array($resp)){
			
			$tosave = json_decode($resp['body'], true);
			
			//Is it the license ?
			if(!empty($tosave['license'])){
				$tosave['last_update'] = time();
				update_option($license_field, $tosave);
				$lic = $tosave;
			}
		}
	}
	
	// If the license is Free or Expired check for Softaculous Pro license
	if(empty($lic) || empty($lic['active'])){
		
		if(function_exists('softaculous_pro_load_license')){
			$softaculous_license = softaculous_pro_load_license();
			if(!empty($softaculous_license['license']) && 
				(!empty($softaculous_license['active']) || empty($lic['license']))
			){
				$lic = $softaculous_license;
			}
		}elseif(empty($parent)){
			$lic = get_option('softaculous_pro_license', []);
			
			if(!empty($lic)){
				return pagelayer_pro_load_license(1);
			}
		}
	}
	
	if(!empty($lic['license'])){
		$pagelayer->license = $lic;
	}
	
}

add_filter('softaculous_pro_products', 'pagelayer_softaculous_pro_products', 10, 1);
function pagelayer_softaculous_pro_products($r = []){
	$r['pagelayer'] = 'pagelayer';
	return $r;
}

// Add our license key if ANY
function pagelayer_pro_updater_filter_args($queryArgs) {
	
	global $pagelayer;
	
	if ( !empty($pagelayer->license['license']) ) {
		$queryArgs['license'] = $pagelayer->license['license'];
	}
	
	$queryArgs['url'] = rawurlencode(site_url());
	
	return $queryArgs;
}

// Handle the Check for update link and ask to install license key
function pagelayer_pro_updater_check_link($final_link){
	
	global $pagelayer;
	
	if(empty($pagelayer->license['license'])){
		return '<a href="'.admin_url('admin.php?page=pagelayer_license').'">Install Pagelayer Pro License Key</a>';
	}
	
	return $final_link;
}

function pagelayer_pro_is_network_active($pluign){
	$is_network_wide = false;
	
	// Handling network site
	if(!is_multisite()){
		return $is_network_wide;
	}
	
	$_tmp_plugins = get_site_option('active_sitewide_plugins');

	if(!empty($_tmp_plugins) && preg_grep('/.*\/'.$pluign.'\.php$/', array_keys($_tmp_plugins))){
		$is_network_wide = true;
	}
	
	return $is_network_wide;
}

// Prevent update of pagelayer free
function pagelayer_pro_get_free_version_num(){
		
	if(defined('PAGELAYER_VERSION')){
		return PAGELAYER_VERSION;
	}
	
	// In case of pagelayer deactive
	return pagelayer_pro_file_get_version_num('pagelayer/pagelayer.php');
}

// Prevent update of pagelayer free
function pagelayer_pro_file_get_version_num($plugin){
	
	$file = WP_PLUGIN_DIR . '/'.$plugin;
	
	if(!file_exists($file)){
		return false;
	}
	
	// In case of pagelayer deactive
	include_once(ABSPATH . 'wp-admin/includes/plugin.php');
	
	$plugin_data = get_plugin_data($file);
	
	if(empty($plugin_data)){
		return false;
	}
	
	return $plugin_data['Version'];
	
}

// Prevent update of pagelayer free
function pagelayer_pro_disable_manual_update_for_plugin($transient){
	$plugin = 'pagelayer/pagelayer.php';
	
	// Is update available?
	if(!isset($transient->response) || !isset($transient->response[$plugin])){
		return $transient;
	}
	
	$free_version = pagelayer_pro_get_free_version_num();
	$pro_version = PAGELAYER_PRO_VERSION;
	
	if(!empty($GLOBALS['pagelayer_pro_is_upgraded'])){
		$pro_version = pagelayer_pro_file_get_version_num('pagelayer-pro/pagelayer-pro.php');
	}
	
	// Update the Pagelayer version to the equivalent of Pro version
	if(!empty($pro_version) && version_compare($free_version, $pro_version, '<')){
		$transient->response[$plugin]->new_version = $pro_version;
		$transient->response[$plugin]->package = 'https://downloads.wordpress.org/plugin/pagelayer.'.$pro_version.'.zip';
	}else{
		unset($transient->response[$plugin]);
	}

	return $transient;
}

// Auto update free version after update pro version
function pagelayer_pro_update_free_after_pro($upgrader_object, $options){
	
	// Check if the action is an update for the plugins
	if($options['action'] != 'update' || $options['type'] != 'plugin'){
		return;
	}
		
	// Define the slugs for the free and pro plugins
	$free_slug = 'pagelayer/pagelayer.php'; 
	$pro_slug = 'pagelayer-pro/pagelayer-pro.php';

	// Check if the pro plugin is in the list of updated plugins
	if( 
		(isset($options['plugins']) && in_array($pro_slug, $options['plugins']) && !in_array($free_slug, $options['plugins'])) ||
		(isset($options['plugin']) && $pro_slug == $options['plugin'])
	){
	
		// Trigger the update for the free plugin
		$current_version = pagelayer_pro_get_free_version_num();
		
		if(empty($current_version)){
			return;
		}
		
		$GLOBALS['pagelayer_pro_is_upgraded'] = true;
		
		// This will set the 'update_plugins' transient again
		wp_update_plugins();

		// Check for updates for the free plugin
		$update_plugins = get_site_transient('update_plugins');
		
		if(empty($update_plugins) || !isset($update_plugins->response[$free_slug]) || version_compare($update_plugins->response[$free_slug]->new_version, $current_version, '<=')){
			return;
		}
		
		include_once(ABSPATH . 'wp-admin/includes/file.php');
		include_once(ABSPATH . 'wp-admin/includes/misc.php');
		require_once(ABSPATH . 'wp-admin/includes/plugin.php');
		require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
		
		$skin = wp_doing_ajax()? new WP_Ajax_Upgrader_Skin() : null;
		
		if(!empty($options['silent_skin'])){
			class Pagelayer_Silent_Upgrader_Skin extends WP_Upgrader_Skin {
				public function feedback($string, ...$args){}
				public function header(){}
				public function footer(){}
				public function error($errors){}
				public function before(){}
				public function after(){}
			}
			$skin = new Pagelayer_Silent_Upgrader_Skin();
		}
		
		$upgrader = new Plugin_Upgrader($skin);
		$upgraded = $upgrader->upgrade($free_slug);
		
		if(!is_wp_error($upgraded) && $upgraded){
			// Re-active free plugins
			if( file_exists( WP_PLUGIN_DIR . '/'.  $free_slug ) && is_plugin_inactive($free_slug) ){
				activate_plugin($free_slug); // TODO for network
			}
			
			// Re-active pro plugins
			if( file_exists( WP_PLUGIN_DIR . '/'.  $pro_slug ) && is_plugin_inactive($pro_slug) ){
				activate_plugin($pro_slug); // TODO for network
			}
		}
	}
}

function pagelayer_pro_api_url($main_server = 0, $suffix = 'pagelayer'){
	
	global $pagelayer;
	
	$r = array(
		'https://s0.softaculous.com/a/softwp/',
		'https://s1.softaculous.com/a/softwp/',
		'https://s2.softaculous.com/a/softwp/',
		'https://s3.softaculous.com/a/softwp/',
		'https://s4.softaculous.com/a/softwp/',
		'https://s5.softaculous.com/a/softwp/',
		'https://s7.softaculous.com/a/softwp/',
		'https://s8.softaculous.com/a/softwp/'
	);
	
	$mirror = $r[array_rand($r)];
	
	// If the license is newly issued, we need to fetch from API only
	if(!empty($main_server) || empty($pagelayer->license['last_edit']) || 
		(!empty($pagelayer->license['last_edit']) && (time() - 3600) < $pagelayer->license['last_edit'])
	){
		$mirror = PAGELAYER_PRO_API;
	}
	
	if(!empty($suffix)){
		$mirror = str_replace('/softwp', '/'.$suffix, $mirror);
	}
	
	return $mirror;
	
}main/premium_functions.php000064400000072272151526520760011772 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// class.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Audio Handler
function pagelayer_sc_audio(&$el){
	global $pagelayer;
	
	if(empty($pagelayer->sc_audio_enqueued) && !pagelayer_is_live_iframe()){
		wp_enqueue_script('wp-mediaelement');
		wp_enqueue_style( 'wp-mediaelement' );
		$pagelayer->sc_audio_enqueued = 1;
	}
	
	return;
	
	$el['atts']['a_url'] = '';

	if ($el['atts']['source'] == 'external'){
		$el['atts']['a_url'] = $el['atts']['url'];
	}
	
	if ($el['atts']['source'] == 'library'){
		
		$el['atts']['a_url'] = wp_get_attachment_url($el['atts']['id']); 
	}
	if(!empty($el['atts']['a_url'])){
		
		$filename=$el['atts']['a_url'];
		
		//Get the file extension 
		
		$extension = pathinfo($filename, PATHINFO_EXTENSION);
	

		//Create source tag according to audio file
		switch($extension){
			
			default:
			case 'mp3':
				$el['atts']['a_type'] = 'audio/mpeg';
				break;
			
			case 'ogg':
				$el['atts']['a_type']= 'audio/ogg';
				break;
			
			case 'wav':
				$el['atts']['a_type'] = 'audio/wav';
				break;
		}
	}

	 if(!empty($el['atts']['a_url']) && !empty($el['atts']['a_type'])){
		$el['attr'][]= ['source' => 'src="{{a_url}}'];
		$el['attr'][]= ['source' => 'type="{{a_type}}'];
	} 

}

// Image Portfolio
function pagelayer_sc_single_img(&$el){
	
	// Decide the image URL
	$img_size = pagelayer_isset($el['atts'], 'img-size');
	$el['atts']['func_img'] = pagelayer_isset($el['tmp'], 'img-'.$img_size.'-url');
	$el['atts']['func_img'] = empty($el['atts']['func_img']) ? pagelayer_isset($el['tmp'], 'img-url') : $el['atts']['func_img'];
	
	// What is the link ?
	if(!empty($el['atts']['link_type'])){
		
		// Custom url
		if($el['atts']['link_type'] == 'custom_url'){
			// Backward compatibility for new link props
			pagelayer_add_link_backward($el, array( 'rel' => '', 'selector' => '.pagelayer-ele-link'));
			$el['atts']['func_link'] = empty($el['tmp']['link']) ? '' : $el['tmp']['link'];
		}
		
		// Link to the media file itself
		if($el['atts']['link_type'] == 'media_file'){
			$el['atts']['func_link'] = $el['atts']['func_img'];
		}
		
		// Lightbox
		if($el['atts']['link_type'] == 'lightbox'){
			$el['atts']['func_link'] = $el['atts']['func_img'];
		}
		
	}
	
}

// Posts Grid
function pagelayer_sc_wp_posts_grid($atts, $content = '', $tag = ''){
	
	$args = array(
			'numberposts' => -1,
			'post_type' => 'post',
			'post_status' => array('publish', 'pending', 'draft', 'future', 'private', 'inherit', 'trash')
	); 
	$all_posts = get_posts($args);
	
	$html = '<div '.pagelayer_create_sc($tag, $atts, 'pagelayer-posts-grid').'>';
	
	//pagelayer_print($all_posts);
	foreach($all_posts as $pk => $pv){
		$post_link = get_permalink($pv->ID);
		$html .= '<div>
			<h2><a href="'.$post_link.'">'.$pv->post_title.'</a></h2>
			<p>'.date('F jS, Y', strtotime($pv->post_date)).' | Published by <a href="'.site_url('author/'.get_the_author_meta('user_login', $pv->post_author)).'">'.get_the_author_meta('display_name', $pv->post_author).'</a></p>
			<p>'.pagelayer_the_content($pv->post_content).'</p>
			<p><a href="'.$post_link.'">Read More</a></p>
		</div>';
	}
	
	$html .= '</div>';
	
	return $html;
}

// Posts Slider
function pagelayer_sc_wp_posts_slider(&$el){
	$params = array();
	$params['post'] = array();
	
	if($el['atts']['post_type']) $params['post']['post_type'] = $el['atts']['post_type'];
	if($el['atts']['post_count']) $params['post']['post_count'] = $el['atts']['post_count'];
	if($el['atts']['category']) $params['post']['category'] = $el['atts']['category'];
	if($el['atts']['tags']) $params['post']['tags'] = $el['atts']['tags'];
	if($el['atts']['order_by']) $params['post']['order_by'] = $el['atts']['order_by'];
	if($el['atts']['sort_order']) $params['post']['sort_order'] = $el['atts']['sort_order'];
	if($el['atts']['image_size']) $params['post']['image_size'] = $el['atts']['image_size'];
	if($el['atts']['show_excerpt']) $params['post']['show_excerpt'] = $el['atts']['show_excerpt'];
	
	$el['atts']['posts_slides'] = pagelayer_posts_slider($params);
	//wp_reset_postdata();
}

// Search function 
function pagelayer_sc_search(&$el){
	if(!empty($el['atts']['placeholder'])){
		$el['tmp']['placeholder'] = htmlspecialchars($el['atts']['placeholder']);
	}	
}

// Post portfolio
function pagelayer_sc_post_folio(&$el){
	
	$args = array();

	if($el['atts']['type']) $args['post_type'] = $el['atts']['type'];
	
	// Filter by
	if($el['atts']['filter_by']) $args['filter_by'] = $el['atts']['filter_by'];
	
	// Page count
	if($el['atts']['count']) $args['posts_per_page'] = $el['atts']['count'];
	
	$el['atts']['post_html'] = pagelayer_widget_posts($args);
	
}

// Posts Handler
function pagelayer_sc_posts(&$el){
	
	global $pagelayer;

	$allow_param = array('show_thumb', 'thumb_size', 'show_content', 'show_title', 'more', 'btn_type', 'size', 'icon_position', 'icon', 'show_more', 'meta_sep', 'exc_length', 'post_type', 'exc_term', 'exc_author', 'offset','ignore_sticky', 'orderby', 'by_period', 'before_date', 'after_date', 'thumb_img_type', 'infinite_types' );
	
	$param = array();
	
	// Page count
	$param['posts_per_page'] = !empty($el['atts']['count']) ?  $el['atts']['count'] : '';
	
	$param['order'] = !empty($el['atts']['posts_order']) ?  $el['atts']['posts_order'] : '';
	$param['term'] = !empty($el['atts']['inc_term']) ?  $el['atts']['inc_term'] : '';
	$param['author_name'] = !empty($el['atts']['inc_author']) ?  $el['atts']['inc_author'] : '';
	
	if(!empty($el['atts']['thumb_img_type'])){
		$thumb_size = pagelayer_isset($el['atts'], 'thumb_size');
		$img_size = pagelayer_isset($el['tmp'], 'def_thumb_img-'.$thumb_size.'-url');
		$param['def_thumb_img'] = empty($img_size) ? pagelayer_isset($el['tmp'], 'def_thumb_img-url') : $img_size;	
	}
	
	foreach($allow_param as $val){
		$param[$val] = !empty($el['atts'][$val]) ?  $el['atts'][$val] : '';
	}
	
	if(!empty($el['atts']['meta'])){
		
		$meta_arr = explode(',',$el['atts']['meta']);
		//pagelayer_print($el['atts']['meta']);
		foreach($meta_arr as $arr){
			$param[$arr] = $arr;
		}		
		
	}
	
	if(wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'pagelayer_infinite_posts'){
		$param['paged'] = $el['atts']['paged'];
	}else{
		$data = array('tag' => $el['tag'],'atts' => $el['oAtts']);
		$pagelayer->localScript['pagelayer_post_'.$el['id']] = $data;
	}
	
	//pagelayer_print($param);
	$el['atts']['post_html'] = pagelayer_posts($param);
	
}

// Author Box
function pagelayer_sc_author_box(&$el){
	
	global $post;
	
	if($el['atts']['box_source'] == 'current'){		
		$author_data = pagelayer_author_data ($post->ID);
		$el['atts']['display_name'] = $author_data['display_name'];
		$el['atts']['description'] = $author_data['description'];
		$el['atts']['user_url'] = $author_data['user_url'];
		$el['tmp']['avatar-url'] = $author_data['avatar'];
		$el['tmp']['avatar-title'] = '';
		$el['tmp']['avatar-alt'] = '';
	}else{
		$el['tmp']['avatar-url'] = empty($el['tmp']['avatar-url']) ? $el['atts']['avatar'] : $el['tmp']['avatar-url'];
	}
	
	$el['atts']['display_html'] = '<'.$el['atts']['name_style'].'>'.$el['atts']['display_name'].'</'.$el['atts']['name_style'].'>';
	
}

//Grid Gallery Handler
function pagelayer_sc_login(&$el){
	
	if(pagelayer_is_live()){
		$el['atts']['login_cap'] = '';
		return false;
	}
	
	ob_start();
	
	if(!did_action( 'login_enqueue_scripts' )){
		do_action( 'login_enqueue_scripts' );
	}
	
	do_action( 'login_form' );
	$el['atts']['login_cap'] = ob_get_clean();
}

// Load all tags
function pagelayer_get_tags(){
	$tags = get_tags(['hide_empty' => false]);
	$taglist = array();
	$taglist[] = 'Default';
	foreach ($tags as $tag) {
		$taglist[$tag->name] = $tag->name ;
	}
	return $taglist;
}

// Load all categories
function pagelayer_get_categories(){
	$categories = get_categories(['hide_empty' => 0]);
	$category_list = array();
	$category_list[] = 'Default';
	foreach($categories as $category) {
		$category_list[$category->name] = $category->name ;
	}
	return $category_list;
}

// Templates Handler - 2C
function pagelayer_sc_templates(&$el){

	global $pagelayer, $post;
	
	if( !empty($el['atts']['templates']) ) $id = $el['atts']['templates'];
	
	$post_obj = get_post($id);
	$content = '';
	
	// If both current post and tempate post are same
	if (empty( $post_obj) || (!empty( $post_obj) && $post_obj == $post) ) {
		$el['atts']['template_content'] = $content;
		return;
	}
	
	$pagelayer->dont_make_editable = true;
	$content = $post_obj->post_content;
	$content = apply_filters( 'the_content', $content );
	$pagelayer->dont_make_editable = false;
	
	if(pagelayer_is_live()){
		// Create the HTML object
		$node = pagelayerQuery::parseStr($content);
		$node->query('.pagelayer-ele')->removeClass('pagelayer-ele');
		$content = $node->html();
	}
	
	$el['atts']['template_content'] = $content;
}

// Get the list of post by post type - 2C
function pagelayer_post_list_by_type($post_type = 'post'){
	$postlist = [];
	
	$posts_list = get_posts(array(
			'post_type' => $post_type,
			'numberposts' => -1
		));
	
	foreach($posts_list as $post){
		$postlist[$post->ID] = $post->post_title;
	}
	
	return $postlist;
}

/////////////////////////////////////
// WooCommerce Shortcode Functions
/////////////////////////////////////

// Product Images Handler - 2C
function pagelayer_sc_product_images(&$el){
	global $product;
	
	$product = pagelayer_get_product();
	
	$images_templ = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$images_templ = __pl('no_woo_product');
	}
	
	if( empty( $product ) ) {
		$el['atts']['product_images_templ'] = $images_templ;
		return;
	}
	
	// Start the output buffer
	ob_start();
	
	if( !empty($el['atts']['sale_flash']) ){
		wc_get_template( 'loop/sale-flash.php' );
	}
	
	wc_get_template( 'single-product/product-image.php' );
	
	$el['atts']['product_images_templ'] = ob_get_clean();

}

// Related products Handler - 2C
function pagelayer_sc_product_related(&$el){
	global $product;
	
	$product = pagelayer_get_product();
	
	$related_templ = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$related_templ = __pl('no_woo_product');
	}
	
	if( empty( $product ) ) {
		$el['atts']['related_products'] = $related_templ;
		return;
	}
	
	// start output buffer
	ob_start();
	
	// If is related
	if($el['atts']['select_product'] == 'related'){
		
		$args = [
			'posts_per_page' => 4,
			'columns' => 4,
			'orderby' => $el['atts']['order_by'],
			'order' => $el['atts']['order'],
		];

		if( ! empty( $el['atts']['posts_per_page'] ) ) {
			$args['posts_per_page'] = $el['atts']['posts_per_page'];
		}

		if( ! empty( $el['atts']['columns'] ) ) {
			$args['columns'] = $el['atts']['columns'];
		}
		
		if(function_exists( 'woocommerce_related_products' )){
			woocommerce_related_products($args);	
		}
			
	// If is upsel;
	}elseif($el['atts']['select_product'] == 'upsell'){
		
		$limit = '-1';
		$columns = 4;
		$orderby = $el['atts']['order_by'];
		$order =  $el['atts']['order'];

		if( ! empty( $el['atts']['columns'] ) ) {
			$columns = $el['atts']['columns'];
		}
				
		if(function_exists( 'woocommerce_upsell_display' )){
			woocommerce_upsell_display( $limit, $columns, $orderby, $order );	
		}
		
	}
	
	// Get data and clean output buffer
	$el['atts']['related_products'] = ob_get_clean();
	
}

// WooCommers Pages - 2C
function pagelayer_sc_woo_pages(&$el){
	
	// if is not empty
	if(!empty($el['atts']['pages'])){
		
		$shortcode = '['. $el['atts']['pages'] .']';
		$content = pagelayer_the_content($shortcode);
		
		// if is checkout page
		if ( 'woocommerce_checkout' === $el['atts']['pages'] && '<div class="woocommerce"></div>' ==  $content ) {
			$content = '<div class="woocommerce">' . __( 'Your cart is currently empty.') . '</div>';
		}
		
	}
	
	// If the content is empty
	if(empty($content)){
		$content = '<div class="woocommerce">' . __( 'Page content not found.') . '</div>';
	}

	$el['atts']['page_content'] = $content;
}

// Product Pages - 2C
function pagelayer_sc_product_categories(&$el){
	
	$attributes = '';
	$attributes .= ' number="'. (isset($el['atts']['number']) ? $el['atts']['number'] : '').'" ';
	$attributes .= ' columns="'. (isset($el['atts']['columns']) ? $el['atts']['columns'] : '').'" ';
	$attributes .= ' hide_empty="'. (!empty($el['atts']['hide_empty']) ? 1 : 0) .'" ';
	$attributes .= ' orderby="'. (isset($el['atts']['nuorderbymber']) ? $el['atts']['nuorderbymber'] : '') .'" ';
	$attributes .= ' order="'. (isset($el['atts']['order']) ? $el['atts']['order'] : '') .'" ';	
	
	$source = isset($el['atts']['source']) ? $el['atts']['source'] : '';
	
	if ( 'by_id' === $source ) {
		$attributes .= ' ids="'. $el['atts']['by_id'] .'" ';
	} elseif ( 'by_parent' === $source ) {
		$attributes .= ' parent="'. $el['atts']['parent'] .'" ';
	} elseif ( 'current_subcategories' === $source ) {
		$attributes .= ' parent="'. get_queried_object_id() .'" ';
	}

	$shortcode = '[product_categories '. $attributes .']';
	
	// do_shortcode the shortcode
	$el['atts']['product_categories'] = pagelayer_the_content($shortcode);
	
}
	
// Products - 2C
function pagelayer_sc_products(&$el){
	
	if( WC()->session ){
		wc_print_notices();
	}
	
	$no_found = $el['atts']['no_found'];
		
	$attributes = '';
	$type = $el['atts']['source'];
	$attributes .= ' columns="'. $el['atts']['columns'] .'" ';
	$attributes .= ' rows="'. $el['atts']['rows'] .'" ';
	$attributes .= ' paginate="'. (!empty($el['atts']['paginate']) ? true : false) .'" ';
	$attributes .= ' orderby="'. $el['atts']['orderby'] .'" ';
	$attributes .= ' order="'. $el['atts']['order'] .'" ';	
	$attributes .= ' cache="false" ';	
	
	// Hide the catalog order
	if( empty($el['atts']['allow_order']) ){
		remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
	}
	
	// Hide the result count
	if( empty($el['atts']['show_result']) ){
		remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
	}
	
	if( $type == 'by_id' ){
		$type = 'products';
		$attributes .= ' ids="'. (!empty($el['atts']['ids']) ? $el['atts']['ids'] : '') .'" ';	
	}elseif( $type == 'pagelayer_current_query' ){
		
		$atts['paginate'] = (!empty($el['atts']['paginate']) ? true : false);
		$atts['cache'] = false;
				
		$type = 'pagelayer_current_query';
		
		// Set the current query
		add_action( 'woocommerce_shortcode_products_query', 'pagelayer_shortcode_current_query', 10, 10);
		
		// If product not found
		add_action( "woocommerce_shortcode_{$type}_loop_no_results", function ($attributes) use ($no_found){
			echo '<div class="pagelayer-product-no-found">'.$no_found.'</div>';
		} );
	
		$shortcode = new WC_Shortcode_Products( $atts, $type );
			
		$el['atts']['products_content'] = $shortcode->get_content();
		return true;
	}
		
	$shortcode = '['.$type.' '. $attributes .']';
	
	$content = pagelayer_the_content($shortcode);
	
	// If product not found
	if('<div class="woocommerce columns-'.$el['atts']['columns'] .' "></div>' == $content){
		$content = '<div class="pagelayer-product-no-found">'. __($no_found) .'</div>';
	}
	
	$el['atts']['products_content'] = $content;
}

// Archives Product Pages - 2C
function pagelayer_sc_product_archives(&$el){
	global $post;
	
	if ( WC()->session ) {
		wc_print_notices();
	}
	
	$atts['paginate'] = true;
	$atts['cache'] = false;
	$no_found = $el['atts']['no_found'];
		
	if( empty($el['atts']['allow_order']) ){
		remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
	}
	if( empty($el['atts']['show_result']) ){
		remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
	}
	
	$type = 'pagelayer_current_query';
	
	// We need to define costom  
	if( (isset($post->post_type) && $post->post_type == 'pagelayer-template') || wp_doing_ajax()){
		$type = '';
	}
	
	// Set the current query
	add_action( 'woocommerce_shortcode_products_query', 'pagelayer_shortcode_current_query', 10, 10);
	
	// If product not found
	add_action( "woocommerce_shortcode_{$type}_loop_no_results", function ($attributes) use ($no_found){
		echo '<div class="pagelayer-product-no-found">'.$no_found.'</div>';
	} );
	
	$shortcode = new WC_Shortcode_Products( $atts, $type );
	
	$el['atts']['product_archives'] = $shortcode->get_content();
}

// Product Price render - 2C
function pagelayer_sc_product_price(&$el) {
	global $product;
	
	$product = pagelayer_get_product();
	
	$price = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$price = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['pagelayer-product-price'] = $price;
		return;
	}
	
	ob_start();
	
	wc_get_template( '/single-product/price.php' );
	
	$el['atts']['pagelayer-product-price'] = ob_get_clean();
	
}

// Product add to cart render - 2C
function pagelayer_sc_add_to_cart(&$el) {
	
	global $product;

	$product = pagelayer_get_product();
	
	$cart = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$cart = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_add_to_cart'] = $cart;
		return;
	}
	
	ob_start();
	
	woocommerce_template_single_add_to_cart();
	
	$el['atts']['product_add_to_cart'] = '<div class="pagelayer-add-to-cart-holder pagelayer-product-'. esc_attr( $product->get_type() ) .'">
		'. ob_get_clean() .'
	</div>';
	
}

// Product rating render - 2C
function pagelayer_sc_product_rating(&$el) {
	
	if( ! post_type_supports( 'product', 'comments' ) ){
		return;
	}

	global $product;
	
	$product = pagelayer_get_product();
	
	$product_rating = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$product_rating = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_rating'] = $product_rating;
		return;
	}
	
	ob_start();
	
	wc_get_template( '/single-product/rating.php' );
	
	$product_rating =  ob_get_clean();
	
	if( empty( $product_rating ) && pagelayer_is_live_template()){
		$product_rating = __('No Rating Found!');
	}
	
	$el['atts']['product_rating'] = $product_rating;
	
}
/* 
// Product stock render - 2C
function pagelayer_product_stock() {
	
	global $product;
	$product = wc_get_product();

	if ( empty( $product ) ) {
		return;
	}

	return wc_get_stock_html( $product );
	
} */

// Product meta render - 2C
function pagelayer_sc_product_meta(&$el) {
	
	global $product;
	
	$product = pagelayer_get_product();
	
	$product_meta = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$product_meta = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_meta'] = $product_meta;
		return;
	}

	ob_start();
	wc_get_template( '/single-product/meta.php' );
	
	$el['atts']['product_meta'] = ob_get_clean();
	
}

// Product short description render - 2C
function pagelayer_sc_product_short_desc(&$el) {
	global $product, $post;
	
	$product = pagelayer_get_product();
	
	$product_short_desc = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$product_short_desc = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_short_desc'] = $product_short_desc;
		return;
	}
		
	if((isset($post->post_type) && $post->post_type == 'pagelayer-template') || wp_doing_ajax()){
		$el['atts']['product_short_desc'] = '<div class="woocommerce-product-details__short-description"><p>'.$product->get_short_description().'</p></div>';
		return;
	}
	
	ob_start();
	
	wc_get_template( 'single-product/short-description.php' );
	
	$el['atts']['product_short_desc'] = ob_get_clean();
	
}

// WooCommerce breadcrumb render - 2C
function pagelayer_woo_breadcrumb() {
	ob_start();
	woocommerce_breadcrumb();
	return ob_get_clean();
}

// Get product categories - 2C
function pagelayer_get_product_cat() {
	$categories = get_terms( 'product_cat' );

	$options = [];
	foreach ( $categories as $category ) {
		$options[ $category->term_id ] = $category->name;
	}
	
	return $options;
}

// Get product categories - 2C
function pagelayer_get_product_archives_desc() {
	ob_start();
	do_action( 'woocommerce_archive_description' );
	return ob_get_clean();
}

// Get product additional Information - 2C
function pagelayer_sc_product_addi_info(&$el) {
	global $product;
	
	$product = pagelayer_get_product();
	
	$product_additional_info = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$product_additional_info = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_additional_info'] = $product_additional_info;
		return;
	}
	
	ob_start();
	wc_get_template( 'single-product/tabs/additional-information.php' );

	$el['atts']['product_additional_info'] = ob_get_clean();
}

// Get product data tab Information - 2C
function pagelayer_sc_product_data_tabs(&$el) {
	global $product, $post;
	
	$product = pagelayer_get_product();
	
	$product_data_tab = '';
	
	if( empty( $product ) && (pagelayer_is_live_template() || wp_doing_ajax())){
		$product_data_tab = __pl('no_woo_product');
	}
	
	if ( empty( $product ) ) {
		$el['atts']['product_data_tab'] = $product_data_tab;
		return;
	}
	
	// We need load  Pagelayer shortcodes
	pagelayer_load_shortcodes();
	setup_postdata( $product->get_id());

	ob_start();
	wc_get_template( 'single-product/tabs/tabs.php' );	
	
	$data_tabs = ob_get_clean();
	
	// If no data tabs 
	if(empty($data_tabs)){
		$data_tabs =  __('Data tab not found');
	}
	
	$el['atts']['product_data_tab'] = $data_tabs;
}

// Get the HTML for menu cart
function pagelayer_sc_woo_menu_cart(&$el){
	
	// Maybe init cart
	$has_cart = is_a( WC()->cart, 'WC_Cart' );

	if ( ! $has_cart ) {
		$session_class = apply_filters( 'woocommerce_session_handler', 'WC_Session_Handler' );
		WC()->session = new $session_class();
		WC()->session->init();
		WC()->cart = new \WC_Cart();
		WC()->customer = new \WC_Customer( get_current_user_id(), true );
	}
	
	// Get the cart values
	$widget_cart_is_hidden = apply_filters( 'woocommerce_widget_cart_is_hidden', is_cart() || is_checkout() );
	$product_count = WC()->cart->get_cart_contents_count();
	$sub_total = WC()->cart->get_cart_subtotal();
	$cart_items = WC()->cart->get_cart();

	$toggle_button_link = $widget_cart_is_hidden ? wc_get_cart_url() : '#';
	/** workaround WooCommerce Subscriptions issue that changes the behavior of is_cart() */
	$toggle_button_classes = 'pagelayer-cart-button pagelayer-size-sm';
	$toggle_button_classes .= $widget_cart_is_hidden ? ' pagelayer-menu-cart-hidden' : '';
	$counter_attr = 'data-counter="' . $product_count . '"';
	
	$cart_html = '<div class="pagelayer-menu-cart-toggle">
		<a href="'. esc_attr( $toggle_button_link ) .'" class="'. $toggle_button_classes .'">
			<span class="pagelayer-cart-button-text">'. $sub_total .'</span>
			<span class="pagelayer-cart-button-icon" '. $counter_attr .'>
				<i class="'.$el['atts']['icon_type'].'" aria-hidden="true"></i>
			</span>
		</a>
	</div>';
	
	// If is cart and checkout page the except this
	if ( ! $widget_cart_is_hidden ){
		ob_start();
		wc_get_template( 'cart/mini-cart.php' );	
		$mini_cart_html = ob_get_clean();
				
		$cart_html .= '<div class="pagelayer-menu-cart-container">
			<form class="pagelayer-menu-cart-main woocommerce-cart-form" action="'. esc_url( wc_get_cart_url() ) .'" method="post">
				<div class="pagelayer-menu-cart-close">&times;</div>
				'. $mini_cart_html .'
			</form>
		</div>';
	}
	
	$el['atts']['cart_html'] = $cart_html;
}

// SiteMap Item Box - 2C
function pagelayer_sc_sitemap_item(&$el){
	$html_element = '';
	$hier = ''; 
	$depth = '';
	$option = '';
	$id = $el['id'];
	
	$option = '<div class="pagelayer-sitemap-section">';
	$hier = (empty($el['atts']['hierarchical']) ? '' : $el['atts']['hierarchical']);
	$depth = (empty($el['atts']['depth']) ? '' : $el['atts']['depth']);
	
	
	if($el['atts']['sitemap_type'] == 'post_type'){
		
		if(empty($el['atts']['title'])){
			$el['atts']['title'] = 'Pages';
		}
		
		$html_element .= $el['atts']['title'];
		
		$args = array(
			'post_type' => $el['atts']['source_post'],
			'orderby' => $el['atts']['order_post'],
			'order' => $el['atts']['order'],
			'hierarchical' => $hier,
			'number' => $depth,
			'posts_per_page' => -1,
		);
		
		$option .= '<span>'.$html_element.'</span>';
		$option .= '<ul>';
		$pages = new WP_Query($args);
		$posts = $pages->posts;
		foreach ( $posts as $page ) {
			$option .= '<li class="pagelayer-sitemap-list-item" data-postID="'.$page->ID.'"><a class="pagelayer-ele-link" href="'.get_permalink($page->ID).'">'.$page->post_name.'</a></li>';
		}
		$option .= '</ul>';	
		
	}else{
		if(empty($el['atts']['title'])){
			$el['atts']['title'] = 'Categories';
		}
		
		$html_element .= $el['atts']['title'];
		
		$args = array(
			'title_li' => 0,
			'orderby' => $el['atts']['order_taxonomy'],
			'order' => $el['atts']['order'],
			'style' => '',
			'hide_empty' => $el['atts']['hide_empty'],
			'echo' => false,
			'hierarchical' => $hier,
			'taxonomy' => $el['atts']['source_taxonomy'],
			'depth' => $depth,		
		);

		$taxonomies = get_categories( $args );
		
		$option .= '<span>'.$html_element.'</span>';
		$option .= '<ul>';	
		foreach ( $taxonomies as $taxonomy ) {
			$option .= '<li class="pagelayer-sitemap-list-item" data-postID="'.$taxonomy->term_id.'"><a class="pagelayer-ele-link" href="'.get_term_link($taxonomy->term_id).'">'.$taxonomy->name.'</a></li>';
		}
		$option .= '</ul>'; 
	}
	
	$option .= '</div>';

	$el['atts']['sitemap_html'] = $option;

}

function pagelayer_sc_slides(&$el) {
	
	if( !pagelayer_is_live() ) {
		return;
	}
	
	foreach($el['inner_blocks'] as $key => $inner_block) {
		
		if('pagelayer/pl_slide' != $inner_block['blockName']) {
			continue;
		}
		
		$slide = serialize_block($inner_block);
		$col = get_comment_delimited_block_content('pagelayer/pl_col', [] , $slide);
		$row = get_comment_delimited_block_content('pagelayer/pl_inner_row', ['col_gap' => '0.0'] , $col);
		
		$el['inner_blocks'][$key] = array(
			'blockName' => 'pagelayer/pl_content_slide',
			'innerBlocks' => parse_blocks($row),
			'innerHTML' => '',
			'attrs' => array(),
			'innerContent' => array(),
		);
	}	
}

function pagelayer_sc_chart(&$el){
	$el['atts']['xcolor'] = empty($el['atts']['xcolor']) ? '' : pagelayer_parse_color($el['atts']['xcolor'], false);
	$el['atts']['ycolor'] = empty($el['atts']['ycolor']) ? '' : pagelayer_parse_color($el['atts']['ycolor'], false);
}

function pagelayer_sc_chart_datasets(&$el){
	$el['atts']['chart_border_color'] = empty($el['atts']['chart_border_color']) ? '' : pagelayer_parse_color($el['atts']['chart_border_color'], false);
	$el['atts']['bg_color'] = empty($el['atts']['bg_color']) ? '' : pagelayer_parse_color($el['atts']['bg_color'], false);
}

// Render the image map
function pagelayer_sc_image_map(&$el) {
	
	$map_size = pagelayer_isset($el['atts'], 'img_map-size');
	$map_key = 'img_map-id-' . $map_size . '-url';
	$el['atts']['map_img_id'] = isset($el['tmp'][$map_key]) ? $el['tmp'][$map_key] : pagelayer_isset($el['tmp'], 'map_img-id-url');

	$el['atts']['pagelayer-srcset'] = $el['atts']['map_img_id'] . ', ' . $el['atts']['map_img_id'] . ' 1x, ';

	// Handle multiple paths
	if(isset($el['atts']['pagelayer_image_map']) && is_array($el['atts']['pagelayer_image_map'])){
		$el['atts']['pagelayer_map_path'] = ''; // Initialize as empty
		foreach ($el['atts']['pagelayer_image_map'] as $key => $data) {
			$data_cord = isset($data['path']) ? $data['path'] : '';
			$data_id = isset($key) ? $key : '';
			$data_link = isset($data['link']) ? $data['link'] : '';
			$el['atts']['pagelayer_map_path'] .= "<path class='pagelayer-imgmap-item' d='' stroke-width='2' data-cord='" . $data_cord . "' data-id='" . $data_id . "' fill-opacity='0.3' fill-rule='evenodd' data-link='" . $data_link . "'></path>";
		}
	}
	
	if(empty($el['atts']['pagelayer_map_path'])){
		$el['atts']['pagelayer_map_path'] = ' ';
	}
	
	$image_atts = array(
		'name' => 'img_map-id',
		'size' => 'img_map-size'
	);

	pagelayer_get_img_srcset($el, $image_atts);
}main/premium-woocommerce.php000064400000047373151526520760012223 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

add_action( 'wp', 'pagelayer_pro_wc_customization' );
function pagelayer_pro_wc_customization(){
	
	$options = pagelayer_get_customize_options();
	
	if(!is_product()){
		return;
	}
			
	if(!empty($options['woo_enable_product_zoom'] ) && $options['woo_enable_product_zoom'] == 'disable'){
		remove_theme_support( 'wc-product-gallery-zoom' );
	}
	
	if(!empty($options['woo_enable_product_zoom'] ) && $options['woo_enable_product_zoom'] == 'enable'){
		add_theme_support( 'wc-product-gallery-zoom' );
	}
	
	// Disable Product description
	if(!empty($options['woo_disable_product_desc'])){
		remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
	}
	
	// Disable up sell products
	if(!empty($options['woo_disable_upsells'])){
		remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
	}
	
	// Disable Related Products
	if(!empty($options['woo_disable_related_product'])){
		remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
	}

}

// WooCommerce Checkout Fields Hook
add_filter('woocommerce_checkout_fields','pagelayer_wc_checkout_fields_no_label',10);
function pagelayer_wc_checkout_fields_no_label($fields) {
	
	$options = pagelayer_get_customize_options();
	
	if(empty($options['woo_checkout_label_placeholder'])){
		return $fields;
	}
		
	// loop by category
	foreach ($fields as $category => $value) {
		// loop by fields
		foreach ($fields[$category] as $field => $property) {
			
			//Add label as placeholder
			if( $fields[$category][$field]['required'] == true ){
				//Add required * in placeholder
				$fields[$category][$field]['placeholder'] = $fields[$category][$field]['label'] .' *';
			}else{
				//Add (optional) in placeholder
				$fields[$category][$field]['placeholder'] = $fields[$category][$field]['label'] .'(optional)';
			}
			
			// remove label property
			unset($fields[$category][$field]['label']);
		}
	}
	
	return $fields;
}

// Disable sale flash
add_filter( 'woocommerce_sale_flash', 'pagelayer_woo_sale_flash', 10, 3 );
function pagelayer_woo_sale_flash( $html, $post, $product  ) {
	
	$options = pagelayer_get_customize_options();
	
	if(empty($options['woo_disable_onsale'])){
		return $html;
	}
	
	return '';
}

// Change number of related product on single page
add_filter( 'woocommerce_output_related_products_args', 'pagelayer_single_product_number_related_products', 99 );
function pagelayer_single_product_number_related_products( $args ) {
	
	$options = pagelayer_get_customize_options();

	if(empty($options['woo_number_related_product'])){
		return $args;
	}
	
	$args['posts_per_page'] = $options['woo_number_related_product']; // # Of related products
	
	if(!empty($options['woo_col_related_product'])){
		$args['columns'] = $options['woo_col_related_product'];
	}
	
	return $args;
}

add_filter( 'pagelayer_wc_styles_array', 'pagelayer_pro_wc_styles_array');
function pagelayer_pro_wc_styles_array($woo_styles){
	
	$styles = array(
		'woo_shop_pagi_bg_color' => array(
			'.woocommerce .woocommerce-pagination ul li a, .woocommerce .woocommerce-pagination a.page-numbers' => 'background-color: {{color}}',
		),
		'woo_shop_pagi_color' => array(
			'.woocommerce .woocommerce-pagination ul li a, .woocommerce .woocommerce-pagination a.page-numbers' => 'color: {{color}}',
		),
		'woo_shop_pagi_borderwidth' => array(
			'.woocommerce .woocommerce-pagination ul li a, .woocommerce .woocommerce-pagination a.page-numbers' => 'border: {{val}}px solid',
			'.woocommerce .woocommerce-pagination ul li a:focus, .woocommerce .woocommerce-pagination ul li a:hover, .woocommerce .woocommerce-pagination ul li span.current, .woocommerce .woocommerce-pagination a.page-numbers:hover, .woocommerce .woocommerce-pagination a.page-numbers:focus, .woocommerce .woocommerce-pagination span.page-numbers.current' => 'border: {{val}}px solid',
		),
		'woo_shop_pagi_border_color' => array(
			'.woocommerce .woocommerce-pagination ul li a, .woocommerce .woocommerce-pagination a.page-numbers' => 'border-color: {{color}}',
		),
		'woo_shop_pagi_borderradius' => array(
			'.woocommerce .woocommerce-pagination ul li a, .woocommerce .woocommerce-pagination a.page-numbers' => 'border-radius: {{val}}px',
			'.woocommerce .woocommerce-pagination ul li a:focus, .woocommerce .woocommerce-pagination ul li a:hover, .woocommerce .woocommerce-pagination ul li span.current, .woocommerce .woocommerce-pagination a.page-numbers:hover, .woocommerce .woocommerce-pagination a.page-numbers:focus, .woocommerce .woocommerce-pagination span.page-numbers.current' => 'border-radius: {{val}}px',
		),
		'woo_shop_pagi_bg_hover_color' => array(
			'.woocommerce .woocommerce-pagination ul li a:focus, .woocommerce .woocommerce-pagination ul li a:hover, .woocommerce .woocommerce-pagination ul li span.current, .woocommerce .woocommerce-pagination a.page-numbers:hover, .woocommerce .woocommerce-pagination a.page-numbers:focus, .woocommerce .woocommerce-pagination span.page-numbers.current' => 'background-color: {{color}}',
		),
		'woo_shop_pagi_hover_color' => array(
			'.woocommerce .woocommerce-pagination ul li a:focus, .woocommerce .woocommerce-pagination ul li a:hover, .woocommerce .woocommerce-pagination ul li span.current, .woocommerce .woocommerce-pagination a.page-numbers:hover, .woocommerce .woocommerce-pagination a.page-numbers:focus, .woocommerce .woocommerce-pagination span.page-numbers.current' => 'color: {{color}}',
		),
		'woo_shop_pagi_hover_border_color' => array(
			'.woocommerce .woocommerce-pagination ul li a:focus, .woocommerce .woocommerce-pagination ul li a:hover, .woocommerce .woocommerce-pagination ul li span.current, .woocommerce .woocommerce-pagination a.page-numbers:hover, .woocommerce .woocommerce-pagination a.page-numbers:focus, .woocommerce .woocommerce-pagination span.page-numbers.current' => 'border-color: {{color}}',
		),
		'woo_onsale_bg_color' => array(
			'.woocommerce .product span.onsale' => 'background-color:{{color}};',
		),
		'woo_onsale_color' => array(
			'.woocommerce .product span.onsale' => 'color:{{color}};',
		),
		'woo_onsale_radius' => array(
			'.woocommerce .product span.onsale' => 'border-radius:{{color}}%;',
		),
		'woo_product_breadcrumb_color' => array(
			'.single-product .woocommerce-breadcrumb, .single-product .woocommerce-breadcrumb *' => 'color: {{color}}'
		),
		'woo_product_description_color' => array(
			'.single-product div.product .woocommerce-product-details__short-description, .single-product div.product .woocommerce-product-details__short-description p, .single-product div.product .product_meta, .single-product div.product .entry-content' => 'color: {{color}}'
		),
		'woo_product_price_color' => array(
			'.single-product div.product p.price, .single-product div.product span.price' => 'color: {{color}}'
		),
		'woo_product_title_color' => array(
			'.single-product .product .entry-title' => 'color: {{color}}'
		)
	);
	
	return array_merge( $woo_styles, $styles ); 
}
	

add_filter( 'customize_register', 'pagelayer_pro_customizer_get_fields', 11);
function pagelayer_pro_customizer_get_fields($wp_customize){
	
	// General Setting
	
	$wp_customize->add_setting( 'pagelayer_lable_onsale', array(
		'capability' => 'edit_theme_options',
	));

	$wp_customize->add_control( new Pagelayer_Customize_Control(
		$wp_customize, 'pagelayer_lable_onsale', array(
			'type' => 'hidden',
			'section' => 'pgl_woo_general',
			'description' => __('<div class="pagelayer-customize-heading"><div>Onsale Style</div></div>', 'pagelayer'),
			'li_class' => 'pagelayer-accordion-tab',
			'priority' => 2
		)
	));
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_disable_onsale]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Custom_Control( $wp_customize, 'pagelayer_customizer_options[woo_disable_onsale]', array(
			'type' => 'checkbox',
			'label' => __('Disable Sale Notification'),
			'section' => 'pgl_woo_general',
			'priority' => 2
		))
	);
	
	// Adds Customizer settings
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_onsale_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_onsale_color]', array(
			'label' => __('Sale Text Color'),
			'section' => 'pgl_woo_general',
			'priority' => 3
		) )
	);
	
	// Adds Customizer settings
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_onsale_bg_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_onsale_bg_color]', array(
			'label' => __('Sale Background'),
			'section' => 'pgl_woo_general',
			'priority' => 4
		) )
	);
	
	// General Setting
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_onsale_radius]',
		'section' => 'pgl_woo_general',
		'setting_type' => 'option',
		'label' => __( 'Sale Notification Radius'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'priority' => 4,
		'input_attrs' => array(
			'min' => 0,
			'max' => 100,
			'step' => 1,
		)
	));
	
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_product_image_width]',
		'section' => 'pgl_woo_single_product',
		'setting_type' => 'option',
		'label' => __('Image Width'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'priority' => 3,
		'input_attrs' => array(
			'min' => 0,
			'max' => 70,
			'step' => 1,
		)
	));
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_enable_product_zoom]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( 'pagelayer_customizer_options[woo_enable_product_zoom]', array(
			'type' => 'select',
			'label' => __('Image Zoom Effect'),
			'section' => 'pgl_woo_single_product',
			'priority' => 4,
			'choices' => array(
				'' => __('Default'),
				'enable' => __('Enable'),
				'disable' => __('Disable'),
			)
		)
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_disable_product_desc]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Custom_Control( $wp_customize, 'pagelayer_customizer_options[woo_disable_product_desc]', array(
			'type' => 'checkbox',
			'label' => __('Hide Products Description'),
			'section' => 'pgl_woo_single_product',
			'priority' => 5
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_disable_upsells]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Custom_Control( $wp_customize, 'pagelayer_customizer_options[woo_disable_upsells]', array(
			'type' => 'checkbox',
			'label' => __('Disable Products Up Sells'),
			'section' => 'pgl_woo_single_product',
			'priority' => 6
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_disable_related_product]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Custom_Control( $wp_customize, 'pagelayer_customizer_options[woo_disable_related_product]', array(
			'type' => 'checkbox',
			'label' => __('Disable Related Products'),
			'section' => 'pgl_woo_single_product',
			'priority' => 7
		))
	);
	
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_number_related_product]',
		'section' => 'pgl_woo_single_product',
		'setting_type' => 'option',
		'label' => __('No. of Related Products'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'priority' => 8,
		'input_attrs' => array(
			'min' => 1,
			'max' => 10,
			'step' => 1,
		),
	));
	
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_col_related_product]',
		'section' => 'pgl_woo_single_product',
		'setting_type' => 'option',
		'label' => __('Related Products columns'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'priority' => 8,
		'input_attrs' => array(
			'min' => 1,
			'max' => 6,
			'step' => 1,
		),
	));
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_product_title_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_product_title_color]', array(
			'label' => __('Title Color'),
			'section' => 'pgl_woo_single_product',
			'priority' => 9
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_product_price_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_product_price_color]', array(
			'label' => __('Price Color'),
			'section' => 'pgl_woo_single_product',
			'priority' => 10
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_product_description_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_product_description_color]', array(
			'label' => __('Description Color'),
			'section' => 'pgl_woo_single_product',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_product_breadcrumb_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_product_breadcrumb_color]', array(
			'label' => __('Breadcrumb Color'),
			'section' => 'pgl_woo_single_product',
			'priority' => 12
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_checkout_label_placeholder]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',						
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Custom_Control( $wp_customize, 'pagelayer_customizer_options[woo_checkout_label_placeholder]', array(
			'type' => 'checkbox',
			'label' => __('Show Label as Placeholder'),
			'section' => 'pgl_woo_checkout',
			'priority' => 4
		))
	);
	
	// Shop page settings
	$wp_customize->add_setting( 'pagelayer_lable_shop_pagi', array(
		'capability' => 'edit_theme_options',
	));

	$wp_customize->add_control( new Pagelayer_Customize_Control(
		$wp_customize, 'pagelayer_lable_shop_pagi', array(
			'type' => 'hidden',
			'section' => 'pgl_woo_product_catalog',
			'description' => __('<div class="pagelayer-customize-heading"><div>Pagination Style</div></div>', 'pagelayer'),
			'li_class' => 'pagelayer-accordion-tab',
			'priority' => 11
		)
	));
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_bg_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_bg_color]', array(
			'label' => __('Background Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_bg_hover_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh'
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_bg_hover_color]', array(
			'label' => __('Background Hover Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_color]', array(
			'label' => __('Text Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_hover_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_hover_color]', array(
			'label' => __('Text Hover Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_border_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_border_color]', array(
			'label' => __('Border Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	$wp_customize->add_setting( 'pagelayer_customizer_options[woo_shop_pagi_hover_border_color]', array(
			'type' => 'option',
			'capability' => 'edit_theme_options',
			'transport' => 'refresh',
		)
	);
	
	$wp_customize->add_control( new Pagelayer_Customize_Alpha_Color_Control( $wp_customize, 'pagelayer_customizer_options[woo_shop_pagi_hover_border_color]', array(
			'label' => __('Border Hover Color'),
			'section' => 'pgl_woo_product_catalog',
			'priority' => 11
		))
	);
	
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_shop_pagi_borderwidth]',
		'section' => 'pgl_woo_product_catalog',
		'setting_type' => 'option',
		'label' => __('Pagination Border Width'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'sanitize_callback' => 'absint',
		'priority' => 11,
		'input_attrs' => array(
			'min' => 0,
			'max' => 50,
			'step' => 1,
		),
		'responsive' => 1,
	));
	
	pagelayer_register_slider_custoze_control($wp_customize, array(
		'control' => 'pagelayer_customizer_options[woo_shop_pagi_borderradius]',
		'section' => 'pgl_woo_product_catalog',
		'setting_type' => 'option',
		'label' => __('Border Radius'),
		'capability' => 'edit_theme_options',
		'transport' => 'refresh',
		'sanitize_callback' => 'absint',
		'priority' => 11,
		'input_attrs' => array(
			'min' => 0,
			'max' => 100,
			'step' => 1,
		),
	));
		
}main/freemium.php000064400000757003151526520760010037 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// freemium.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

global $pagelayer;

// Posts options style
$pagelayer_posts_options = array(
	'type' => array(
		'type' => 'select',
		'label' => __pl('type'),
		'default' => 'default',
		'list' => array(
			'default' => __pl('default'),
		),
	),
	'infinite_types' => array(
		'type' => 'radio',	
		'label' => __pl('infinite_scroll'),
		'addClass' =>  ['pagelayer-infinite-posts','{{element}} .pagelayer-posts-container' => 'pagelayer-infinite-scroll-{{val}}'],
		'list' => array(
			'' => __pl('none'),
			'button' => __pl('Button'),
			'auto' => __pl('Auto'),
		),
		'req' => ['!enable_slider' => 'true'],
	),
	'alignment' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'addClass' =>  'pagelayer-arc-layout-{{val}}',
		'list' => array(
			'' => __pl('default'),
			'left' => __pl('left'),
			'right' => __pl('right'),
			'alt'	=> __pl('Alternative')
		),
	),
	'columns' => array(
		'type' => 'select',
		'label' => __pl('columns'),
		'np' => 1,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-posts-container' => 'grid-template-columns: repeat({{val}},1fr);'],
		'list' => array(
			'1' => '1',
			'2' => '2',
			'3' => '3',
			'4' => '4',
			'5' => '5',
			'6' => '6',
		),
	),
	'col_gap' => array(
		'type' => 'slider',
		'label' => __pl('col_gap'),
		'min' => 0,
		'step' => 1,
		'max' => 100,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-posts-container' => 'grid-column-gap: {{val}}px;'],
	),
	'row_gap' => array(
		'type' => 'slider',
		'label' => __pl('row_gap'),
		'min' => 0,
		'step' => 1,
		'max' => 100,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-posts-container' => 'grid-row-gap: {{val}}px;'],
	),
	'data_padding' => array(
		'type' => 'padding',
		'label' => __pl('padding'),
		'default' => '5,5,5,5',
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-content' => 'padding : {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
	),
	'data_margin' => array(
		'type' => 'padding',
		'label' => __pl('margin'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-col' => 'margin :{{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
	),
	'bg_color' => array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'default' => '#ffffff',
		'css' => ['{{element}} .pagelayer-wposts-col' => 'background-color:{{val}};'],
	),
	'box_shadow' => array(
		'type' => 'box_shadow',
		'label' => __pl('box_shadow'),
		'css' => ['{{element}} .pagelayer-wposts-col' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
	),
	'post_bor_hover' => array(
		'type' => 'radio',
		'label' => __pl('state'),
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		)
	),	
	'post_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => [
			'{{element}} .pagelayer-wposts-col' => 'border-style: {{val}};',
			],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'post_bor_hover' => ''
		),
	),
	'post_border_color' => array(
		'type' => 'color',
		'label' => __pl('border_color_label'),
		'default' => '#42414f',
		'css' => ['{{element}} .pagelayer-wposts-col' => 'border-color: {{val}};'],
		'req' => array(
			'!post_border_type' => ''
		),
		'show' => array(
			'post_bor_hover' => ''
		),
	),
	'post_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-col' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
		'req' => [
			'!post_border_type' => ''
		],
		'show' => array(
			'post_bor_hover' => ''
		),
	),
	'post_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-col' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!post_border_type' => '',
		),
		'show' => array(
			'post_bor_hover' => '',
		),
	),
	'post_border_type_hover' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => [
			'{{element}} .pagelayer-wposts-col:hover' => 'border-style: {{val}}',	
		],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'post_bor_hover' => 'hover'
		),
	),
	'post_border_color_hover' => array(
		'type' => 'color',
		'label' => __pl('border_color_hover_label'),
		'default' => '#42414f',
		'css' => ['{{element}} .pagelayer-wposts-col:hover' => 'border-color: {{val}};'],
		'req' => array(
			'!post_border_type_hover' => ''
		),
		'show' => array(
			'post_bor_hover' => 'hover'
		),
	),
	'post_border_width_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_width_hover'),
		'screen' => 1,
		'css' => [
			'{{element}} .pagelayer-wposts-col:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'
		],
		'req' => [
			'!post_border_type_hover' => ''
		],
		'show' => array(
			'post_bor_hover' => 'hover'
		),
	),
	'post_border_radius_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_radius_hover'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-col:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!post_border_type_hover' => '',
		),
		'show' => array(
			'post_bor_hover' => 'hover',	
		),
	),
	'anim_hover' => array(
		'type' => 'select',
		'label' => __pl('Post Animation'),
		'addClass' => ['{{element}} .pagelayer-wposts-col' => 'pagelayer-animation-{{val}}'],
		'list' => [
			'' => __pl('none'),
			'grow' => __pl('Grow'),
			'shrink' => __pl('Shrink'),
			'pulse' => __pl('Pulse'),
			'pulse-grow' => __pl('Pulse Grow'),
			'pulse-shrink' => __pl('Pulse Shrink'),
			'push' => __pl('Push'),
			'pop' => __pl('Pop'),
			'buzz' => __pl('Buzz'),
			'buzz-out' => __pl('Buzz Out'),
			'float' => __pl('Float'),
			'sink' => __pl('Sink'),
			'bob' => __pl('Bob'),
			'hang' => __pl('Hang'),
			'bounce-in' => __pl('Bounce In'),
			'bounce-out' => __pl('Bounce Out'),
			'rotate' => __pl('Rotate'),
			'grow-rotate' => __pl('Grow Rotate'),
			'skew-forward' => __pl('Skew Forward'),
			'skew-backward' => __pl('Skew Backward'),
			'wobble-vertical' => __pl('Wobble Vertical'),
			'wobble-horizontal' => __pl('Wobble Horizontal'),
			'wobble-bottom-to-right' => __pl('Wobble Bottom To Right'),
			'wobble-top-to-right' => __pl('Wobble Top To Right'),
			'wobble-top' => __pl('Wobble Top'),
			'wobble-bottom' => __pl('Wobble Bottom'),
			'wobble-skew' => __pl('Wobble Skew'),
		],
	)
);

// Posts thumb style
$pagelayer_thumb_style = [
	'show_thumb' => array(
		'label' => __pl('show_thumb'),
		'type' => 'checkbox',
		'default' => 'true',
		//'addAttr' => ['{{element}} a' => 'target="_blank"'],
	),
	'thumb_img_type' => array(
		'type' => 'select',
		'label' => __pl('thumb_img_type'),
		'list' => array(
			'' => __pl('default'),
			'custom' => __pl('custom')
		),
		'req' => ['show_thumb' => 'true'],
	),
	'def_thumb_img' => array(
		'type' => 'image',
		'label' => __pl('image'),
		'req' => [
			'show_thumb' => 'true',
			'thumb_img_type' => 'custom',			
		]
	),
	'thumb_size' => array(
		'type' => 'select',
		'label' => __pl('type'),
		'default' => 'medium_large',
		'list' => pagelayer_image_sizes(),
		'req' => ['show_thumb' => 'true'],
	),
	'ratio' => array(
		'type' => 'slider',
		'label' => __pl('ratio'),
		'min' => 0,
		'step' => 0.1,
		'max' => 2,
		'default' => 0.7,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-thumb' => 'padding: calc(50% * {{val}}) 0;'],
		'req' => ['show_thumb' => 'true'],
	),
];

// Posts type style
$pagelayer_title_style = [
	'show_title' => array(
		'type' => 'checkbox',
		'label' => __pl('show_title'),
		'default' => 'true',
	),
	'title_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'default' => '#0986c0',
		'css' => ['{{element}} .pagelayer-wposts-title' => 'color:{{val}};'],
		'req' => ['show_title' => 'true'],
	),
	'title_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'default' => ',18,,,,,,,,,',
		'css' => ['{{element}} .pagelayer-wposts-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
		'req' => ['show_title' => 'true'],
	),
	'title_spacing' => array(
		'type' => 'dimension',
		'label' => __pl('top_bottom_spacing'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-title' => 'padding-top:{{val[0]}}px; padding-bottom:{{val[1]}}px;'],
		'req' => ['show_title' => 'true'],
	),
];

// Posts meta options
$pagelayer_meta_style = [
	'meta' => array(
		'type' => 'multiselect',
		'label' => __pl('meta'),
		'default' => 'author,date',
		'list' => array(
			'date' => __pl('date'),
			'author' => __pl('author'),
			'comments' => __pl('comments'),
			'tags' => __pl('tags'),
			'category' => __pl('category'),
		),
	),
	'meta_sep' => array(
		'type' => 'text',
		'label' => __pl('separator'),
		'default' => ' | ',
	),
	'meta_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} .pagelayer-wposts-meta *' => 'color:{{val}};'],
	),
	'meta_bg' => array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} .pagelayer-wposts-meta' => 'background-color:{{val}};'],
	),
	'meta_align' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-meta' => 'text-align:{{val}};'],
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right'),
		),
	),
	'meta_spacing' => array(
		'type' => 'padding',
		'label' => __pl('spacing'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-meta' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;'],
	),
	'meta_bor_rad' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'units' => ['px', '%'],
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-meta' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
	),
	'meta_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => [
			'{{element}} .pagelayer-wposts-meta *' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
			'{{element}} .pagelayer-wposts-sep' => 'font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important;'
		],
	),
	'meta_tag_pos' => array(
		'type' => 'select',
		'label' => __pl('position'),
		'screen' => 1,
		'css' => [
			'{{element}} .pagelayer-wposts-post' => 'position: relative;',
			'{{element}} .pagelayer-wposts-meta' => 'position: {{val}};'
		],
		'list' => array(
			'' => __pl('default'),
			'relative' => __pl('relative'),
			'absolute' => __pl('absolute')
		),
	),
	'meta_width' => [
		'type' => 'slider',
		'label' => __pl('width'),
		'screen' => 1,
		'units' => ['px','%','em'],
		'css' => ['{{element}} .pagelayer-wposts-meta' => 'width:{{val}};'],
		'min' => 0,
		'max' => 1000,
		'step' => 1,
		'req' => ['!meta_tag_pos' => '']
	],
	'meta_vposition' => [
		'type' => 'select',
		'label' => __pl('verticle_pos'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-meta' => '{{val}}:0;'],
		'list' => [
			'' => __pl('default'),
			'top' => __pl('top'),
			'bottom' => __pl('bottom')
		],
		'req' => ['!meta_tag_pos' => '']
	],
	'meta_vposition_offset' => [
		'type' => 'slider',
		'label' => __pl('ver_offset'),
		'screen' => 1,
		'units' => ['px','%','em'],
		'css' => ['{{element}} .pagelayer-wposts-meta' => '{{meta_vposition}}:{{val}};'],
		'min' => -1000,
		'max' => 1000,
		'step' => 1,
		'req' => [
			'!meta_vposition' => '',
			'!meta_tag_pos' => ''
		]
	],
	'meta_hposition' => [
		'type' => 'select',
		'label' => __pl('horizontal_pos'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-meta' => '{{val}}:0;'],
		'list' => [
			'' => __pl('default'),
			'left' => __pl('left'),
			'right' => __pl('right')
		],
		'req' => ['!meta_tag_pos' => '']
	],
	'meta_hposition_offset' => [
		'type' => 'slider',
		'label' => __pl('hor_offset'),
		'screen' => 1,
		'units' => ['px','%','em'],
		'css' => ['{{element}} .pagelayer-wposts-meta' => '{{meta_hposition}}:{{val}};'],
		'min' => -1000,
		'max' => 1000,
		'step' => 1,
		'req' => [
			'!meta_hposition' => '',
			'!meta_tag_pos' => ''
		]
	]
];

// Posts content style
$pagelayer_content_style = [
	'show_content' => array(
		'type' => 'select',
		'label' => __pl('show_content'),
		'default' => 'excerpt',
		'list' => array(
			'' => __pl('none'),
			'excerpt' => __pl('excerpt'),
			'full' => __pl('full'),
		),
	),
	'exc_length' => array(
		'type' => 'spinner',
		'label' => __pl('exc_length'),
		'min' => 0,
		'step' => 1,
		'max' => 500,
		'default' => 10,
		'req' => ['show_content' => 'excerpt']
	),
	'content_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'default' => '#121212',
		'css' => ['{{element}} .pagelayer-wposts-content' => 'color:{{val}};'],
	),
	'content_padding' => array(
		'type' => 'padding',
		'label' => __pl('padding'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-content .pagelayer-wposts-excerpt' => 'padding: {{val[0]}}px  {{val[1]}}px  {{val[2]}}px  {{val[3]}}px;'],
	),
	'content_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} .pagelayer-wposts-excerpt' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
	),
	'content_align' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'default' => 'left',
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-content' => 'text-align:{{val}};'],
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right'),
		),
	),
];

//Post Infinite Style
$pagelayer_infinite_style = array(
	'infinite_text' => array(
		'type' => 'text',	
		'label' => __pl('Button Text'),
		'default' => 'Load More',
		'req' => ['infinite_types' => 'button']	
	),
	'infinite_final' => array(
		'type' => 'text',
		'addAttr' => ['{{element}} .pagelayer_load_button' => 'data-text="{{infinite_final}}"'],	
		'label' => __pl('Post End Message'),
		'default' => 'No More Post',	
	),
	'infinite_full_width' => array(
		'type' => 'checkbox',
		'label' => __pl('stretch'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load' => 'width: 100% !important; text-align: center;',
		'{{element}} .pagelayer_load_button' =>'text-align: center;'],
	),
	'btn_typo' => array(
		'type' => 'typography',
		'label' => __pl('quote_content_typo'),
		'css' => [
			'{{element}} .pagelayer-btn-load-text' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
			'{{element}} .pagelayer_load_button' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
		],
	),
	'load_align' => array(
		'type' => 'radio',	
		'label' => __pl('alignment'),
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right'),
		),
		'css' => ['{{element}} .pagelayer_load_button' => 'text-align:{{val}}'],
		'req' => ['infinite_types' => 'button',	'infinite_full_width' => '']
	),
	'load_margin' => array(
		'type' => 'padding',
		'label' => __pl('margin'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer_load_button' => 'margin :{{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
	),
	'load_btn_icon' => array(
		'type' => 'icon',
		'label' => __pl('service_box_font_icon_label'),
	),
	'load_btn_icon_position' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'default' => 'pagelayer-btn-icon-left',
		'list' => array(
			'pagelayer-btn-icon-left' => __pl('left'),
			'pagelayer-btn-icon-right' => __pl('right')
		),
		'req' => array(
			'!load_btn_icon' => ''
		),
	),
	'load_btn_icon_spacing' => array(
		'type' => 'slider',
		'label' => __pl('icon_spacing'),
		'min' => 1,
		'step' => 1,
		'max' => 100,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load-icon' => 'padding: 0 {{val}}px;'],
		'req' => ['!btn_icon' => ''],
	),
	'infinite_btn_type' => array(
		'type' => 'select',
		'label' => __pl('button_type_label'),
		'default' => 'pagelayer-btn-default',
		'list' => array(
			'pagelayer-btn-default' => __pl('btn_type_default'),
			'pagelayer-btn-primary' => __pl('btn_type_primary'),
			'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
			'pagelayer-btn-success' => __pl('btn_type_success'),
			'pagelayer-btn-info' => __pl('btn_type_info'),
			'pagelayer-btn-warning' => __pl('btn_type_warning'),
			'pagelayer-btn-danger' => __pl('btn_type_danger'),
			'pagelayer-btn-dark' => __pl('btn_type_dark'),
			'pagelayer-btn-light' => __pl('btn_type_light'),
			'pagelayer-btn-link' => __pl('btn_type_link'),
			'pagelayer-btn-anim' => __pl('btn_type_anim'),
			'pagelayer-btn-custom' => __pl('btn_type_custom')
		),
	),
	'infinite_anim_type' => array(
		'type' => 'select',
		'label' => __pl('type'),
		'default' => 'glow',
		'addClass' => ['{{element}} .pagelayer-btn-load' => 'pagelayer-btn-anim-{{val}}'],
		'list' => array(
			'glow' => __pl('glow_button'),
			'thin' => __pl('thin_button'),
			'slide' => __pl('slide_button')
		),
		'req' => array(
			'infinite_btn_type' => 'pagelayer-btn-anim'
		),
	),
	'infinite_direction' => array(
		'type' => 'select',
		'label' => __pl('animation_direction'),
		'default' => 'pagelayer-btn-anim-left',
		'addClass' =>  ['{{element}} .pagelayer-btn-load' => '{{val}}'],
		'list' => array(
			'pagelayer-btn-anim-left' => __pl('left'),
			'pagelayer-btn-anim-right' => __pl('right'),
		),
		'req' => array(
			'infinite_anim_type' => 'slide',
			'infinite_btn_type' => 'pagelayer-btn-anim',
		),
	),
	'infinite_btn_size' => array(
		'type' => 'select',
		'label' => __pl('button_size_label'),
		'default' => 'pagelayer-btn-large',
		'list' => array(
			'pagelayer-btn-mini' => __pl('mini'),
			'pagelayer-btn-small' => __pl('small'),
			'pagelayer-btn-large' => __pl('large'),
			'pagelayer-btn-extra-large' => __pl('extra_large'),
			'pagelayer-btn-double-large' => __pl('double_large'),
			'pagelayer-btn-custom' => __pl('custom'),
		)
	),
	'infinite_btn_custom_size' => array(
		'type' => 'spinner',
		'label' => __pl('btn_custom_size'),
		'min' => 1,
		'step' => 1,
		'max' => 100,
		'default' => 5,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load' => 'padding: calc({{val}}px / 2) {{val}}px;'],
		'req' => array(
			'infinite_btn_size' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
		),
	),
	'infinite_btn_hover' => array(
		'type' => 'radio',
		'label' => __pl('state'),
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		),
		'req' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
		),
	),
	'infinite_btn_bg_color' => array(
		'type' => 'color',
		'label' => __pl('btn_bg_color_label'),
		'default' => '#818a91',
		'css' => [
			'{{element}} .pagelayer-btn-load' => 'background-color: {{val}};',
			'{{element}} .pagelayer-btn-anim-thin' => 'background-color: unset !important;',
			'{{element}} .pagelayer-btn-anim-thin::before' => 'background-color: {{val}};',
			'{{element}} .pagelayer-btn-anim-thin::after' => 'background-color: {{val}};',
		],
		'req' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
		),
		'show' => array(
			'infinite_btn_hover' => ''
		),
	),
	'infinite_btn_color' => array(
		'type' => 'color',
		'label' => __pl('btn_color_label'),
		'default' => '#ffffff',
		'css' => ['{{element}} .pagelayer-btn-load' => 'color: {{val}};'],
		'req' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
		),
		'show' => array(
			'infinite_btn_hover' => ''
		),
	),
	'infinite_btn_hover_delay' => array(
		'type' => 'spinner',
		'label' => __pl('btn_hover_delay_label'),
		'desc' => __pl('btn_hover_delay_desc'),
		'min' => 0,
		'step' => 100,
		'max' => 5000,
		'default' => 400,
		'css' => ['{{element}} .pagelayer-btn-load' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
		'show' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
			'infinite_btn_hover' => 'hover'
		),
	),
	'infinite_btn_bg_color_hover' => array(
		'type' => 'color',
		'label' => __pl('btn_bg_color_hover_label'),
		'css' => [
			'{{element}} .pagelayer-btn-custom:hover, {{element}} .pagelayer-btn-anim-slide:after' => 'background-color: {{val}};',
		],
		'req' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
			'!infinite_anim_type' => ['glow','thin'],
		),
		'show' => array(
			'infinite_btn_hover' => 'hover',
			'!infinite_anim_type' => ['glow','thin'],
		),
	),
	'infinite_btn_color_hover' => array(
		'type' => 'color',
		'label' => __pl('btn_color_hover_label'),
		'css' => ['{{element}} .pagelayer-btn-load:hover' => 'color: {{val}};'],
		'req' => array(
			'infinite_btn_type' => ['pagelayer-btn-custom','pagelayer-btn-anim'],
		),
		'show' => array(
			'infinite_btn_hover' => 'hover'
		),
	),
	'infinite_btn_shadow' => [
		'type' => 'box_shadow',
		'label' => __pl('shadow'),
		'css' => ['{{element}} .pagelayer-btn-load' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
	],
	'infinite_btn_shadow_hover' => [
		'type' => 'box_shadow',
		'label' => __pl('box_shadow_hover'),
		'css' => ['{{element}} .pagelayer-btn-load:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
	],	
	'infinite_btn_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => [
			'{{element}} .pagelayer-btn-load, {{element}} .pagelayer-btn-anim-thin:after, {{element}} .pagelayer-btn-anim-thin:before' => 'border-style: {{val}};',
			'{{element}} .pagelayer-btn-anim-thin' => 'border-style: unset !important;',
			],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'infinite_btn_hover' => ''
		),
	),
	'infinite_btn_border_color' => array(
		'type' => 'color',
		'label' => __pl('border_color_label'),
		'default' => '#42414f',
		'css' => ['{{element}} .pagelayer-btn-load' => 'border-color: {{val}};'],
		'req' => array(
			'!infinite_btn_border_type' => ''
		),
		'show' => array(
			'infinite_btn_hover' => ''
		),
	),
	'infinite_btn_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load, {{element}} .pagelayer-btn-anim-thin:after, {{element}} .pagelayer-btn-anim-thin:before' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
		'req' => [
			'!infinite_btn_border_type' => ''
		],
		'show' => ['infinite_btn_hover' => ''],
	),
	'infinite_btn_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load, {{element}} .pagelayer-btn-anim-glow:before' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!infinite_btn_border_type' => '',
			'!infinite_anim_type' => 'slide'
		),
		'show' => array(
			'infinite_btn_hover' => '',
			'!infinite_anim_type' => 'slide'
		),
	),
	'infinite_btn_border_type_hover' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => [
			'{{element}} .pagelayer-btn-load:hover, {{element}} .pagelayer-btn-anim-thin:hover:after, {{element}} .pagelayer-btn-anim-thin:hover:before' => 'border-style: {{val}}',
			'{{element}} .pagelayer-btn-anim-thin:hover' => 'border-style: unset !important;',
		],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'infinite_btn_hover' => 'hover'
		),
	),
	'infinite_btn_border_color_hover' => array(
		'type' => 'color',
		'label' => __pl('border_color_hover_label'),
		'default' => '#42414f',
		'css' => ['{{element}} .pagelayer-btn-load:hover' => 'border-color: {{val}};'],
		'req' => array(
			'!btn_border_type_hover' => ''
		),
		'show' => array(
			'infinite_btn_hover' => 'hover'
		),
	),
	'infinite_btn_border_width_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_width_hover'),
		'screen' => 1,
		'css' => [
			'{{element}} .pagelayer-btn-load:hover, {{element}} .pagelayer-btn-anim-thin:hover:after, {{element}} .pagelayer-btn-anim-thin:hover:before' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'
		],
		'req' => [
			'!infinite_btn_border_type_hover' => ''
		],
		'show' => array(
			'infinite_btn_hover' => 'hover'
		),
	),
	'infinite_btn_border_radius_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_radius_hover'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-load:hover, {{element}} .pagelayer-btn-anim-glow:before' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!btn_border_type_hover' => '',
			'!anim_type' => 'slide'
		),
		'show' => array(
			'infinite_btn_hover' => 'hover',
			'!infinite_anim_type' => 'slide'
		),
	),
);

// Post More style
$pagelayer_more_style = [
	'show_more' => array(
		'type' => 'checkbox',
		'label' => __pl('show'),
	),
	'more' => array(
		'type' => 'text',
		'label' => __pl('text'),
		'default' => 'read more &#187;',
		'req' => ['show_more' => 'true'],
	),
	'more_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} .pagelayer-wposts-more' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
		'req' => ['show_more' => 'true'],
	),
	'full_width' => array(
		'type' => 'checkbox',
		'label' => __pl('stretch'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'width: 100%; text-align: center;'],
		'req' => ['show_more' => 'true'],
	),
	'align' => array(
		'type' => 'radio',
		'label' => __pl('obj_align_label'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-mdiv' => 'text-align: {{val}}'],
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right')
		),
		'req' => array(
			'full_width' => '',
			'show_more' => 'true',
		)
	),
	'icon' => array(
		'type' => 'icon',
		'label' => __pl('service_box_font_icon_label'),
		'req' => ['show_more' => 'true'],
	),
	'icon_position' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'default' => 'pagelayer-btn-icon-left',
		'list' => array(
			'pagelayer-btn-icon-left' => __pl('left'),
			'pagelayer-btn-icon-right' => __pl('right')
		),
		'req' => [
			'show_more' => 'true', 
			'!icon' => ''
		],
	),
	'icon_spacing' => array(
		'type' => 'slider',
		'label' => __pl('icon_spacing'),
		'min' => 1,
		'step' => 1,
		'max' => 100,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-icon' => 'padding: 0 {{val}}px;'],
		'req' => array(
			'!icon' => '',
			'show_more' => 'true',
		),
	),
	'btn_type' => array(
		'type' => 'select',
		'label' => __pl('button_type'),
		//'addClass' => ['{{element}} .pagelayer-btn-holder' => '{{val}}'],
		'list' => array(
			'pagelayer-btn-link' => __pl('btn_type_link'),
			'pagelayer-btn-default' => __pl('btn_type_default'),
			'pagelayer-btn-primary' => __pl('btn_type_primary'),
			'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
			'pagelayer-btn-success' => __pl('btn_type_success'),
			'pagelayer-btn-info' => __pl('btn_type_info'),
			'pagelayer-btn-warning' => __pl('btn_type_warning'),
			'pagelayer-btn-danger' => __pl('btn_type_danger'),
			'pagelayer-btn-dark' => __pl('btn_type_dark'),
			'pagelayer-btn-light' => __pl('btn_type_light'),
			'pagelayer-btn-custom' => __pl('btn_type_custom')
		),
		'req' => ['show_more' => 'true'],
	),
	'size' => array(
		'type' => 'select',
		'label' => __pl('button_size_label'),
		'list' => array(
			'pagelayer-btn-mini' => __pl('mini'),
			'pagelayer-btn-small' => __pl('small'),
			'pagelayer-btn-large' => __pl('large'),
			'pagelayer-btn-extra-large' => __pl('extra_large'),
			'pagelayer-btn-double-large' => __pl('double_large'),
			'pagelayer-btn-custom' => __pl('custom'),
		),
		'req' => ['show_more' => 'true'],
	),
	'btn_custom_size' => array(
		'type' => 'dimension',
		'label' => __pl('btn_custom_size'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-more.pagelayer-btn-holder' => 'padding: {{val[0]}}px {{val[1]}}px;'],
		'req' => array(
			'size' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
	),
	'btn_hover' => array(
		'type' => 'radio',
		'label' => __pl('state'),
		'default' => '',
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		),
		'req' => array(
			'btn_type' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
	),
	'btn_bg_color' => array(
		'type' => 'color',
		'label' => __pl('btn_bg_color_label'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'background-color: {{val}};'],
		'req' => array(
			'btn_type' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
		'show' => array(
			'btn_hover' => ''
		),
	),
	'more_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-more' => 'color:{{val}};'],
		'req' => array(
			'btn_type' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
		'show' => array(
			'btn_hover' => ''
		),
	),
	'btn_hover_delay' => array(
		'type' => 'spinner',
		'label' => __pl('btn_hover_delay_label'),
		'desc' => __pl('btn_hover_delay_desc'),
		'min' => 0,
		'step' => 100,
		'max' => 5000,
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
		'show' => array(
			'btn_hover' => 'hover'
		),
		'req' => ['show_more' => 'true'],
	),
	'btn_bg_color_hover' => array(
		'type' => 'color',
		'label' => __pl('btn_bg_color_hover_label'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'background-color: {{val}};'],
		'req' => array(
			'btn_type' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
		'show' => array(
			'btn_hover' => 'hover'
		),
	),
	'more_color_hover' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-wposts-more:hover' => 'color:{{val}};'],
		'req' => array(
			'btn_type' => 'pagelayer-btn-custom',
			'show_more' => 'true',
		),
		'show' => array(
			'btn_hover' => 'hover'
		),
	),
];

// Post More style
$pagelayer_btn_border_style = [
	'btn_bor_hover' => array(
		'type' => 'radio',
		'label' => __pl('state'),
		'default' => '',
		//'no_val' => 1,// Dont set any value to element
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		)
	),	
	'btn_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'border-style: {{val}}'],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'btn_bor_hover' => ''
		)
	),
	'btn_border_color' => array(
		'type' => 'color',
		'label' => __pl('border_color_label'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'border-color: {{val}};'],
		'req' => array(
			'!btn_border_type' => ''
		),
		'show' => array(
			'btn_bor_hover' => ''
		),
	),
	'btn_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
		'req' => [
			'!btn_border_type' => ''
		],
		'show' => array(
			'btn_bor_hover' => ''
		),
	),
	'btn_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!btn_border_type' => ''
		),
		'show' => array(
			'btn_bor_hover' => ''
		),
	),
	'btn_border_type_hover' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-style: {{val}}'],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
		'show' => array(
			'btn_bor_hover' => 'hover'
		)
	),
	'btn_border_color_hover' => array(
		'type' => 'color',
		'label' => __pl('border_color_hover_label'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-color: {{val}};'],
		'req' => array(
			'!btn_border_type_hover' => ''
		),
		'show' => array(
			'btn_bor_hover' => 'hover'
		),
	),
	'btn_border_width_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_width_hover'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
		'req' => [
			'!btn_border_type_hover' => ''
		],
		'show' => array(
			'btn_bor_hover' => 'hover'
		),
	),
	'btn_border_radius_hover' => array(
		'type' => 'padding',
		'label' => __pl('border_radius_hover'),
		'screen' => 1,
		'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
		'req' => array(
			'!btn_border_type_hover' => ''
		),
		'show' => array(
			'btn_bor_hover' => 'hover'
		),
	),
];

// Archives Post title
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_archive_title', array(
		'name' => __pl('archive_title'),
		'group' => 'archive',
		'html' => '<div class="pagelayer-archive-title">'. pagelayer_get_the_title() .'</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => ['{{element}} .pagelayer-archive-title' => 'text-align: {{val}}'],
			),
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-archive-title' => 'color:{{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-archive-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		)
	)
);

// Archive Posts shows the posts as per the QUERY of the current page
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_archive_posts', array(
		'name' => __pl('archive_posts'),
		'group' => 'archive',
		'html' => '{{pagelayer_pagination_top}}
		<div class="pagelayer-posts-container">{{pagelayer_archive_posts}}</div>
		{{pagelayer_pagination_bottom}}
		<div if="{{infinite_types}}" class="pagelayer_load_button" data-text={{infinite_final}}>
			<a class="pagelayer-btn-holder pagelayer-btn-load pagelayer-ele-link {{infinite_btn_type}} {{infinite_btn_size}} {{load_btn_icon_position}}">
				<i if="{{load_btn_icon}}" class="{{load_btn_icon}} pagelayer-btn-load-icon"></i>
				<span if="{{infinite_text}}" class="pagelayer-btn-load-text" >{{infinite_text}}</span>
				<i if="{{load_btn_icon}}" class="{{load_btn_icon}} pagelayer-btn-load-icon"></i>
			</a>
			<div class="pagelayer-loader-holder" >
				<i class="fa fa-spinner fa-spin fa-3x fa-fw" aria-hidden="true"></i>
			</div>
		</div>',
		'params' => $pagelayer_posts_options,
		'thumb_style' => $pagelayer_thumb_style,
		'title_style' => $pagelayer_title_style,
		'meta_options' => $pagelayer_meta_style,
		'content_style' => $pagelayer_content_style,
		'more_style' => $pagelayer_more_style,
		'infinite' => $pagelayer_infinite_style,
		'paginate_links' => array(
			'pagination' => array(
				'type' => 'select',	
				'label' => __pl('pagination'),
				'default' => 'number_prev_next',
				'list' => array(
					'' => __pl('none'),
					'number' => __pl('number'),
					'number_prev_next' => __pl('number_prev_next'),
				),
			),
			'pagination_on' => array(
				'type' => 'select',	
				'label' => __pl('pagination_on'),
				'list' => array(
					'' => __pl('bottom'),
					'top' => __pl('top'),
				),
				'req' => ['!pagination' => '']
			),
			'pagi_prev_text' => array(
				'type' => 'text',	
				'label' => __pl('prev_text'),
				'default' => 'Previous',
				'req' => ['!pagination' => ['', 'number']]
			),
			'pagi_next_text' => array(
				'type' => 'text',	
				'label' => __pl('next_text'),
				'default' => 'Next',
				'req' => ['!pagination' => ['', 'number']]
			),
			'pagi_end_size' => array(
				'type' => 'spinner',	
				'label' => __pl('pagi_end_size'),
				'default' => 1,
				'req' => ['!pagination' => '']
			),
			'pagi_mid_size' => array(
				'type' => 'spinner',	
				'label' => __pl('pagi_mid_size'),
				'default' => 2,
				'req' => ['!pagination' => '']
			),
			'before_page_number' => array(
				'type' => 'text',	
				'label' => __pl('before_page_number'),
				'req' => ['!pagination' => '']
			),
			'after_page_number' => array(
				'type' => 'text',	
				'label' => __pl('after_page_number'),
				'req' => ['!pagination' => '']
			),
		),
		'paginate_links_style' => array(
			'pagi_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-pagination' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
				'req' => ['!pagination' => '']
			),
			'pagi_align' => array(
				'type' => 'radio',	
				'label' => __pl('alignment'),
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-pagination' => 'text-align:{{val}}'],
				'req' => ['!pagination' => '']
			),
			'pagi_colors' => array(
				'type' => 'radio',	
				'label' => __pl('colors'),
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
					'active' => __pl('active'),
				),
				'req' => ['!pagination' => '']
			),
			'pagi_color' => array(
				'type' => 'color',	
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-pagination a.page-numbers' => 'color:{{val}}'],
				'show' => [ 'pagi_colors' => 'normal'],
				'req' => ['!pagination' => '']
			),
			'pagi_hover_color' => array(
				'type' => 'color',	
				'label' => __pl('current_color'),
				'css' => ['{{element}} .pagelayer-pagination a.page-numbers:hover' => 'color:{{val}}'],
				'show' => [ 'pagi_colors' => 'hover'],
				'req' => ['!pagination' => '']
			),
			'pagi_current_color' => array(
				'type' => 'color',	
				'label' => __pl('current_color'),
				'css' => ['{{element}} .pagelayer-pagination .current' => 'color:{{val}}'],
				'show' => [ 'pagi_colors' => 'active']
			),
			'pagi_space_between' => array(
				'type' => 'slider',	
				'label' => __pl('space_between'),
				'css' => ['{{element}} .pagelayer-pagination .page-numbers:not(:last-child)' => 'margin-right:{{val}}px'],
				'req' => ['!pagination' => '']
			),
			'pagi_padding' => array(
				'type' => 'padding',	
				'label' => __pl('padding'),
				'css' => ['{{element}} .pagelayer-pagination' => 'padding:{{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!pagination' => '']
			),
		),
		'styles' => array(
			'thumb_style' => __pl('thumb_style'),
			'title_style' => __pl('title_style'),
			'meta_options' => __pl('meta_options'),
			'content_style' => __pl('content_style'),
			'more_style' => __pl('more_style'),
			'paginate_links' => __pl('paginate_links'),
			'paginate_links_style' => __pl('paginate_links_style'),
			'infinite' => __pl('infinite_scroll'),
		),
	)
);

// Site Title
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_wp_title', array(
		'name' => __pl('Site Title'),
		'group' => 'wordpress',
		'html' => '<div class="pagelayer-wp-title-content">
			<div class="pagelayer-wp-title-section">
				<a href="'.get_site_url().'" class="pagelayer-wp-title-link pagelayer-ele-link">
					<img if="{{site_logo}}" class="pagelayer-img pagelayer-wp-title-img" src="{{func_image}}" title="{{{logo_img-title}}}" alt="{{{logo_img-alt}}}"/>
					<div class="pagelayer-wp-title-holder">
						<div class="pagelayer-wp-title-heading">'.get_bloginfo( 'name' ).'</div>
						<div if="{{site_desc}}" class="pagelayer-wp-title-desc">'.get_bloginfo( 'description' ).'</div>
					</div>
				</a>
			</div>			
		<div>',
		'params' => array(
			'site_title_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-heading' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'site_title_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),				
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-heading' => 'color:{{val}};'],
				'show' => ['!site_title_state' => 'hover'],
			),
			'title_color_hover' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => ['{{element}} .pagelayer-wp-title-heading:hover' => 'color:{{val}};'],
				'show' => ['site_title_state' => 'hover'],
			),
			'title_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('service_icon_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'css' => ['{{element}} .pagelayer-wp-title-heading' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => ['site_title_state' => 'hover'],
			),
			'text-align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-wp-title-heading' => 'text-align:{{val}};'],
			),
			'title_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-heading' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
			'disable_title' => array(
				'type' => 'checkbox',
				'label' => __pl('disable_title'),
				'desc' => __pl('disable_title_exp'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-holder' => 'display: none;'],
				'req' => ['site_logo' => 'true']
			),
		),
		'site_description' => array(
			'site_desc' => array(
				'type' => 'checkbox',
				'label' => __pl('site_desc'),
				'np' => 1,
			),
			'site_desc_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-wp-title-desc' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['site_desc' => 'true']
			),
			'site_desc_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['site_desc' => 'true']
			),				
			'desc_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => ['{{element}} .pagelayer-wp-title-desc' => 'color:{{val}};'],
				'show' => ['site_desc_state' => 'normal'],
				'req' => ['site_desc' => 'true']
			),
			'desc_color_hover' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => ['{{element}} .pagelayer-wp-title-desc:hover' => 'color:{{val}};'],
				'show' => ['site_desc_state' => 'hover'],
				'req' => ['site_desc' => 'true']
			),
			'desc_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('service_icon_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'css' => ['{{element}} .pagelayer-wp-title-desc' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => ['site_desc_state' => 'hover'],
				'req' => ['site_desc' => 'true']
			),
			'desc_text_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-wp-title-desc' => 'text-align:{{val}};'],
				'req' => ['site_desc' => 'true']
			),
			'desc_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-desc' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['site_desc' => 'true']
			),
		),
		'logo_style' => array(
			'site_logo' => array(
				'type' => 'checkbox',
				'label' => __pl('site_logo'),
				'np' => 1,
				//'desc' => __pl('site_logo_desc'),
			),
			'logo_img_type' => array(
				'type' => 'select',
				'label' => __pl('logo_img_type'),
				'np' => 1,
				'list' => array(
					'' => __pl('default_logo'),
					'custom-logo' => __pl('custom_logo'),
				),
				'req' => array(
					'site_logo' => 'true'
				)
			),
			'logo_img' => array(
				'type' => 'image',
				'label' => __pl('logo_select'),
				'np' => 1,
				'req' => array(
					'site_logo' => 'true',
					'logo_img_type' => 'custom-logo',
				)
			),
			'logo_img_size' => array(
				'type' => 'radio',
				'label' => __pl('logo_size'),
				'default' => 'full',
				'list' => array(
					'full' => __pl('full'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom'),
				),
				'req' => array(
					'site_logo' => 'true'
				)
			),
			'logo_img_custom_size' => array(
				'type' => 'slider',
				'label' => __pl('logo_custom_size'),
				'min' => 10,
				'max' => 100,
				'default' => 20,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-title-img' => 'width:{{val}}%; height: auto;'],
				'req' => array(
					'logo_img_size' => 'custom',
					'site_logo' => 'true'
				)
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'left',
				'list' => array(
					'left' => __pl('left'),
					'top' => __pl('top'),
					'right' => __pl('right')
				),
				'addClass' => ['{{element}} .pagelayer-wp-title-link' => 'pagelayer-wp-title-align-{{val}}'],
				'req' => array(
					'site_logo' => 'true'
				)
			),
			'vertical_align' => array(
				'type' => 'radio',
				'label' => __pl('vertical_alignment'),
				'default' => 'middle',
				'list' => array(
					'top' => __pl('top'),
					'middle' => __pl('middle'),
					'bottom' => __pl('bottom')
				),
				'addClass' => ['{{element}} .pagelayer-wp-title-link' => 'pagelayer-wp-title-vertical-{{val}}'],
				'req' => ['site_logo' => 'true',
							'!align' => 'top']	
			),	
		),
		'styles' => [
			'site_description' => __pl('site_desc'),			
			'logo_style' => __pl('logo_style'),			
		]
	)
);

// Copyright
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_copyright', array(
		'name' => __pl('copyright'),
		'group' => 'other',
		'icon' => 'fa fa-copyright',
		'html' => '<div class="pagelayer-copyright">
			<a href="'.home_url().'">
				{{copyright_text}}
			</a>
		</div>',
		'params' => array(
			'copyright_text' => array(
				'type' => 'textarea',
				'label' => __pl('text'),
				'default' => pagelayer_get_option('pagelayer-copyright')
			),
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-copyright *, {{element}} .pagelayer-copyright' => 'color:{{val}}']
			),
			'typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-copyright *, {{element}} .pagelayer-copyright' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => ['{{element}} .pagelayer-copyright' => 'text-align: {{val}}'],
			),
		)
	)
);

// Primary Menu
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_wp_menu', array(
		'name' => __pl('primary_menu'),
		'group' => 'wordpress',
		'html' => '<div class="pagelayer-wp-menu-holder" data-layout="{{layout}}" data-submenu_ind="{{submenu_ind}}" data-drop_breakpoint="{{drop_breakpoint}}">
			<div class="pagelayer-primary-menu-bar"><i class="{{menu_toggle_icon}}"></i></div>
			<div class="pagelayer-wp-menu-container pagelayer-menu-type-{{layout}} pagelayer-menu-hover-{{pointer}} {{m_animation}} {{slide_style}}" data-align="{{align}}">
				<div class="pagelayer-wp_menu-close"><i class="fas fa-times"></i></div>
				{{nav_menu}}
			</div>
		</div>',
		'params' => array(
			'nav_list' => array(// Never use the same name as we are replacing in IMPORT
				'type' => 'menus',
				'label' => __pl('select_menu'),
				'np' => 1,
				'default' =>  pagelayer_get_menu_list(true),
				'list' => pagelayer_get_menu_list(),
			),
		),
		'menu_style' => [
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'default' => 'left',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-wp_menu-ul' => 'text-align:{{val}};'],
			),
			'layout' => array(
				'type' => 'select',
				'label' => __pl('layout'),
				'default' => 'horizontal',
				'list' => array(
					'horizontal' => __pl('horizontal'),
					'vertical' => __pl('vertical'),
					'dropdown' => __pl('dropdown'),
				),
			),
			'drop_breakpoint' => array(
				'type' => 'select',
				'label' => __pl('drop_breakpoint'),
				'np' => 1,
				'list' => array(
					'none' => __pl('none'),
					'mobile' => __pl('mobile'),
					'tablet' => __pl('tablet'),
				),
				'req' => [ '!layout' => 'dropdown']
			),
			'pointer' => array(
				'type' => 'select',
				'label' => __pl('pointer'),
				'default' => 'underline',
				'list' => array(
					'' => __pl('none'),
					'underline' => __pl('underline'),
					'overline' => __pl('overline'),
					'doubleline' => __pl('double_line'),
					'framed' => __pl('Framed'),
					'background' => __pl('bg_color'),
					'text' => __pl('text'),
				),
			),
			'm_animation' => array(
				'type' => 'select',
				'label' => __pl('animation'),
				'default' => 'slide',
				'list' => array(
					'none' => __pl('none'),
					'fade' => __pl('fade'),
					'slide' => __pl('slide'),
					'grow' => __pl('Grow'),
					'dropin' => __pl('drop_in'),
					'dropout' => __pl('Drop_out'),
				),
			),
			'list_style' => array(
				'type' => 'select',
				'label' => __pl('list_style'),
				'np' => 1,
				'default' => 'none',
				'list' => array(
					'none' => __pl('none'),
					'circle' => __pl('list_list_type_circle'),
					'decimal' => __pl('decimal'),
					'square' => __pl('list_list_type_square'),
					'disc' => __pl('list_list_type_disc'),
					'inherit' => __pl('inherit'),
					'upper-roman' => __pl('upper_roman'),
					'upper-alpha' => __pl('upper_alpha'),
					'lower-roman' => __pl('lower_roman'),
					'lower-alpha' => __pl('lower_alpha'),
				),
				'css' => ['{{element}} .pagelayer-wp-menu-container li.menu-item' => 'list-style: {{val}};']
			),
			'submenu_ind' => array(
				'type' => 'select',
				'label' => __pl('sbmenu_indicator'),
				'np' => 1,
				'default' => 'caret-down',
				'list' => array(
					'' => __pl('none'),
					'caret-down' => __pl('caret_down'),
					'chevron-down' => __pl('chevron'),
					'angle-down' => __pl('angle'),
					'plus' => __pl('Plus'),
					'arrow-down' => __pl('arrow_down'),
				),
			),
			'submenu_anim' => array(
				'type' => 'select',
				'label' => __pl('submenu_anim'),
				'np' => 1,
				'list' => array(
					'' => __pl('none'),
					'pulse' => __pl('Pulse'),
					'fade' => __pl('fade'),
					'fadeindown' => __pl('fadeindown'),
					'fadeinup' => __pl('fadeinup'),
					'slideindown' => __pl('slideindown'),
					'slideinup' => __pl('slideinup'),
					'zoomin' => __pl('zoomin'),
					'flip' => __pl('flip'),
				),
				'css' => ['{{element}} .pagelayer-active-sub-menu.pagelayer-mega-menu-item > .pagelayer-mega-menu,
				:not(.pagelayer-ele-wrap) > {{element}} .pagelayer-menu-type-horizontal .pagelayer-mega-menu-item:hover > .pagelayer-mega-menu,
				{{element}} .pagelayer-active-sub-menu:not(.pagelayer-mega-menu-item) > ul.sub-menu,
				{{element}} .pagelayer-menu-type-horizontal .menu-item-has-children:not(.pagelayer-mega-menu-item, .pagelayer-mega-column-item .sub-menu li):hover > ul.sub-menu,
				:not(.pagelayer-ele-wrap) > .pagelayer-wp_menu .pagelayer-menu-type-vertical[class*="pagelayer-submenu-position-"] .pagelayer-mega-menu-item:hover > .pagelayer-mega-menu,
				{{element}} .pagelayer-menu-type-vertical[class*="pagelayer-submenu-position-"] .menu-item-has-children:not(.pagelayer-mega-menu-item, .pagelayer-mega-column-item .sub-menu li):hover > ul.sub-menu' => 'animation-name: pagelayer-submenu-{{val}};animation-duration: 300ms;animation-timing-function: linear; animation-iteration-count: 1;'],
			),
			'menu_colors' => array(
				'type' => 'radio',
				'label' => __pl('Background'),
				'np' => 1,
				//'no_val' => 1,// Dont set any value to element
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
					'active' => __pl('active'),
				],
			),
			'menu_color' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li a:first-child' => 'color: {{val}};'],
				'show' => ['menu_colors' => ''],
				'screen' => 1
			],
			'menu_bg_color' => [
				'type' => 'color',
				'label' => __pl('p_bg_color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li' => 'background-color: {{val}};'],
				'show' => ['menu_colors' => ''],
				'screen' => 1
			],
			'menu_color_hover' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li>a:hover' => 'color: {{val}};',
				'{{element}} .pagelayer-wp_menu-ul>li.pagelayer-active-sub-menu>a:hover' => 'color: {{val}};'],
				'show' => ['menu_colors' => 'hover'],
				'screen' => 1
			],
			'menu_bg_color_hover' => [
				'type' => 'color',
				'label' => __pl('p_bg_color'),
				'np' => 1,
				'default' => '#00ccff',
				'css' => ['{{element}} .pagelayer-menu-hover-background .pagelayer-wp_menu-ul>li:hover' => 'background-color: {{val}};','{{element}} .pagelayer-wp_menu-ul>li>a:hover:before' => 'background-color: {{val}};border-color:{{val}}',
				'{{element}} .pagelayer-wp_menu-ul>li>a:hover:after' => 'background-color: {{val}};border-color:{{val}}',
				'{{element}} .pagelayer-wp_menu-ul>li.pagelayer-active-sub-menu' => 'background-color: {{val}};'],
				'show' => ['menu_colors' => 'hover'],
				'screen' => 1
			],
			'menu_color_active' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li.current-menu-item>a' => 'color: {{val}};'],
				'show' => ['menu_colors' => 'active'],
				'screen' => 1
			],
			'menu_bg_color_active' => [
				'type' => 'color',
				'label' => __pl('p_bg_color'),
				'np' => 1,
				'default' => '#00ccff',
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li.current-menu-item' => 'background-color: {{val}};'],
				'show' => ['menu_colors' => 'active'],
				'screen' => 1
			],
			'menu_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul li.menu-item > a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'menu_pointer_height' => [
				'type' => 'slider',
				'label' => __pl('pointer_height'),
				'screen' => 1,
				'min' => 1,
				'max' => 50,
				'css' => ['{{element}} .pagelayer-menu-hover-underline:not(.none) .pagelayer-wp_menu-ul>li>a:before, {{element}} .pagelayer-menu-hover-doubleline:not(.none) .pagelayer-wp_menu-ul>li>a:before, {{element}} .pagelayer-menu-hover-doubleline:not(.none) .pagelayer-wp_menu-ul>li>a:after, {{element}} .pagelayer-menu-hover-overline:not(.none) .pagelayer-wp_menu-ul>li>a:before' => 'height:{{val}}px;',
				'{{element}} .pagelayer-menu-hover-framed .pagelayer-wp_menu-ul>li>a:hover:before' => 'border-width: {{val}}px'],
				'show' => ['pointer' => ['underline', 'overline', 'doubleline', 'framed']],
			],
			'horizontal_padding' => [
				'type' => 'slider',
				'label' => __pl('horizontal_padding'),
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li>a' => 'padding-left: {{val}}px;padding-right: {{val}}px;'],
			],
			'vertical_padding' => [
				'type' => 'slider',
				'label' => __pl('vertical_padding'),
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-ul>li>a' => 'padding-top: {{val}}px;padding-bottom	: {{val}}px;'],
			],
		],
		'submenu_style' => [
			'submenu_align' => array(
				'type' => 'radio',
				'label' => __pl('item_alignment'),
				'np' => 1,
				'default' => 'left',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} ul.sub-menu li>a' => 'justify-content:{{val}} !important;'],
			),
			'submenu_position' => [
				'type' => 'radio',
				'label' => __pl('position'),
				'default' => 'left',
				'list' => array(
					'left' => __pl('left'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-menu-type-horizontal .sub-menu' => '{{val}}:0px;', '{{element}} .pagelayer-menu-type-horizontal .sub-menu .sub-menu' => 'left:unset;{{val}}:100% !important;top:0px;'],
				'req' => ['layout' => 'horizontal'],
			],
			'submenu_v_position' => [
				'type' => 'radio',
				'label' => __pl('position'),
				'list' => array(
					'' => __pl('Default'),
					'left' => __pl('left'),
					'right' => __pl('right'),
				),
				'addClass' => ['{{element}} .pagelayer-menu-type-vertical' => 'pagelayer-submenu-position-{{val}}'],
				'req' => ['layout' => 'vertical'],
			],
			'submenu_colors' => array(
				'type' => 'radio',
				'label' => __pl('Background'),
				'np' => 1,
				//'no_val' => 1,// Dont set any value to element
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
					'active' => __pl('active'),
				],
			),
			'submenu_color' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu>li a' => 'color: {{val}};'],
				'show' => ['submenu_colors' => ''],
				'screen' => 1
			],
			'submenu_bg_color' => [
				'type' => 'color',
				'label' => __pl('bg_color'),
				'np' => 1,
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu' => 'background-color: {{val}};'],
				'show' => ['submenu_colors' => ''],
				'screen' => 1
			],
			'submenu_color_hover' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu>li a:hover' => 'color: {{val}};', '{{element}} .pagelayer-wp-menu-container ul.sub-menu>li.pagelayer-active-sub-menu a:hover' => 'color: {{val}};'],
				'show' => ['submenu_colors' => 'hover'],
				'screen' => 1
			],
			'submenu_bg_color_hover' => [
				'type' => 'color',
				'label' => __pl('bg_color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu>li:hover' => 'background-color: {{val}};', '{{element}} .pagelayer-wp-menu-container ul.sub-menu>li.pagelayer-active-sub-menu' => 'background-color: {{val}};'],
				'show' => ['submenu_colors' => 'hover'],
				'screen' => 1
			],
			'submenu_color_active' => [
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu>li.current-menu-item a' => 'color: {{val}};'],
				'show' => ['submenu_colors' => 'active'],
				'screen' => 1
			],
			'submenu_bg_color_active' => [
				'type' => 'color',
				'label' => __pl('bg_color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu>li.current-menu-item' => 'background-color: {{val}};'],
				'show' => ['submenu_colors' => 'active'],
				'screen' => 1
			],
			'submenu_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu li a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;']
			),
			'submenu_horizontal_padding' => [
				'type' => 'slider',
				'label' => __pl('horizontal_padding'),
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu li a' => 'padding-left: {{val}}px;padding-right: {{val}}px;'],
			],
			'submenu_vertical_padding' => [
				'type' => 'slider',
				'label' => __pl('vertical_padding'),
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container ul.sub-menu li a' => 'padding-top: {{val}}px;padding-bottom	: {{val}}px;'],
			],
			'submenu_left_margin' => [
				'type' => 'slider',
				'label' => __pl('left_margin'),
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp-menu-container .sub-menu a' => 'margin-left: {{val}}px;', '{{element}} .pagelayer-wp-menu-container .sub-menu .sub-menu a' => 'margin-left: calc(2 * {{val}}px);'],
			],
			'submenu_index' => [
				'type' => 'slider',
				'label' => __pl('z-index'),
				'css' => ['{{element}} .menu-item .sub-menu, {{element}} .menu-item .pagelayer-mega-menu' => 'z-index:{{val}}'],
			],
		],
		'menu_toggle' => [
			'menu_toggle_icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
				'default' => 'fas fa-bars',
				'addAttr' => ['{{element}} .pagelayer-primary-menu-bar i' => 'data-icon="{{menu_toggle_icon}}"'],
				'desc' => __pl('menu_toggle_icon_desc')
			),
			'menu_toggle_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-primary-menu-bar' => 'text-align:{{val}}'],
			),
			'menu_toggle_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-primary-menu-bar i' => 'color:{{val}}'],
			),
			'menu_toggle_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'np' => 1,
				'default' => '#0986c050',
				'css' => ['{{element}} .pagelayer-primary-menu-bar i' => 'background-color:{{val}}'],
			),
			'menu_toggle_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'default' => 30,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-primary-menu-bar i' => 'font-size:{{val}}px'],
			),
			'menu_toggle_padding' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'screen' => 1,
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-primary-menu-bar i' => 'padding:{{val[0]}} {{val[1]}};'],
			),
		],
		'dropdown_style' => [
			'slide_style' => array(
				'type' => 'select',
				'label' => __pl('slide_style'),
				'default' => 'pagelayer-wp_menu-right',
				'list' => array(
					'pagelayer-wp_menu-down' => __pl('slide-down'),
					'pagelayer-wp_menu-right' => __pl('slide-right'),
					'pagelayer-wp_menu-left' => __pl('slide-left'),
					'pagelayer-wp_menu-full' => __pl('full_screen')
				),
				'req' => ['!drop_breakpoint' => 'none']
			),			
			'dropdown_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'screen' => 1,
				'list' => array(
					'flex-start' => __pl('left'),
					'center' => __pl('center'),
					'flex-end' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-menu-type-dropdown .pagelayer-wp_menu-ul > li > a' => 'justify-content: {{val}};'],
			),
			'menu_width' => [
				'type' => 'spinner',
				'label' => __pl('width'),
				'np' => 1,
				'default' => 30,
				'min' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-type-dropdown' => 'width:{{val}}%;'],
				'req' => [
					'!drop_breakpoint' => 'none',
					'!slide_style' => ['pagelayer-wp_menu-full','pagelayer-wp_menu-down']
				]
			],
			'menu_down_width' => [
				'type' => 'spinner',
				'label' => __pl('width'),
				'default' => 100,
				'min' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-type-dropdown' => 'width:{{val}}%;'],
				'req' => [
					'!drop_breakpoint' => 'none',
					'slide_style' => 'pagelayer-wp_menu-down'
				]
			],
			'menu_items_width' => [
				'type' => 'spinner',
				'label' => __pl('menu_items_width'),
				'default' => 100,
				'min' => 1,
				'max' => 100,
				'css' => ['{{element}} .pagelayer-menu-type-dropdown .pagelayer-wp_menu-ul' => 'width:{{val}}%;'],
				'req' => [
					'!drop_breakpoint' => 'none',
					'!slide_style' => ['pagelayer-wp_menu-down']
				]
			],
			'menu_posx' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_pos'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'css' => ['{{element}} .pagelayer-menu-type-dropdown .pagelayer-wp_menu-ul' => 'left: {{val}}%;'],
				'req' => [
					'!drop_breakpoint' => 'none',
					'!slide_style' => 'pagelayer-wp_menu-down'
				]
			),
			'menu_posy' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 8,
				'css' => ['{{element}} .pagelayer-menu-type-dropdown .pagelayer-wp_menu-ul' => 'top: {{val}}%; transform: translateY(-{{val}}%);'],
				'req' => [
					'!drop_breakpoint' => 'none',
					'!slide_style' => 'pagelayer-wp_menu-down'
				]
			),
			'menu_bg' => array(
				'type' => 'radio',
				'label' => __pl('col_bg_styles'),
				'np' => 1,
				'default' => 'color',
				'list' => array(
					'' => __pl('none'),
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
				),
				'req' => ['!drop_breakpoint' => 'none']
			),
			'menu_items_bg' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-menu-type-dropdown' => 'background-color:{{val}}'],
				'req' => [
					'menu_bg' => 'color',
					'!drop_breakpoint' => 'none'
				],
			),
			'menu_items_gradient' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',
				'css' => ['{{element}} .pagelayer-menu-type-dropdown' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
				'req' => [
					'menu_bg' => 'gradient',
					'!drop_breakpoint' => 'none'
				],
			),
		],
		'close_style' =>[
			'close_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'np' => 1,
				'default' => 25,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'font-size:{{val}}px'],
				'req' => ['!drop_breakpoint' => 'none'],
			),
			'close_padding' => array(
				'type' => 'slider',
				'label' => __pl('padding'),
				'default' => 8,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'padding:{{val}}px'],
				'req' => ['!drop_breakpoint' => 'none'],
			),
			'close_pos_x' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_pos'),
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'left:{{val}}%;'],
				'req' => ['!drop_breakpoint' => 'none'],
			),
			'close_pos_y' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'top:{{val}}%;'],
				'req' => ['!drop_breakpoint' => 'none'],
			),
			'close_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'close_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff68',
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'color:{{val}}'],
				'req' => ['!drop_breakpoint' => 'none'],
				'show' => ['close_state' => '']
			),
			'close_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#00000036',
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => 'background-color:{{val}}'],
				'req' => ['!drop_breakpoint' => 'none'],
				'show' => ['close_state' => '']
			),
			'close_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 600,
				'css' => ['{{element}} .pagelayer-wp_menu-close i' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => ['close_state' => 'hover']
			),
			'close_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-wp_menu-close i:hover' => 'color:{{val}}'],
				'req' => ['!drop_breakpoint' => 'none'],
				'show' => ['close_state' => 'hover']
			),
			'close_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-wp_menu-close i:hover' => 'background-color:{{val}}'],
				'req' => ['!drop_breakpoint' => 'none'],
				'show' => ['close_state' => 'hover']
			),
		],
		'styles' => [
			'menu_style' => __pl('menu_style'),
			'submenu_style' => __pl('submenu_style'),
			'menu_toggle' => __pl('toggle_style'),
			'dropdown_style' => __pl('dropdown_style'),
			'close_style' => __pl('close_style'),
		]
	)
);

// Menu items handler
// Created this shortcode only use for menus property
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_nav_menu_item', array(
		'name' => __pl('Menu Items'),
		'group' => 'other',
		'not_visible' => 1,
		'hide_active' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_wp_menu'],
		'icon' => 'far fa-minus-square',
		'holder' => '.pagelayer-menu-item-holder',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'element',
		],
		'html' => '<div class="pagelayer-menu-item-holder"></div>',
		'params' => array(
			'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
			),
			'menu_type' => array(
				'type' => 'select',
				'label' => __pl('menu_type'),
				'desc' => __pl('menu_type_desc'),
				'list' => array(
					'' => __pl('flyout'),
					'mega' => __pl('mega_menu'),
					'column' => __pl('column_menu'),
				),
				'req' => ['menu_item_parent' => '0']
			),
			'element' => array(
				'type' => 'group',
				'label' => __pl('Inner Row'),
				'sc' => PAGELAYER_SC_PREFIX.'_inner_row',
				'count' => 1,
				'item_label' => array(
					'default' => __pl('Inner Row'),
				),
				'text' => __pl('Add new row'),
				'req' => ['menu_type' => 'mega']
			),
			'columns' => array(
				'type' => 'select',
				'label' => __pl('columns_count'),
				'screen' => 1,
				'css' => ['.menu-item-{{ID}} > .sub-menu' => 'columns: {{val}}'],
				'list' => array(
					'' => __pl('default'),
					1 => '1',
					2 => '2',
					3 => '3',
					4 => '4',
					5 => '5',
					6 => '6',
					7=> '7',
					8 => '8',
					9 => '9',
					10 => '10'
				),
				'req' => ['menu_type' => 'column']
			),
			'col_gap' => array(
				'type' => 'slider',
				'label' => __pl('col_gap'),
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'css' => ['.menu-item-{{ID}} > .sub-menu' => 'column-gap: {{val}}px;'],
				'req' => ['menu_type' => 'column']
			),
			'mega_width' => array(
				'type' => 'select',
				'label' => __pl('mega_width'),
				'list' => array(
					'' => __pl('menu_container'),
					'row_container' => __pl('row_container'),
					'custom' => __pl('custom'),
				),
				'addAttr' => 'pagelayer-mega-width="{{mega_width}}"',
				'req' => ['!menu_type' => '']
			),
			'mega_custom_width' => array(
				'type' => 'spinner',
				'label' => __pl('mega_custom_width'),
				'default' => '800',
				'addAttr' => 'pagelayer-mega-custom-width="{{mega_custom_width}}"',
				'req' => ['mega_width' => 'custom', '!menu_type' => '']
			),
			'menu_icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
			),
		),
		'menu_setting' => array(
			'disable_link' => array(
				'type' => 'checkbox',
				'label' => __pl('disable_link'),
			),
			'hide_text' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_text'),
				'css' => ['.menu-item-{{ID}} > a .pagelayer-nav-menu-title' => 'display:none']
			),
			'icon_position' => array(
				'type' => 'select',
				'label' => __pl('icon_position'),
				'list' => array(
					'' => __pl('left'),
					'right' => __pl('right'),
				),
			),
		),
		'highlight' => array(
			'highlight_label' => array(
				'type' => 'text',
				'label' => __pl('highlight_label'),
			),
			'highlight_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.menu-item-{{ID}} > a .pagelayer-menu-highlight' => 'background:{{val}}']
			),
			'highlight_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.menu-item-{{ID}} > a .pagelayer-menu-highlight' => 'color:{{val}}']
			),
		),
		'styles' => array(
			'menu_setting' => __pl('menu_setting'),
			'highlight' => __pl('highlight_label'),
		),
	)	
);

// Breadcrumb
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_breadcrumb', array(
		'name' => __pl('breadcrumb'),
		'group' => 'other',
		'html' => '<span if="{{prefix}}" class="pagelayer-breadcrumb-prefix">{{prefix}}</span>
			<span class="pagelayer-breadcrumb-section">'.
			pagelayer_get_breadcrumb().
		'</span>',
		//'html' => yoast_breadcrumb( '<p id="breadcrumbs">','</p>' ).pagelayer_get_breadcrumb(),
		'params' => array(
			'home' => array(
				'type' => 'text',
				'label' => __pl('home_label'),
				'np' => 1,
				'default' => 'Home',
			),
			'breadcrumb_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-breadcrumb-section a' => 'color:{{val}};']
			),
			'breadcrumb_hover' => array(
				'type' => 'color',
				'label' => __pl('hovered_color'),
				'css' => ['{{element}} .pagelayer-breadcrumb-section a:hover' => 'color:{{val}};']
			),
			'cur_color' => array(
				'type' => 'color',
				'label' => __pl('cur_color'),
				'css' => ['{{element}} .pagelayer-breadcrumb-section' => 'color:{{val}};']
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-breadcrumb-section' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],			
			),
			'alignment' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'css' =>'text-align:{{val}};',
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
		),
		'prefix_style' => [
			'prefix' => array(
				'type' => 'text',
				'label' => __pl('breadcrumb_prefix'),
			),
			'search_prefix' => array(
				'type' => 'text',
				'label' => __pl('search_prefix'),
			),
			'404_prefix' => array(
				'type' => 'text',
				'label' => __pl('404_prefix'),
			),
			'prefix_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-breadcrumb-prefix' => 'color:{{val}};']
			),
			'prefix_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-breadcrumb-prefix' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],			
			),
		],
		'separator_style' => [
			'separator' => array(
				'type' => 'text',
				'label' => __pl('separator_style'),
				'default' => '&nbsp;&#187;&nbsp;',
			),
			'separator_color' => array(
				'type' => 'color',
				'label' => __pl('color'),				
				'np' => 1,
				'default' => '#333333',
				'css' => ['{{element}} .pagelayer-breadcrumb-sep' => 'color:{{val}};']
			),
		],
		'styles' => [
			'prefix_style' => __pl('prefix_style'),
			'separator_style' => __pl('separator_style'),
		]
	)
);

// Contact Form
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_contact', array(
		'name' => __pl('contact_form'),
		'group' => 'other',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-contact-holder',
		'html' => '<div class="pagelayer-contact-form-div pagelayer-contact-form-holder">
					<div class="pagelayer-message-box pagelayer-message-top"></div>
					<div if={{note}} class="pagelayer-contact-form-note">{{note}}</div>
					<form class="pagelayer-contact-form" id="{{form}}" name="{{name}}" onsubmit="return pagelayer_contact_submit(this, event)" method="POST">
						<div class="pagelayer-contact-holder">
						</div>
						<input type="hidden" name="cfa-pagelayer-id"/>
						<input if="{{con_post_id}}" type="hidden" name="cfa-post-id" value="{{con_post_id}}"/>
						<input if="{{contact_custom_templ}}" type="hidden" name="cfa-custom-template" value="{{contact_custom_templ}}"/>
						<input if="{{redirect_url}}" type="hidden" name="cfa-redirect" value="{{{redirect_url}}}"/>
						<div class="g-recaptcha pagelayer-recaptcha" data-sitekey="{{grecaptcha}}" if="{{grecaptcha_v2}}"></div>
						<input type="hidden" name="g-recaptcha-response" data-version="v3" class="pagelayer-g-recaptcha-v3-token" data-sitekey="{{grecaptcha}}" if="{{grecaptcha_v3}}"/>
						<div class="pagelayer-contact-submit-holder">
							<button if="{{submit}}" type="submit" form="{{form}}" class="pagelayer-contact-submit-btn pagelayer-btn-holder pagelayer-ele-link {{type}} {{size}} {{icon_position}}">
								<i class="fa fa-circle-o-notch fa-spin" style="display:none;margin-right:5px;"></i>
								<i if="{{icon}}" class="{{icon}} pagelayer-btn-icon pagelayer-cf-icon-left"></i>
								<span if="{{submit}}" class="pagelayer-btn-text">{{submit}}</span>
								<i if="{{icon}}" class="{{icon}} pagelayer-btn-icon pagelayer-cf-icon-right"></i>
							</button>
						</div>
					</form>
					<div class="pagelayer-message-box pagelayer-message-bottom"></div>
			</div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('Label'),
				'sc' => PAGELAYER_SC_PREFIX.'_contact_item',
				'item_label' => array(
					'default' => __pl('Label'),
					'param' => 'label_name'
				),
				'count' => 1,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('field_name'))),
			),
			'redirect_show' => array(
				'type' => 'checkbox',
				'label' => __pl('redirect_url'),
			),
			'redirect_url' => array(
				'type' => 'link',
				'label' => __pl('redirect_urllabel'),
				'desc' => __pl('redirect_urldesc'),
				'req' => array(
					'redirect_show' => 'true'
				)
			),
			'captcha' => array(
				'type' => 'checkbox',
				'label' => __pl('use_recaptcha'),
				'default' => '',
				'desc' => __pl('use_recaptcha_desc'),
			),
			'form' => array(
				'type' => 'text',
				'label' => __pl('form_id'),
				'desc' => __pl('form_id_desc'),
				'default' => 'contact-form',
				'np' => 1
			),
			'name' => array(
				'type' => 'text',
				'label' => __pl('form_name'),
				'default' => 'Contact Form',
				'desc' => __pl('form_name_desc'),
				'np' => 1
			),
			'form_position' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'default',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-contact-form' => 'text-align: {{val}}'],
			),
			'note' => array(
				'type' => 'text',
				'label' => __pl('note'),
				'edit' => '.pagelayer-contact-form-note',
			),
			'note_color' => array(
				'type' => 'color',
				'label' => __pl('note_color'),
				'css' => ['{{element}} .pagelayer-contact-form-note' => 'color:{{val}}'],
			),
		),
		'label_style' =>[
			'form_label_color' => array(
				'type' => 'color',
				'label' => __pl('label_color'),
				'default' => '',
				'show' => ['field_state' => ''],
				'css' => ['{{element}} label' => 'color: {{val}}'],
			),
			'label_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} label' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'space_label' => array(
				'type' => 'padding',
				'label' => __pl('space_between'),
				'default' => ',,10,',
				'screen' => 1,
				'css' => ['{{element}} label' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;'],
			),
			'form_placeholder_color' => array(
				'type' => 'color',
				'label' => __pl('placeholder_color'),
				'default' => '',
				'show' => ['field_state' => ''],
				'css' => ['{{element}} ::placeholder' => 'color: {{val}}'],
			),
			'placeholder_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} ::placeholder' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'input_style' => [
			'input_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'np' => 1,
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'form_input_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => [
					'{{element}} textarea, {{element}} input, {{element}} select, {{element}} date' => 'color: {{val}}'
				],
				'req' => array(
					'input_state' => 'normal'
				),
			),
			'form_input_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => [
					'{{element}} textarea, {{element}} input, {{element}} select, {{element}} date' => 'background-color: {{val}}',
				],
				'req' => array(
					'input_state' => 'normal',
				),
			),
			'input_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('input_hover_delay_label'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'css' => ['{{element}} textarea:hover, {{element}} input:hover, {{element}} select:hover, {{element}} date:hover' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'input_state' => 'hover'
				),
			),
			'form_input_color_hover' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => [
					'{{element}} textarea:hover, {{element}} input:hover, {{element}} select:hover, {{element}} date:hover' => 'color: {{val}}'
				],
				'req' => array(
					'input_state' => 'hover'
				),
			),
			'form_input_bg_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => [
					'{{element}} textarea:hover, {{element}} input:hover, {{element}} select:hover, {{element}} date:hover' => 'background-color: {{val}}'
				],
				'req' => array(
					'input_state' => 'hover'
				),
			),
			'input_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} select, {{element}} input,{{element}} textarea' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'input_height' => array(
				'type' => 'spinner',
				'label' => __pl('text_field_height'),
				'min' => 1,
				'max' => 1000,
				'step' => 1,
				'screen' => 1,
				'css' => [
					'{{element}} input, {{element}} select, {{element}} textarea'=> 'line-height: {{val}}px; min-height: {{val}}px',
				],
			),
			'input_padding' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'screen' => 1,
				'default' => '10,10',
				'css' => [
					'{{element}} input, {{element}} select, {{element}} textarea'=> 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[0]}}px; padding-left:{{val[1]}}px',
				],
			),
			/* 'input_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
			), */
		],
		'form_style' => [
			'field_state' => array(
				'type' => 'radio',
				'label' => '',
				'np' => 1,
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
					'focus' => __pl('focus'),
				),
			),
			'field_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => [
					'{{element}} input, {{element}} select, {{element}} textarea' => 'border-style: {{val}}',
					'{{element}} input[type="checkbox"] + label:before' => 'border-style: {{val}}'
				],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'field_state' => ''
				),
			),
			'field_border_color' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'default' => '#0986c0',
				'css' => [
					'{{element}} input, {{element}} select, {{element}} textarea' => 'border-color: {{val}};',
					'{{element}} input[type="checkbox"] + label:before' => 'border-color: {{val}};'
				],
				'req' => array(
					'!field_border_type' => ''
				),
				'show' => array(
					'field_state' => ''
				),
			),
			'field_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} input, {{element}} select, {{element}} textarea, {{element}} input[type="checkbox"] + label:before' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!field_border_type' => ''
				],
				'show' => array(
					'field_state' => ''
				),
			),
			'field_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} input, {{element}} select, {{element}} textarea' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!field_border_type' => ''
				),
				'show' => array(
					'field_state' => ''
				),
			),
			'field_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'screen' => 1,
				'css' => [
					'{{element}} input, {{element}} select, {{element}} textarea, {{element}} input[type="checkbox"] + label:before' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'
				],
				'show' => ['field_state' => ''],
			),
			'field_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('service_btn_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} input, {{element}} select, {{element}} textarea' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => array(
					'field_state' => 'hover'
				),
			),
			'field_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} input:hover, {{element}} select:hover, {{element}} textarea:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'field_state' => 'hover'
				),
			),
			'field_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'css' => ['{{element}} input:hover, {{element}} select:hover, {{element}} textarea:hover' => 'border-color: {{val}};'],
				'default' => '#0986c0',
				'req' => array(
					'!field_border_type_hover' => ''
				),
				'show' => array(
					'field_state' => 'hover'
				),
			),
			'field_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} input:hover, {{element}} select:hover, {{element}} textarea:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!field_border_type_hover' => ''
				],
				'show' => array(
					'field_state' => 'hover'
				),
			),
			'field_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} input:hover, {{element}} select:hover, {{element}} textarea:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!field_border_type_hover' => ''
				),
				'show' => array(
					'field_state' => 'hover'
				),
			),
			'field_shadow_hover' => array(
				'type' => 'box_shadow',
				'label' => __pl('text_shadow'),
				'screen' => 1,
				'css' => [
					'{{element}} input:hover, {{element}} select:hover, {{element}} textarea:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'
				],
				'show' => ['field_state' => 'hover'],
			),
			'field_border_type_focus' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} input:focus, {{element}} select:focus, {{element}} textarea:focus' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'field_state' => 'focus'
				),
			),
			'field_border_color_focus' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'css' => ['{{element}} input:focus, {{element}} select:focus, {{element}} textarea:focus' => 'border-color: {{val}};'],
				'default' => '#0986c0',
				'req' => array(
					'!field_border_type_focus' => ''
				),
				'show' => array(
					'field_state' => 'focus'
				),
			),
			'field_border_width_focus' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} input:focus, {{element}} select:focus, {{element}} textarea:focus' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!field_border_type_focus' => ''
				],
				'show' => array(
					'field_state' => 'focus'
				),
			),
			'field_border_radius_focus' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} input:focus, {{element}} select:focus, {{element}} textarea:focus' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!field_border_type_focus' => ''
				),
				'show' => array(
					'field_state' => 'focus'
				),
			),
			'field_shadow_focus' => array(
				'type' => 'box_shadow',
				'label' => __pl('text_shadow'),
				'screen' => 1,
				'css' => [
					'{{element}} input:focus, {{element}} select:focus, {{element}} textarea:focus' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'
				],
				'show' => ['field_state' => 'focus'],
			),
		],
		'radio_style' => [
			'form_box_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '',
				'css' => [
					'{{element}} input[type="radio"]:checked:before' => 'color: {{val}}', 
					'{{element}} input[type="checkbox"]:checked + label:before' => 'color: {{val}}'
				],
			),
			'form_box_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '',
				'css' => [
					'{{element}} input[type="radio"]:checked:before' => 'background-color: {{val}}', 
					'{{element}} input[type="checkbox"]:checked + label:before' => 'background-color: {{val}}'
				],
			),
			'inline_radio' => array(
				'type' => 'checkbox',
				'label' => __pl('inline'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-radcheck-holder' => 'display:flex; align-items:center;']
			),
			'radio_padding' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'screen' => 1,
				'default' => '10,10',
				'css' => [
					'{{element}} input[type="checkbox"] + label:before, {{element}} input[type="radio"]'=> 'height:{{val[0]}}px; min-height:{{val[0]}}px;  width:{{val[1]}}px;',
				],
			),
			'radio_spacing' => array(
				'type' => 'padding',
				'label' => __pl('space_around'),
				'screen' => 1,
				'css' => [
					'{{element}} .pagelayer-radcheck-holder>div'=> 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;',
				],
			),
		],
		'button_style' => [
			'hide_btn' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_btn'),	
			),
			'submit' => array(
				'type' => 'text',
				'label' => __pl('submit_button_label'),
				'default' => 'Submit',
				'edit' => '.pagelayer-btn-text',
				'req' => ['!hide_btn' => 'true'],
			),
			'btn_typo' => array(
				'type' => 'typography',
				'label' => __pl('quote_content_typo'),
				'css' => [
					'{{element}} .pagelayer-btn-text' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
					'{{element}} .pagelayer-btn-holder' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
				'req' => ['!hide_btn' => 'true'],
			),
			'stretch' => array(
				'type' => 'checkbox',
				'label' => __pl('stretch_button_label'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-contact-submit-btn' => 'width: 100%'],
				'req' => ['!hide_btn' => 'true'],
			),
			'btn_spacing' => array(
				'type' => 'padding',
				'label' => __pl('spacing'),
				'css' => ['{{element}} .pagelayer-contact-submit-btn' => 'margin-top:{{val[0]}}px; margin-right:{{val[1]}}px; margin-bottom:{{val[2]}}px; margin-left:{{val[3]}}px;'],
				'req' => [
					'!hide_btn' => 'true',
				]
			),
			'type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-default',
				//'addClass' => ['{{element}} .pagelayer-btn-holder' => '{{val}}'],
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
				'req' => ['!hide_btn' => 'true'],
			),
			'size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-small',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				),
				'req' => ['!hide_btn' => 'true'],
			),
			'btn_custom_size' => array(
				'type' => 'dimension',
				'label' => __pl('btn_custom_size'),
				'default' => '5,10',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[0]}}px; padding-left:{{val[1]}}px;'],
				'req' => array(
					'size' => 'pagelayer-btn-custom',
					'!hide_btn' => 'true'
				),
			),
			'contect_btn_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-contact-submit-holder' => 'text-align:{{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'req' => ['!hide_btn' => 'true'],
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'type' => 'pagelayer-btn-custom',
					'!hide_btn' => 'true'
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => '',
					'!hide_btn' => 'true'
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => '',
					'!hide_btn' => 'true'
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-btn-holder' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover',
					'!hide_btn' => 'true'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover',
					'!hide_btn' => 'true'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover',
					'!hide_btn' => 'true'
				),
			),
		],
		'icon_style' => [
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('service_box_font_icon_label'),
				'default' => '',
			),
			'icon_position' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'pagelayer-btn-icon-left',
				'list' => array(
					'pagelayer-btn-icon-left' => __pl('left'),
					'pagelayer-btn-icon-right' => __pl('right')
				),
				'req' => array(
					'!icon' => ''
				),
			),
			'icon_spacing' => array(
				'type' => 'slider',
				'label' => __pl('icon_spacing'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-icon' => 'padding: 0 {{val}}px;'],
				'req' => array(
					'!icon' => ''
				),
			),
		],
		'border_style' => [
			'btn_bor_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'np' => 1,
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),	
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
		],
		'message_style' => array(
			'show_msg_box' => array(
				'type' => 'checkbox',
				'label' => __pl('show_msg_box'),
				'desc' => __pl('show_msg_box_desc')
			),
			'message_pos' => array(
				'type' => 'radio',
				'label' => __pl('position'),
				'list' => array(
					'' => __pl('top'),
					'bottom' => __pl('bottom'),
				),
				'addClass' => 'pagelayer-message-box-{{val}}'
			),
			'msg_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'css' => ['{{element}} .pagelayer-cf-msg-suc, {{element}} .pagelayer-cf-msg-err' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;'],
				
			),
			'msg_margin' => array(
				'type' => 'padding',
				'label' => __pl('margin'),
				'css' => ['{{element}} .pagelayer-cf-msg-suc, {{element}} .pagelayer-cf-msg-err' => 'margin-top:{{val[0]}}px; margin-right:{{val[1]}}px; margin-bottom:{{val[2]}}px; margin-left:{{val[3]}}px;'],
			),
			'msg_type' => array(
				'type' => 'radio',
				'label' => __pl(' '),
				'list' => array(
					'success' => __pl('Success'),
					'failed' => __pl('failed')
				)
			),
			'msg_success_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-suc' => 'color: {{val}}'
				],
				'show' => array(
					'msg_type' => 'success'
				),
			),
			'msg_success_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-suc' => 'background-color: {{val}}',
				],
				'show' => array(
					'msg_type' => 'success'
				),
			),
			'succ_msg_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-suc' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'msg_type' => 'success'
				)
			),
			'succ_msg_border_color' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'default' => '#0986c0',
				'css' => [
					'{{element}} .pagelayer-cf-msg-suc' => 'border-color: {{val}};'
				],
				'req' => array(					
					'!succ_msg_border_type' => '' 
				),
				'show' => array(
					'msg_type' => 'success'
				),
			),
			'succ_msg_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cf-msg-suc' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => array(					
					'!succ_msg_border_type' => '' 
				),
				'show' => array(
					'msg_type' => 'success'
				),
			),
			'succ_msg_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cf-msg-suc' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(					
					'!succ_msg_border_type' => '' 
				),
				'show' => array(
					'msg_type' => 'success'
				),
			),
			
			'msg_failed_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-err' => 'color: {{val}}'
				],
				'show' => array(
					'msg_type' => 'failed'
				),
			),
			'msg_failed_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-err' => 'background-color: {{val}}',
				],
				'show' => array(
					'msg_type' => 'failed'
				),
			),
			'fail_msg_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => [
					'{{element}} .pagelayer-cf-msg-err' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'msg_type' => 'failed'
				),
			),
			'fail_msg_border_color' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'default' => '#0986c0',
				'css' => [
					'{{element}} .pagelayer-cf-msg-err' => 'border-color: {{val}};'
				],
				'req' => array(					
					'!fail_msg_border_type' => '' 
				),
				'show' => array(
					'msg_type' => 'failed'
				),
			),
			'fail_msg_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cf-msg-err' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => array(					
					'!fail_msg_border_type' => '' 
				),
				'show' => array(
					'msg_type' => 'failed'
				),
			),
			'fail_msg_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cf-msg-err' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!fail_msg_border_type' => ''],
				'show' => ['msg_type' => 'failed'],
			)
		),
		'mail_template' => array(
			'contact_custom_templ' => array(
				'type' => 'checkbox',
				'label' => __pl('custom_templ'),
			),
			'templ_modal' => array(
				'type' => 'modal',
				'label' => __pl('create_mail_templ'),
				'show_group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'to_email' => array(
				'type' => 'text',
				'label' => __pl('to_email'),
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'from_email' => array(
				'type' => 'text',
				'label' => __pl('from_email'),
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'cont_subject' => array(
				'type' => 'text',
				'label' => __pl('subject'),
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'cont_header' => array(
				'type' => 'textarea',
				'label' => __pl('additional_head'),
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'cont_body' => array(
				'type' => 'textarea',
				'label' => __pl('message_body'),
				'desc' => __pl('usr_field_desc'),
				'rows' => 4,
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
			'cont_use_html' => array(
				'type' => 'checkbox',
				'label' => __pl('use_html'),
				'group' => 'contact_templ_modal',
				'req' => ['contact_custom_templ' => 'true'],
			),
		),
		'styles' => [
			'label_style' => __pl('label_style'),
			'input_style' => __pl('input_style'),
			'radio_style' => __pl('radio_style'),
			'form_style' => __pl('form_style'),
			'button_style' =>  __pl('button_style'),
			'icon_style' =>  __pl('icon_style'),
			'border_style' =>  __pl('btn_border_style'),
			'message_style' =>  __pl('message_style'),
			'mail_template' =>  __pl('mail_template'),
		]		
	)
);

pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_contact_item', array(
		'name' => __pl('contact_item'),
		'group' => 'other',
		'not_visible' => 1,
		'html' => '{{fieldhtml}}',
		'parent' => [PAGELAYER_SC_PREFIX.'_contact'],
		'params' => array(
			'label_name' => array(
				'type' => 'text',
				'label' => __pl('label_name'),
				'default' => 'Input Label',
				'edit' => '.pagelayer-form-label',
				'keep_prop' => 1, // Prevent to remove props in gutenburg
				'np' => 1
			),
			'field_type' => array(
				'type' => 'select',
				'label' => __pl('input_field_type'),
				'default' => 'text',
				'list' => array(
					'text' => __pl('text'),
					'email' => __pl('e-mail'),
					'number' => __pl('number'),
					'tel' => __pl('telephone'),
					'checkbox' => __pl('checkbox'),
					'radio' => __pl('radio'),
					'textarea' => __pl('textarea'),
					'select' => __pl('select'),
					'date' => __pl('date'),
					'file' => __pl('file'),
					'label' => __pl('label'),
				),
				'np' => 1
			),
			'values' => array(
				'type' => 'textarea',
				'label' => __pl('values'),
				'default' => "One\nTwo",
				'show' => array(
					'field_type' => ['select', 'checkbox', 'radio']
				),
				'np' => 1
			),
			'textarea_rows' => array(
				'type' => 'spinner',
				'label' => __pl('row'),
				'default' => 6,
				'min' => 1,
				'max' => 100,
				'screen' => 1,
				'req' => array(
					'field_type' => ['textarea']
				),
				'np' => 1
			),
			'accept_file' => array(
				'type' => 'text',
				'label' => __pl('accept_file'),
				'req' => array(
					'field_type' => ['file']
				),
				'np' => 1
			),
			'required' => array(
				'type' => 'checkbox',
				'label' => __pl('required_label'),
				'default' => '',
			),
			'label_as_holder' => array(
				'type' => 'checkbox',
				'label' => __pl('show_label_as_placeholder'),
				'default' => '',
				'req' => ['!field_type' => ['label']],
			),
			'placeholder' => array(
				'type' => 'text',
				'label' => __pl('placeholder'),
				'default' => '',
				'req' => ['!field_type' => ['label']],
				'show' => ['!label_as_holder' => 'true'],
			),
			'field_name' => array(
				'type' => 'text',
				'label' => __pl('input_field_name'),
				'np' => 1,
				'default' => 'Fieldname',
				'req' => ['!field_type' => ['label']],
			),
			'field_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => 100,
				'min' => 1,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{wrap}}' => 'width:{{val}}%'],
			),
			'field_display' => array(
				'type' => 'select',
				'label' => __pl('display'),
				'screen' => 1,
				'default' => '',
				'css' => ['{{wrap}}' => 'display:{{val}}'],
				'list' => array(
					'' => __pl('full'),
					'inline-block' => __pl('inline'),
				),
			),
			'space_between' => array(
				'type' => 'padding',
				'label' => __pl('space_between'),
				'default' => ',,10,',
				'screen' => 1,
				'css' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;',
			),
		)
	)
);

// Post Title
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_title', array(
		'name' => __pl('post_title'),
		'group' => 'other',
		'html' => '<div class="pagelayer-post-title">
			<a class="pagelayer-ele-link" if-ext="{{link}}" href="{{{link}}}">
				{{open_html_tag}}<span if="{{before}}">{{before}} </span>'.pagelayer_get_the_title(false).'<span if="{{after}}"> {{after}}</span>{{close_html_tag}}
			</a>
		</div>',
		'params' => array(
			'before' => array(
				'type' => 'text',
				'label' => __pl('before'),
				'np' => 1,
			),
			'after' => array(
				'type' => 'text',
				'label' => __pl('after'),
				'np' => 1,
			),
			'link' => array(
				'type' => 'link',
				'label' => __pl('image_link_label'),
				'selector' => '.pagelayer-ele-link',
			),
			'html_tag' => array(
				'type' => 'select',
				'label' => __pl('html_tag'),
				'default' => 'h1',
				'list' => [
					'' => __pl('default'),
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
				],
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#0986c0',
				'css' => [
					'{{element}} .pagelayer-post-title'=> 'color:{{val}}',
					'{{element}} .pagelayer-post-title *'=> 'color:{{val}}'
				],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',35,,700,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-post-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'shadow' => array(
				'type' => 'shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-post-title' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => 'text-align: {{val}}',
			),
		)
	)
);

// Post Content
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_content', array(
		'name' => __pl('post_content'),
		'group' => 'other',
		'html' => '<div class="entry-content pagelayer-post-excerpt">{{post_content}}</div>',
		'params' => array(
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-post-excerpt' => 'color:{{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-post-excerpt' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => 'text-align: {{val}}'
			),
		)
	)
);

// Post Excerpt
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_excerpt', array(
		'name' => __pl('post_excerpt'),
		'group' => 'other',
		'html' => '{{{post_excerpt}}}',
		'params' => array(
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'css' => ['{{element}} .pagelayer-post-excerpt' => 'color:{{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-post-excerpt' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => 'text-align: {{val}}',
			),
			'pe_margin' => array(
				'type' => 'padding',
				'label' => __pl('margin'),
				'screen' => 1,
				'units' => ['px', 'em'],
				'css' => ['{{element}} .pagelayer-post-excerpt' => 'margin-top:{{val[0]}}; margin-right:{{val[1]}}; margin-bottom:{{val[2]}}; margin-left:{{val[3]}};'],
			),
		)
	)
);

// Featured Image
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_featured_img', array(
		'name' => __pl('featured_img'),
		'group' => 'other',
		'html' => '<a if-ext="{{link_type}}" href="{{func_link}}" class="pagelayer-ele-link" pagelayer-image-link-type="{{link_type}}">
			<div class="pagelayer-featured-img">{{img_html}}</div>
		</a>
		<p if="{{caption}}" class="pagelayer-featured-caption">{{caption}}</p>',
		'params' => array(
			'img' => array(
				'label' => __pl('fallback_img'),
				'type' => 'image',
				'np' => 1,
			),
			'size' => array(
				'label' => __pl('obj_image_size_label'),
				'type' => 'select',
				'default' => 'full',
				'list' => array(
					'full' => __pl('full'),
					'large' => __pl('large'),
					'medium' => __pl('medium'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom')
				)
			),
			'custom_size' => array(
				'type' => 'dimension',
				'units' => ['px', '%'],
				'screen' => 1,
				'label' => __pl('image_custom_size_label'),
				'css' => ['{{element}} img' => 'width: {{val[0]}}; height: {{val[1]}};'],
				'req' => ['size' => 'custom']
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'list' => [
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				],
				'css' => 'text-align: {{val}}',
			),
			'img_filter' => array(
				'type' => 'filter',
				'label' => __pl('filter'),
				'default' => '0,100,100,0,0,100,100',
				'css' => ['{{element}} img' => 'filter: blur({{val[0]}}px) brightness({{val[1]}}%) contrast({{val[2]}}%) grayscale({{val[3]}}%) hue-rotate({{val[4]}}deg) opacity({{val[5]}}%) saturate({{val[6]}}%)'],
			),
			'img_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} img' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			),
		),
		'link_settings' => [
			'link_type' => array(
				'label' => __pl('image_link_label'),
				'type' => 'select',
				'default' => '',
				'list' => array(
					'' => __pl('none'),
					'custom_url' => __pl('custom_url'),
					'media_file' => __pl('media_file'),
					'lightbox' => __pl('lightbox')
				)
			),
			'link' => array(
				'type' => 'link',
				'label' => __pl('image_link_label'),
				'desc' => __pl('image_link_desc'),
				'selector' => '.pagelayer-ele-link',
				'req' => array(
					'link_type' => 'custom_url'
				)
			),
			'rel' => array(
				'label' => __pl('image_rel_label'),
				'type' => 'text',
				'default' => '',
				'addAttr' => ['{{element}} a' => 'rel="{{rel}}"'],
				'req' => array(
					'link_type' => 'media_file'
				)
			),
			'target' => array(
				'label' => __pl('open_link_in_new_window'),
				'type' => 'checkbox',
				'addAttr' => ['{{element}} a' => 'target="_blank"'],
				'req' => ['link_type' => ['custom_url', 'media_file']], // For backward compatibility of the new link property in version 1.5.8, hide it for custom_url.
				'show' => ['link_type' => 'media_file']
			),
		],
		'caption_style' => [
			'caption' => array(
				'label' => __pl('gallery_grid_caption_label'),
				'desc' => __pl('gallery_grid_caption_desc'),
				'np' => 1,
				'type' => 'text',
			),
			'caption_color' => array(
				'label' => __pl('Caption Color'),
				'type' => 'color',
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-featured-caption' => 'color: {{val}}'],
			),
			'caption_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-featured-caption' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'border_style' => [
			'f_border_hover' => array(
				'type' => 'radio',
				'label' => '',
				'np' => 1,
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'img_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} img' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'f_border_hover' => ''
				),
			),
			'img_border_color' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} img' => 'border-color: {{val}};'],
				'req' => array(
					'!img_border_type' => ''
				),
				'show' => array(
					'f_border_hover' => ''
				),
			),
			'img_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} img' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!img_border_type' => ''
				],
				'show' => array(
					'f_border_hover' => ''
				),
			),
			'img_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} img' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'f_border_hover' => ''
				),
			),
			'img_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('service_btn_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 2000,
				'default' => 400,
				'css' => ['{{element}} img' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => ['f_border_hover' => 'hover'],
			),
			'img_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} img:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'f_border_hover' => 'hover'
				),
			),
			'img_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'css' => ['{{element}} img:hover' => 'border-color: {{val}};'],
				'default' => '#0986c0',
				'req' => array(
					'!img_border_type_hover' => ''
				),
				'show' => array(
					'f_border_hover' => 'hover'
				),
			),
			'img_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} img:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!img_border_type_hover' => ''
				],
				'show' => array(
					'f_border_hover' => 'hover'
				),
			),
			'img_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} img:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'f_border_hover' => 'hover'
				),
			),
		],
		'styles' => [
			'caption_style' => __pl('caption_style'),
			'link_settings' => __pl('link_settings'),
			'border_style' => __pl('border_style')
		]
	)
);

// Post info
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_info', array(
		'name' => __pl('post_info'),
		'group' => 'other',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements',
		],
		'holder' => '.pagelayer-post-info-container',
		'html' => '<div class="pagelayer-post-info-container pagelayer-post-info-{{layout}}"></div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('post_info_list'),
				'sc' => PAGELAYER_SC_PREFIX.'_post_info_list',
				'item_label' => array(
					'default' => __pl('info_list'),
					'param' => 'type',
				),
				'count' => 1,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('post_info'))),
			),
			'layout' => array(
				'type' => 'select',
				'label' => __pl('layout'),
				'np' => 1,
				'default' => 'vertical',
				'list' => array(
					'horizontal' => __pl('horizontal'), 
					'vertical' => __pl('vertical'), 
				),
			),
			'space_between' => array(
				'type' => 'slider',
				'label' => __pl('list_spacing_label'),
				'default' => 15,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-info-vertical .pagelayer-post-info-list-container' => 'margin-right:{{val}}px',
				'{{element}} .pagelayer-post-info-horizontal .pagelayer-post-info-list-container' => 'margin-bottom:{{val}}px']
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'default' => 'left',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-post-info-container' => 'text-align:{{val}}']
			),
		),
		'icon_style' => array(
			'icon_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-info-icon span' => 'font-size:{{val}}'],
			),
			'icon_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'icon_color_normal' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-info-icon span' => 'color:{{val}}'],
				'show' => ['icon_colors' => 'normal']
			),
			'icon_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-info-icon span:hover' => 'color:{{val}}'],
				'show' => ['icon_colors' => 'hover']
			),
		),
		'text_style' => array(
			'input_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-post-info-list-container a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'text_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'text_color_normal' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-info-label' => 'color:{{val}}',
				'{{element}} .pagelayer-post-info-label a' => 'color:{{val}}'],
				'show' => ['text_colors' => 'normal']
			),
			'text_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-info-label:hover' => 'color:{{val}}',
				'{{element}} .pagelayer-post-info-label:hover a' => 'color:{{val}}'],
				'show' => ['text_colors' => 'hover']
			),
		),
		'terms_style' => array(
			'terms_text_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'terms_text_color_normal' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-terms *' => 'color:{{val}} !important'],
				'show' => ['terms_text_colors' => 'normal']
			),
			'terms_text_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-terms *:hover' => 'color:{{val}} !important'],
				'show' => ['terms_text_colors' => 'hover']
			),
			'terms_background_color_normal' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'css' => ['{{element}} .pagelayer-terms *' => 'background-color:{{val}}'],
				'show' => ['terms_text_colors' => 'normal']
			),
			'terms_background_color_hover' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'css' => ['{{element}} .pagelayer-terms *:hover' => 'background-color:{{val}}'],
				'show' => ['terms_text_colors' => 'hover']
			),
			'terms_text_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-terms *' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px;'],	
			),
			'terms_text_margin' => array(
				'type' => 'padding',
				'label' => __pl('margin'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-terms *' => 'margin-top:{{val[0]}}px; margin-right:{{val[1]}}px; margin-bottom:{{val[2]}}px; margin-left:{{val[3]}}px;'],
			),
			'terms_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-terms *' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
		),
		'styles' => array(
			'icon_style' => __pl('icon_style'),
			'text_style' => __pl('text_style'),
			'terms_style' => __pl('terms_style'),
		),
	)
);

// Post info list
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_info_list', array(
		'name' => __pl('post_info_list'),
		'group' => 'other',
		'html' => '<div class="pagelayer-post-info-list-container" if="{{post_info_content}}">
			<a if-ext="{{info_link}}" href="{{link}}" class="pagelayer-post-info-list-link">
				<span class="pagelayer-post-info-icon">
					<span if="{{info_icon_on}}" class="{{info_icon}}"></span>
					<img class="pagelayer-img" if="{{info_avatar}}" src="{{avatar_url}}"></span>
				</span>
				<span if="{{info_before}}" class="pagelayer-post-info-before">{{info_before}}</span>
				<span class="pagelayer-post-info-label pagelayer-{{type}}">{{post_info_content}}</span>
			</a>
		</div>',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_post_info'],
		'params' => array(
			'type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'author',
				'np' => 1,
				'list' => array(
					'author' => __pl('author'),
					'date' => __pl('date'),
					'time' => __pl('time'),
					'comments' => __pl('comments'),
					'terms' => __pl('Terms'),
					'custom' => __pl('custom'),
				),
			),
			'date_format' => array(
				'type' => 'select',
				'label' => __pl('date_format'),
				'default' => 'default',
				'list' => array(
					'default' => __pl('default'),
					'0' => 'F j, Y',
					'1' => 'Y-m-d',
					'2' => 'm/d/Y',
					'3' => 'd/m/Y',
					'custom' => __pl('custom'),
				),
				'req' => ['type' => 'date'],
			),
			'date_format_custom' => array(
				'type' => 'text',
				'label' => __pl('custom_date_format'),
				'default' => 's - M -Y',
				'req' => ['date_format' => 'custom', 'type' => 'date'],
			),
			'time_format' => array(
				'type' => 'select',
				'label' => __pl('time_format'),
				'default' => 'default',
				'list' => array(
					'default' => __pl('default'),
					'0' => 'g:i a',
					'1' => 'g:i A',
					'2' => 'H:i',
					'custom' => __pl('custom'),
				),
				'req' => ['type' => 'time'],
			),
			'time_format_custom' => array(
				'type' => 'text',
				'label' => __pl('custom_time_format'),
				'default' => 'g:i a',
				'req' => ['time_format' => 'custom', 'type' => 'time'],
			),
			'taxonomy' => array(
				'type' => 'select',
				'label' => __pl('Post_taxonomy'),
				'default' => 'category',
				'list' => pagelayer_tax_list(),
				'req' => ['type' => 'terms'],
			),
			'type_custom' => array(
				'type' => 'text',
				'label' => __pl('custom'),
				'req' => ['type' => 'custom'],
			),
			'info_before' => array(
				'type' => 'text',
				'label' => __pl('before'),
				'np' => 1,
			),
			'info_avatar' => array(
				'type' => 'checkbox',
				'label' => __pl('avatar_style'),
				'req' => ['type' => 'author'],
			),
			'info_avatar_size' => array(
				'type' => 'slider',
				'label' => __pl('obj_size_label'),
				'default' => 22,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-info-icon img' => 'height:{{val}}px;width:{{val}}px;border-radius:50%;display:inline-block;'],
				'req' => ['info_avatar' => 'true', 'type' => 'author'],
			),
			'info_link' => array(
				'type' => 'checkbox',
				'label' => __pl('link_settings'),
				'default' => true,
				'req' => ['!type' => 'time'],
			),
			'info_custom_link' => array(
				'type' => 'text',
				'label' => __pl('custom_link'),
				'default' => '#',
				'req' => ['type' => 'custom'],
			),
			'info_icon_on' => array(
				'type' => 'checkbox',
				'label' => __pl('icon'),
				'default' => true,
				'req' => ['info_avatar' => ''],
			),
			'info_icon' => array(
				'type' => 'icon',
				'label' => __pl('icon_list'),
				'default' => 'fas fa-user-circle',
				'req' => ['info_icon_on' => 'true', 'info_avatar' => ''],
			),
		),
	)
);

// Post navigation
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_nav', array(
		'name' => __pl('post_nav'),
		'group' => 'other',
		'html' => '<div class="pagelayer-post-nav-container">
			<div class="pagelayer-prev-post">
				{{prev_link}}
			</div>
			<div class="pagelayer-post-nav-separator"></div>
			<div class="pagelayer-next-post">
				{{next_link}}
			</div>
		</div>',
		'params' => array(
			'in_same_term' => array(
				'type' => 'checkbox',
				'label' => __pl('in_same_term'),
				'np' => 1,
			),
			'taxonomies' => array(
				'type' => 'select',
				'label' => __pl('Post_taxonomy'),
				'default' => 'category',
				'list' => pagelayer_tax_list(),
				'req' => ['in_same_term' => 'true'],
			),
		),
		'nav_label' => array(
			'lables' => array(
				'type' => 'checkbox',
				'label' => __pl('label'),
				'default' => 'true',
			),
			'prev_label' => array(
				'type' => 'text',
				'label' => __pl('prev_label'),
				'np' => 1,
				'default' => __pl('Previous'),
				'req' => ['lables' => 'true'],
			),
			'next_label' => array(
				'type' => 'text',
				'label' => __pl('next_label'),
				'np' => 1,
				'default' => __pl('Next'),
				'req' => ['lables' => 'true'],
			),
			'label_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['lables' => 'true'],
			),
			'label_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-link' => 'color:{{val}}'],
				'show' => ['label_colors' => 'normal'],
				'req' => ['lables' => 'true'],
			),
			'label_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-link:hover' => 'color:{{val}}'],
				'show' => ['label_colors' => 'hover'],
				'req' => ['lables' => 'true'],
			),
			'label_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-post-nav-link' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['lables' => 'true'],
			),
			
		),
		'nav_title' => array(
			'post_title' => array(
				'type' => 'checkbox',
				'label' => __pl('post_title'),
				'default' => 'true',
			),
			'title_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['post_title' => 'true'],
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-title' => 'color:{{val}}'],
				'show' => ['title_colors' => 'normal'],
				'req' => ['post_title' => 'true'],
			),
			'title_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-title:hover' => 'color:{{val}}'],
				'show' => ['title_colors' => 'hover'],
				'req' => ['post_title' => 'true'],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-post-nav-title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['post_title' => 'true'],
			),
		),
		'nav_icon' => array(
			'arrows' => array(
				'type' => 'checkbox',
				'label' => __pl('arrows'),
				'default' => 'true',
			),
			'arrows_list' => array(
				'type' => 'select',
				'label' => __pl('arrows_list'),
				'default' => 'angle',
				'list' => array(
					'angle' => __pl('angle'),
					'arrow' => __pl('Arrow'),
					'angle-double' => __pl('angle_double'),
					'arrow-circle' => __pl('arrow_circle'),
					'arrow-circle-o' => __pl('arrow_circle_O'),
					'chevron' => __pl('chevron'),
					'chevron-circle' => __pl('chevron_circle'),
					'caret' => __pl('caret'),
					'long-arrow' => __pl('long_arrow'),
				),
				'req' => ['arrows' => 'true'],
			),
			'icon_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['arrows' => 'true'],
			),
			'icon_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-icon' => 'color:{{val}}'],
				'show' => ['icon_colors' => 'normal'],
				'req' => ['arrows' => 'true'],
			),
			'icon_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-post-nav-icon:hover' => 'color:{{val}}'],
				'show' => ['icon_colors' => 'hover'],
				'req' => ['arrows' => 'true'],
			),
			'icon_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-nav-icon' => 'font-size:{{val}}px'],
				'req' => ['arrows' => 'true'],
			),
		),
		'nav_sep' => array(
			'disable_sep' => array(
				'type' => 'checkbox',
				'label' => __pl('disable_sep'),
				'css' => ['{{element}} .pagelayer-post-nav-separator' => 'display:none'],
			),
			'sep_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#bdbdbd',
				'css' => ['{{element}} .pagelayer-post-nav-separator' => 'background-color:{{val}}'],
				'req' => ['disable_sep' => '']
			),
			'sep_rotate' => array(
				'type' => 'slider',
				'label' => __pl('Rotate'),
				'default' => 20,
				'max' => 360,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-nav-separator' => 'transform: rotate({{val}}deg);'],
				'req' => ['disable_sep' => '']
			),
			'sep_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => 1,
				'max' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-post-nav-separator' => 'width: {{val}}px;'],
				'req' => ['disable_sep' => '']
			),
			
		),
		'styles' => array(
			'nav_label' => __pl('label_style'),
			'nav_title' => __pl('title_style'),
			'nav_icon' => __pl('icon_style'),
			'nav_sep' => __pl('separator_style'),
		),
	)
);

// Post comment
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_post_comment', array(
		'name' => __pl('post_commment'),
		'group' => 'other',
		'html' => '<div class="pagelayer-post-comment-container">
				{{post_comment}}		
		</div>',
		'params' => array(
			'comment_skin' => array(
				'type' => 'select',
				'label' => __pl('skin'),
				'default' => 'theme_comment',
				'list' => array(
					'theme_comment' => __pl('theme_tamplate'), 
				),
			),
			'post_type' => array(
				'type' => 'radio',
				'label' => __pl('post_type'),
				'default' => 'current',
				'list' => array(
					'current' => __pl('current'), 
					'custom' => __pl('custom'), 
				),
			),
			'post_id' => array(
				'type' => 'select',
				'label' => __pl('post_list'),
				'default' => '',
				'list' => pagelayer_get_posts(),
				'req' => ['post_type' => 'custom']
			),
		),
	)
);

// Flipbox
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_flipbox', array(
		'name' => __pl('Flipbox'),
		'group' => 'other',
		'html' =>  '<div class="pagelayer-flipbox-container pagelayer-flipbox-{{back_section}} pagelayer-flipbox-{{flip_animation}} pagelayer-flipbox-direction-{{animation_direction}}">
			<div class="pagelayer-flipbox-overlay"></div>
			<div class="pagelayer-flipbox-main">
				<div class="pagelayer-flipbox-flipper">
					<div class="pagelayer-flipbox-box pagelayer-flipbox-front" style="background-image:url({{front_background}});">
						<div class="pagelayer-flipbox-box-overlay">
							<div class="pagelayer-flipbox-box-inner">
								<div class="pagelayer-flipbox-content">
									<div class="pagelayer-icon-holder pagelayer-service-icon pagelayer-service-{{icon_view}}">
										<i class="{{icon}} {{bg_shape}} {{icon_size}} pagelayer-animation-{{anim_hover}}"></i>						
									</div>
									<div if="{{heading_image}}" class="pagelayer-flipbox-image">
										<img class="pagelayer-img pagelayer-animation-{{anim_hover}}" src="{{func_image}}" title="{{{heading_image-title}}}" alt="{{{heading_image-alt}}}" />
									</div>
									<h2 if={{front_heading}}>{{front_heading}}</h2>
									<p if={{front_content}}>{{front_content}}</p>
								</div>
							</div>
						</div>
					</div>
					<div class="pagelayer-flipbox-box pagelayer-flipbox-back" style="">
						<div class="pagelayer-flipbox-box-overlay">
							<div class="pagelayer-flipbox-box-inner">
								<div class="pagelayer-flipbox-content">
									<h2 if={{back_heading}}>{{back_heading}}</h2>
									<p if={{back_content}}>{{back_content}}</p>
									<a if="{{display_button}}" href="{{{back_button_url}}}" class="pagelayer-service-btn {{back_button_type}} pagelayer-ele-link pagelayer-button {{back_button_size}}">{{back_button_text}}</a>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>',
		'params' => array(
			'height' => array(
				'type' => 'slider',
				'label' => __pl('block_height'),
				'np' => 1,
				'min' => 100,
				'max' => 1200,
				'default' => 500,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-flipper' => 'height: {{val}}px;'],
			),
			'content_width' => array(
				'type' => 'slider',
				'label' => __pl('content_width'),
				'min' => 50,
				'max' => 100,
				'default' => 100,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-content' => 'width: {{val}}%; margin:0 auto;'],
			),
			'flip_animation' => array(
				'type' => 'select',
				'label' => __pl('animation_styles'),
				'default' => 'flip',
				'list' => array(
					'flip' => __pl('flip'),
					'slide' => __pl('slide'),
					'push' => __pl('push'),
					'zoom-in' => __pl('zoom-in'),
					'zoom-out' => __pl('zoom-out'),
					'fade' => __pl('fade'),
				),
			),
			'animation_direction' => array(
				'type' => 'select',
				'label' => __pl('animation_direction'),
				'default' => 'right',
				'list' => array(
					'up' => __pl('top'),
					'down' => __pl('bottom'),
					'right' => __pl('right'),
					'left' => __pl('left'),
				),
				'req' => array(
					'!flip_animation' => ['fade','zoom-out','zoom-in'],
				),
			),
			'animation_duration' => array(
				'type' => 'spinner',
				'label' => __pl('animation_duration'),
				'np' => 1,
				'default' => 600,
				'min' => 100,
				'step' => 50,
				'max' => 2000,
				'css' => ['{{element}} .pagelayer-flipbox-box' => 'transition: all {{val}}ms ease-in-out !important;
				-webkit-transition: all {{val}}ms ease-in-out !important;']
			),
			'flip_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-flipbox-flipper' => 'border-style: {{val}}'],
				'list' => array(
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				),
			),
			'flip_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-flipbox-flipper' => 'border-color: {{val}};'],
				'req' => array(
					'!flip_border_type' => ''
				),
			),			
			'flip_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-flipper' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => array(
					'!flip_border_type' => ''
				),
			),
			'flip_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-flipper' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),			
		),
		'front_section' => array(
			'heading_element' => array(
				'type' => 'radio',
				'label' => __pl('visual_element'),
				'default' => '',
				'list' => array(
					'' => __pl('none'),
					'icon' => __pl('icon'),
					'image' => __pl('image'),
				),
			),
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
				'default' => 'fas fa-star',
				'req' => array(
					'heading_element'=>'icon',
				),
			),
			'icon_view' => array(
				'type' => 'select',
				'label' => __pl('iconbox_icon_view'),
				'default' => 'default',
				'list' =>array(
					'default' => __pl('default'),
					'stacked' => __pl('Stacked'),
					'framed' => __pl('Framed'),
				),
				'req' => array(
					'heading_element'=>'icon',
				),
			),
			'bg_shape' => array(
				'type' => 'select',
				'label' => __pl('icon_background_shape'),
				'default' => 'pagelayer-icon-circle',
				'list' => array(
					'' => __pl('icon_shape_none'),
					'pagelayer-icon-circle' => __pl('icon_shape_circle'),
					'pagelayer-icon-square' => __pl('icon_shape_square'),
					'pagelayer-icon-rounded' => __pl('icon_shape_rounded')
				),
				'req' => array(
					'heading_element'=>'icon',
					'!icon_view' => 'default',
				),				
			),
			'icon_color_style' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'position: relative; color: {{val}};',
					'{{element}} pagelayer-flipbox-content i:before' => 'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);'],
				'default' => '#ffffff',
				'req' => array(
					'heading_element'=>'icon',
				),
			),
			'bg_color' => array(
				'type' => 'color',
				'label' => __pl('icon_background_color'),
				'default' => '#ef9229',
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'background-color: {{val}};'],
				'req' => array(
					'heading_element'=>'icon',
					'!bg_shape' => '',
					'icon_view' => 'stacked',
				),
				'show' => array(
					'icon_hover' => ''
				),
			),
			'icon_background_size' => array(
				'type' => 'spinner',
				'label' => __pl('icon_background_size'),
				'default' => 20,
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'padding: calc(0.5em + {{val}}px);'],
				'min' => 1,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'req' => array(
					'heading_element'=>'icon',
				),
			),						
			'icon_size' => array(
				'type' => 'select',
				'label' => __pl('size_label'),
				'default' => 'pagelayer-icon-large',
				'list' => array(
					'pagelayer-icon-mini' => __pl('mini'),
					'pagelayer-icon-small' => __pl('small'),
					'pagelayer-icon-large' => __pl('large'),
					'pagelayer-icon-extra-large' => __pl('extra_large'),
					'pagelayer-icon-double-large' => __pl('double_large'),
					'pagelayer-icon-custom' => __pl('custom'),
				),
				'req' => array(
					'heading_element'=>'icon',
				),
			),
			'icon_size_custom' => array(
				'type' => 'spinner',
				'label' => __pl('icon_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 26,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'font-size: {{val}}px'],
				'req' => array(
					'icon_size' => 'pagelayer-icon-custom',
					'heading_element' => 'icon'
				),
			),
			'icon_rotate' => array(
				'type' => 'spinner',
				'label' => __pl('icon_rotate'),
				'default' => 0,
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'transform: rotate({{val}}deg)'],
				'min' => 0,
				'max' => 360,
				'step' => 1,
				'screen' => 1,
				'req' => array(
					'heading_element'=>'icon',
				),
			),			
			'icon_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'req' => array(
					'heading_element'=>'icon',
				),
			),
			'icon_border_color' => array(
				'type' => 'color',
				'label' => __pl('icon_border_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'border-color: {{val}};'],
				'req' => array(
					'!icon_border_type' => '',
					'heading_element' => 'icon'
				),
			),
			'icon_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!icon_border_type' => '',
					'heading_element' => 'icon'
				],
			),
			'icon_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-content i' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!icon_border_type' => '',
					'heading_element' => 'icon'
				),
			),
			'heading_image'=> array(
				'type' => 'image',
				'label' => __pl('image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'req' => array(
					'heading_element' => 'image',
				),
			),
			'heading_image_size' => array(
				'type' => 'radio',
				'label' => __pl('image_size'),
				'default' => 'full',
				'list' => array(
					'full' => __pl('full'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom'),
				),
				'req' => array(
					'heading_element' => 'image',
				),
			),
			'heading_image_custom_size' => array(
				'type' => 'slider',
				'label' => __pl('img_custom_size'),
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'default' => 50,
				'css' => ['{{element}} .pagelayer-flipbox-image img' => 'width:{{val}}%; height: auto;'],
				'req' => array(
					'heading_element' => 'image',
					'heading_image_size' => 'custom',
				)
			),
			'heading_image_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'default' => 20,
				'css' => ['{{element}} .pagelayer-flipbox-image img' => 'margin-bottom:{{val}}px;'],
				'req' => array(
					'heading_element' => 'image',
				)
			),
			'front-text-align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-box-overlay' => 'text-align:{{val}} !important;'],
			),
			'front_heading' => array(
				'type' => 'text',
				'default' => 'Flipbox Heading',
				'label' => __pl('heading_name'),
				'np' => 1,
			),
			'heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-content h2' => 'color:{{val}};'],
			),
			'heading_typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => 'Poppins,40,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-content h2' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'front_content' => array(
				'type' => 'textarea',
				'label' => __pl('content'),
				'np' => 1,
				'default' => 'Flipbox content comes here such as It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.',
			),
			'front_content_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-content p' => 'color:{{val}};'],
			),
			'front_content_typography' => array(
				'type' => 'typography',
				'label' => __pl('text_style'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-content p' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'front_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}};'],
			),
			'front_background_type' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => array(
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				),
			),
			'front_background_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'background-color:{{val}};'],
				'req' => array(
					'front_background_type' => 'color',
				),
			),
			'front_background_gradient' => array(
				'type' => 'gradient',
				'label' => __pl('background_gradient'),
				'default' => '150,#f12711,40,#f5af19,60,#f5af19,100',
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%) !important;'],
				'req' => array(
					'front_background_type' => 'gradient',
				),
			),
			'front_background_image' => array(
				'type' => 'image',
				'label' => __pl('image'),
				'np' => 1,
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'background-image:url("{{{front_background_image-url}}}") !important;'],
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_background_attachment' => array(
				'type' => 'select',
				'label' => __pl('background_attachment'),
				'list' => array(
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				),
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'background-attachment: {{val}}'],
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_background_posx' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_posx'),
				'list' => array(
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-flipbox-front' => 'background-position-x: {{val}};'],
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_background_posy' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_posy'),
				'list' => array(
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom')
				),
				'css' =>  ['{{element}} .pagelayer-flipbox-front' => 'background-position-y: {{val}};'],
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_background_repeat' => array(
				'type' => 'select',
				'label' => __pl('repeat'),
				'css' =>  ['{{element}} .pagelayer-flipbox-front' => 'background-repeat: {{val}};'],
				'list' => array(
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				),
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_background_size' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_size'),
				'css' =>  ['{{element}} .pagelayer-flipbox-front' => 'background-size: {{val}};'],
				'list' => array(
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				),
				'req' => array(
					'front_background_type' => 'image',
				),
			),
			'front_section_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'default' => '100,100,100,100',
				'css' => ['{{element}} .pagelayer-flipbox-front .pagelayer-flipbox-box-overlay' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
		),		
		'back_section' => array(
			'back_section' => array(
				'type' => 'checkbox',
				'label' => __pl('back_side'),
			),
			'back-text-align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-box-overlay' => 'text-align:{{val}} !important;'],
			),
			'back_heading' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'np' => 1,
				'default' => 'Flipbox Back Heading',
			),
			'back_heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-content h2' => 'color:{{val}};'],
			),
			'back_heading_typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => 'Poppins,40,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-content h2' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'back_content' => array(
				'type' => 'textarea',
				'label' => __pl('content'),
				'np' => 1,
				'default' => 'Flipbox content comes here such as It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.',
			),
			'back_content_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'default' => '#3c3f40',
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-content p' => 'color:{{val}};'],
			),
			'back_content_typography' => array(
				'type' => 'typography',
				'label' => __pl('text_style'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-content p' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'back_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}};'],
			),
			'display_button' => array(
				'type' => 'checkbox',
				'label' => __pl('button'),
			),
			'back_button_url' => array(
				'type' => 'link',
				'label' => __pl('btn_url_label'),
				'selector' => '.pagelayer-service-btn',
				'req' => array(
					'!display_button' => '',
				),
			),
			'back_button_text' => array(
				'type' => 'text',
				'label' => __pl('button_text_label'),
				'default' => 'Click Here!',	
				'req' => array(
					'!display_button' => '',
				),
			),
			'back_button_typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',20,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-service-btn' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => array(
					'!display_button' => '',
				),
			),
			'back_button_type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'pagelayer-btn-default',
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
				'req' => array(
					'!display_button' => '',
				),
			),
			'back_button_size' => array(
				'type' => 'select',
				'label' => __pl('button_size'),
				'default' => 'pagelayer-btn-mini',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom')
				),
				'req' => array(
					'!display_button' => '',
				),
			),	
			'back_button_custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('btn_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-service-btn' => 'padding: calc({{val}}px / 2) {{val}}px;'],
				'req' => array(
					'back_button_size' => 'pagelayer-btn-custom',
				),
			),			
			'back_btn_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'min' => 0,
				'max' => 200,
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-service-btn' => 'margin-top: {{val}}px;'],
				'req' => array(
					'!display_button' => '',
				),
			),
			'back_btn_state' => array(
				'type' => 'radio',
				'label' => __pl('button_state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'back_button_type' => 'pagelayer-btn-custom',
					'!display_button' => '',
				),
			),
			'back_button_color' => array(
				'type' => 'color',
				'label' => __pl('button_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-service-btn' => 'color:{{val}};'],
				'show' => array(
					'back_btn_state' => 'normal',
				),
			),
			'back_button_bg_color' => array(
				'type' => 'color',
				'label' => __pl('button_bg_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-service-btn' => 'background-color:{{val}};'],
				'show' => array(
					'back_btn_state' => 'normal',
				),
			),
			'back_btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-service-btn' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => array(
					'back_btn_state' => 'hover',
				),
			),
			'back_button_color_hover' => array(
				'type' => 'color',
				'label' => __pl('button_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-service-btn:hover' => 'color:{{val}} !important;'],
				'show' => array(					
					'back_btn_state' => 'hover',
				),
			),
			'back_button_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('button_bg_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-service-btn:hover' => 'background-color:{{val}} !important;'],
				'show' => array(
					'back_btn_state' => 'hover'
				),
			),			
			'back_background_type' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => array(
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				),
			),
			'back_background_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'background-color:{{val}};'],
				'req' => array(
					'back_background_type' => 'color',
				),
			),
			'back_background_gradient' => array(
				'type' => 'gradient',
				'label' => __pl('background_gradient'),
				'default' => '150,#1488CC,40,#2B32B2,60,#2B32B2,100',
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%) !important;'],
				'req' => array(
					'back_background_type' => 'gradient',
				),
			),
			'back_background_image' => array(
				'type' => 'image',
				'label' => __pl('image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'background-image:url("{{{back_background_image-url}}}") !important;'],
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_background_attachment' => array(
				'type' => 'select',
				'label' => __pl('background_attachment'),
				'list' => array(
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				),
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'background-attachment: {{val}}'],
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_background_posx' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_posx'),
				'list' => array(
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right')
				),
				'css' => ['{{element}} .pagelayer-flipbox-back' => 'background-position-x: {{val}};'],
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_background_posy' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_posy'),
				'list' => array(
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom')
				),
				'css' =>  ['{{element}} .pagelayer-flipbox-back' => 'background-position-y: {{val}};'],
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_background_repeat' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_repeat'),
				'css' =>  ['{{element}} .pagelayer-flipbox-back' => 'background-repeat: {{val}};'],
				'list' => array(
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				),
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_background_size' => array(
				'type' => 'select',
				'label' => __pl('ele_bg_size'),
				'css' =>  ['{{element}} .pagelayer-flipbox-back' => 'background-size: {{val}};'],
				'list' => array(
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				),
				'req' => array(
					'back_background_type' => 'image',
				),
			),
			'back_section_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'default' => '100,100,100,100',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-flipbox-back .pagelayer-flipbox-box-overlay' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),			
		),
		'styles' => [
			'front_section' => __pl('front_section'),
			'back_section' => __pl('back_section'),						
		]
	)
);

// Countdown Timer
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_countdown', array(
		'name' => __pl('countdown_timer'),
		'group' => 'other',
		'html' => '<div class="pagelayer-countdown-container" pagelayer-expiry-date={{date}} pagelayer-time-type={{time_zone}}>
			<div class="pagelayer-countdown-expired">
				<p if={{expired_text}}>{{expired_text}}</p>
			</div>
			<div class="pagelayer-countdown-counter">
				<div if={{days}} class="pagelayer-countdown-days pagelayer-countdown-item pagelayer-countdown-{{display}}">
					<div class="pagelayer-days-count pagelayer-countdown-count"></div>
					<div if={{show_label}} class="pagelayer-countdown-name">
						<span if={{days_label_text}}>{{days_label_text}}</span>
					</div>
				</div>
				<div if={{hours}} class="pagelayer-countdown-hours pagelayer-countdown-item pagelayer-countdown-{{display}}">
					<div class="pagelayer-hours-count pagelayer-countdown-count"></div>
					<div if={{show_label}} class="pagelayer-countdown-name">
						<span if={{hours_label_text}}>{{hours_label_text}}</span>
					</div>
				</div>
				<div if={{minutes}} class="pagelayer-countdown-minutes pagelayer-countdown-item pagelayer-countdown-{{display}}">
					<div class="pagelayer-minutes-count pagelayer-countdown-count"></div>
					<div if={{show_label}} class="pagelayer-countdown-name">
						<span if={{minutes_label_text}} >{{minutes_label_text}}</span>
					</div>
				</div>
				<div if={{seconds}} class="pagelayer-countdown-seconds pagelayer-countdown-item pagelayer-countdown-{{display}}">
					<div class="pagelayer-seconds-count pagelayer-countdown-count"></div>
					<div if={{show_label}} class="pagelayer-countdown-name">
						<span if={{seconds_label_text}} >{{seconds_label_text}}</span>
					</div>
				</div>
			</div>
		</div>',
		'params' => array(
			'date' => array(
				'type' => 'datetime',
				'displayMode' => 'datetime', // date | datetime (default)
				'returnMode' => 'YYYY-MM-DD H:m:s', // mysql format uses here (default: Y-m-d H:i:s )
				'label' => __pl('date_picker_label'),
				'np' => 1,
				'default' => '',
			),
			'time_zone' => array(
				'type' => 'select',
				'label' => __pl('time_zone'),
				'default' => 'server',
				'list' => array(
					'server' => __pl('server_time'),
					'local' => __pl('user_local')
				),
			),			
			'number_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'np' => 1,
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-countdown-count' => 'color:{{val}}'],
			),
			'number_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',50,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-countdown-count' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],					
			),
			'number_spacing' => array(
				'type' => 'padding',
				'label' => __pl('spacing'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-count' => 'margin-top: {{val[0]}}; margin-right: {{val[1]}}; margin-bottom: {{val[2]}}; margin-left: {{val[3]}};'],
			),		
			'days' => array(
				'type' => 'checkbox',
				'label' => __pl('days'),
				'np' => 1,
				'default' => 'true',
			),
			'hours' => array(
				'type' => 'checkbox',
				'label' => __pl('hours'),
				'np' => 1,
				'default' => 'true',
			),
			'minutes' => array(
				'type' => 'checkbox',
				'label' => __pl('minutes'),
				'np' => 1,
				'default' => 'true',
			),
			'seconds' => array(
				'type' => 'checkbox',
				'label' => __pl('seconds'),
				'np' => 1,
				'default' => 'true',
			),
		),
		'expired_text' =>[
			'display_expired_text' => array(
				'type' => 'checkbox',
				'label' => __pl('expired_text'),
			),
			'expired_text'  => array(
				'type' => 'text',
				'label' => __pl('text'),
				'default' => 'Countdown Timer Expired',
			),
			'expired_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-countdown-expired p' => 'color:{{val}};'],				
			),
			'expired_background_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-countdown-expired' => 'background-color:{{val}};'],				
			),
			'expired_style' => array(
				'type' => 'typography',
				'label' => __pl('expired_style'),
				'default' => ',50,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-countdown-expired p' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],				
			),
			'expired_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-expired' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
			'expired_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-countdown-expired' => 'text-align:{{val}};'],
			),
		],
		'text_style' =>[
			'show_label' => array(
				'type' => 'checkbox',
				'label' => __pl('show_title'),
				'np' => 1,
				'default' => 'true',
			),
			'custom_label_text'  => array(
				'type' => 'checkbox',
				'label' => __pl('custom_label_text'),
				'show' => array(
					'show_label' => 'true',
				),
			),
			'days_label_text' => array(
				'type' => 'text',
				'label' => __pl('days'),
				'default' => __pl('days'),				
				'show' => array(
					'!custom_label_text' => '',
					'!days' => '',
				),
			),
			'hours_label_text' => array(
				'type' => 'text',
				'label' => __pl('hours'),
				'default' => __pl('hours'),
				'show' => array(
					'!custom_label_text' => '',
					'!hours' => '',
				),
			),
			'minutes_label_text' => array(
				'type' => 'text',
				'label' => __pl('minutes'),
				'default' => __pl('minutes'),
				'show' => array(
					'!custom_label_text' => '',
					'!minutes' => '',
				),
			),
			'seconds_label_text' => array(
				'type' => 'text',
				'label' => __pl('seconds'),
				'default' => __pl('seconds'),
				'show' => array(
					'!custom_label_text' => '',
					'!seconds' => '',
				),
			),
			'font_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-countdown-name span' => 'color:{{val}}'],
				'show' => array(
					'show_label' => 'true',
				),
			),
			'cd_text_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',18,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-countdown-name' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => array(
					'show_label' => 'true',
				),				
			),
		],
		'block_styles' =>[
			'display' => array(
				'type' => 'select',
				'label' => __pl('display'),
				'default' => 'block',
				'list' => [
					'block' => __pl('block'),
					'inline' => __pl('inline'),			
				],				
			),
			'block_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#2b1661',
				'css' => ['{{element}} .pagelayer-countdown-item' => 'background-color:{{val}}'],
			),
			'blocks_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item' => 'padding-top: {{val[0]}}; padding-right: {{val[1]}}; padding-bottom: {{val[2]}}; padding-left: {{val[3]}}'],
			),
			'blocks_space' => array(
				'type' => 'padding',
				'label' => __pl('block_space'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item' => 'margin-top: {{val[0]}}; margin-right: {{val[1]}}; margin-bottom: {{val[2]}}; margin-left: {{val[3]}}'],
			),
			'cd_border_state' => array(
				'type' => 'radio',
				'label' => __pl(''),
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'cd_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-countdown-item' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'cd_border_state' => ''
				),
			),
			'cd_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-countdown-item' => 'border-color: {{val}};'],
				'req' => array(
					'!cd_border_type' => ''
				),
				'show' => array(
					'cd_border_state' => ''
				),
			),			
			'cd_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!cd_border_type' => ''
				],
				'show' => array(
					'cd_border_state' => ''
				),
			),
			'cd_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
				'show' => array(
					'cd_border_state' => ''
				),
			),
			'cd_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-countdown-item:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'cd_border_state' => 'hover'
				),
			),
			'cd_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-countdown-item:hover' => 'border-color: {{val}};'],
				'default' => '#0986c0',
				'req' => array(
					'!cd_border_type_hover' => ''
				),
				'show' => array(
					'cd_border_state' => 'hover'
				),
			),
			'cd_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!cd_border_type_hover' => ''
				],
				'show' => array(
					'cd_border_state' => 'hover'
				),
			),
			'cd_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-countdown-item:hover' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],				
				'show' => array(
					'cd_border_state' => 'hover'
				),
			),
			'cd_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-countdown-item' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}};'],
				'show' => array(
					'cd_border_state' => '',
				),				
			), 
			'cd_shadow_hover' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-countdown-item:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}};'],
				'show' => array(
					'cd_border_state' => 'hover'
				),			
			), 
		],
		'styles' => [	
			'text_style' => __pl('title_style'),
			'expired_text' => __pl('expired_text'),
			'block_styles' => __pl('block_styles'),			
		],
	)
);

// Button Group
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_btn_grp', array(
		'name' => __pl('btn_grp'),
		'group' => 'button',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('buttons'),
				'sc' => PAGELAYER_SC_PREFIX.'_btn',
				'item_label' => array(
					'default' => __pl('button'),
					'param' => 'text'
				),
				'count' => 2,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('button_name'))),
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'default' => 'center',
				'screen' => 1,
				'css' => [
					'{{element}}' => 'text-align: {{val}}',
					'{{element}} .pagelayer-btn' => 'text-align: {{val}}'
				],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
			'group_layout' => array(
				'type' => 'radio',
				'label' => __pl('layout'),
				'default' => 'horizontal',
				'css' => ['{{element}} > div' => 'display: inline-block;'],
				'list' => array(
					'horizontal' => __pl('horizontal'),
					'' => __pl('vertical')
				)
			),
			'hindent' => array(
				'type' => 'spinner',
				'label' => __pl('space_between'),
				'np' => 1,
				'default' => '5',
				'css' => ['{{element}} .pagelayer-btn' => 'padding-left: {{val}}px; padding-right: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 50,
				'default' => 3,
				'screen' => 1,
				'req' => ['group_layout' => 'horizontal']
			),
			'vindent' => array(
				'type' => 'spinner',
				'label' => __pl('space_between'),
				'np' => 1,
				'default' => '5',
				'css' => ['{{element}} .pagelayer-btn' => 'padding-top: {{val}}px; padding-bottom: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 50,
				'default' => 3,
				'screen' => 1,
				'req' => ['group_layout' => '']
			)
		)
	)
);
	
// Testimonial Slider
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_testimonial_slider', array(
	'name' => __pl('testimonial_slider'),
	'group' => 'other',
	'has_group' => [
		'section' => 'params',
		'prop' => 'elements'
	],
	'icon' => 'pli pli-commenting-o',
	'prevent_inside' => ['pl_slides'],
	'child_selector' => '>.pagelayer-owl-stage-outer>.pagelayer-owl-stage>.pagelayer-owl-item', // Make it very specifc
	'holder' => '.pagelayer-testimonials-holder',
	'html' => '<div class="pagelayer-testimonials-holder pagelayer-owl-holder pagelayer-owl-carousel pagelayer-owl-theme"></div>',
	'params' => array(
		'elements' => array(
			'type' => 'group',
			'label' => __pl('testimonial'),
			'sc' => PAGELAYER_SC_PREFIX.'_testimonial',
			'item_label' => array(
				'default' => __pl('testimonial'),
				'param' => 'cite'
			),
			'count' => 3,
			'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('testimonial')))
		),
	),
	'slider_options' => $pagelayer->slider_options,
	'arrow_styles' => $pagelayer->slider_arrow_styles,
	'pager_styles' => $pagelayer->slider_pager_styles,
	'styles' => [
		'slider_options' => __pl('slider_options'),
		'arrow_styles' => __pl('arrow_styles'),
		'pager_styles' => __pl('pager_styles'),
	]
));



// Pricing Table
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_pricing', array(
		'name' => __pl('pricing_table'),
		'group' => 'other',
		'has_group' => [
			'section' => 'feature_style', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-pricing-ul',
		'html' =>  '<div class="pagelayer-pricing-details">
			<div if="{{ribbon_text}}" class="pagelayer-pricing-ribbon-container">
				<div class="pagelayer-pricing-ribbon">
					{{ribbon_text}}
				</div>
			</div>			
			<h3 if="{{plan_title}}" class="pagelayer-pricing-type">{{plan_title}}</h3>
			<h4 if="{{plan_sub_title}}" class="pagelayer-pricing-sub-title">{{plan_sub_title}}</h4>			
		</div>
		<div class="pagelayer-pricing-rate-section">
			<h4 if="{{original_price}}" class="pagelayer-pricing-price pagelayer-pricing-original">
				<span class="pagelayer-pricing-rate">
					<span if="{{currency}}">{{currency}}</span><span class="pagelayer-pricing-orig-amt">{{original_price}}</span>
				</span>
			</h4>
			<h2 class="pagelayer-pricing-price">
				<span if="{{currency}}" class="pagelayer-pricing-currency pagelayer-pricing-currency-{{currency_position}}">{{currency}}</span><span if="{{price}}" class="pagelayer-pricing-rate pagelayer-pricing-amt">{{price}}</span>
			</h2>
			<p if="{{period}}" class="pagelayer-pricing-duration">{{period}}</p>
		</div>		
		<div class="pagelayer-pricing-features">
			<ul class="pagelayer-pricing-ul"></ul>			
			<a if="{{price_button}}" href="{{{button_url}}}" class="pagelayer-pricing-btn {{button_type}} pagelayer-ele-link pagelayer-button {{button_size}}">{{button_text}}</a>
			<p if="{{additional_info}}" class="pagelayer-pricing-additional">{{additional_info}}</p>
		</div>',
		'params' => array(
			'plan_title' => array(
				'type' => 'text',
				'label' => __pl('plan_type'),
				'np' => 1,
				'default' => 'Standard',
				'edit' => '.pagelayer-pricing-type',
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-type' => 'color:{{val}};'],
			),			
			'title_size' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => 'Poppins,20,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-type' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'content_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'css' => 'text-align: {{val}};',
				'list' => array(
					'left' => __pl('left'),
					'' => __pl('center'),
					'right' => __pl('right'),
				)
			),
		),
		//styles		
		'header_style' => [
			'header_background_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#d55400',
				'css' => ['{{element}} .pagelayer-pricing-details' => 'background-color:{{val}} !important;'],
			),
			'header_padding' => array(
				'label' => __pl('padding'),
				'type' => 'padding',
				'screen' => 1,
				'default' => '10,10,10,10',
				'css' =>  ['{{element}} .pagelayer-pricing-details' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
			'header_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-pricing-details' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'header_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#e5e5e8',
				'css' => ['{{element}} .pagelayer-pricing-details' => 'border-color: {{val}};'],
				'req' => ['!header_border_type' => '']
			),
			'header_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '0,0,0,0',
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-details' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!header_border_type' => '']
			),
			'header_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-details' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!header_border_type' => '']
			),
		],
		'subtitle_style' => [
			'plan_sub_title' => array(
				'type' => 'text',
				'label' => __pl('subtitle'),
				'default' => 'For beginners',
				'edit' => '.pagelayer-pricing-sub-title',
			),
			'subtitle_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-sub-title' => 'color:{{val}}'],
			),
			'subtitle_size' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => 'Poppins,18,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-sub-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],				
			),
		],
		'price_style' => [
			'price' => array(
				'type' => 'text',
				'label' => __pl('plan_price'),
				'np' => 1,
				'default' => '49',
				'edit' => '.pagelayer-pricing-amt',
			),
			'sale' => array(
				'type' => 'checkbox',
				'label' => __pl('sale'),
			),
			'original_price' => array(
				'type' => 'text',
				'label' => __pl('old_price'),
				'default' => '100',
				'edit' => '.pagelayer-pricing-orig-amt',
				'keep_prop' => 1, // Prevent to remove props in gutenburg
				'css' => ['{{element}} .pagelayer-pricing-original '=> 'display:inline-block;'],
				'req' => array(
					'sale' => 'true'
				)
			),
			'price_size' => array(
				'label' => __pl('price_size'),
				'type' => 'typography',
				'default' => 'Poppins,45,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-rate' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'price_sale_size' => array(
				'label' => __pl('old_price_size'),
				'type' => 'typography',
				'default' => 'Poppins,35,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-original .pagelayer-pricing-rate' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => array(
					'sale' => 'true'
				)
			),
			'price_state' => array(
				'type' => 'radio',
				'label' => __pl('price_state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'price_line_height' => array(
				'label' => __pl('price_line_height'),
				'type' => 'slider',
				'min' => 0,
				'max' => 500,
				'default' => 30,
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-currency' => 'line-height:{{val}}%;'],
			),
			'price_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-rate' => 'color:{{val}}'],
				'show' => ['price_state' => 'normal'],
			),
			'old_price_color' => array(
				'type' => 'color',
				'label' => __pl('old_price_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-price.pagelayer-pricing-original .pagelayer-pricing-rate' => 'color:{{val}}'],
				'show' => ['price_state' => 'normal'],
				'req' => ['sale' => 'true'],				
			),
			'old_price_line_color' => array(
				'type' => 'color',
				'label' => __pl('old_price_line_color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-pricing-price.pagelayer-pricing-original' => 'color:{{val}}'],
				'show' => ['price_state' => 'normal'],
				'req' => ['sale' => 'true'],
			),
			'price_background_color' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'default' => '#e98b2b',
				'css' => ['{{element}} .pagelayer-pricing-rate-section' => 'background-color:{{val}}'],
				'show' => ['price_state' => 'normal'],
			),
			'price_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-rate:hover' => 'color:{{val}}'],
				'show' => ['price_state' => 'hover'],
			),
			'old_price_color_hover' => array(
				'type' => 'color',
				'label' => __pl('old_price_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-price.pagelayer-pricing-original .pagelayer-pricing-rate:hover' => 'color:{{val}}'],
				'show' => ['price_state' => 'hover'],
				'req' => ['sale' => 'true'],
			),
			'old_price_line_color_hover' => array(
				'type' => 'color',
				'label' => __pl('old_price_line_color'),
				'css' => ['{{element}} .pagelayer-pricing-price.pagelayer-pricing-original:hover' => 'color:{{val}}'],
				'show' => ['price_state' => 'hover'],
				'req' => ['sale' => 'true'],
			),
			'price_background_color_hover' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'css' => ['{{element}} .pagelayer-pricing-rate-section:hover' => 'background-color:{{val}}'],
				'show' => ['price_state' => 'hover'],
			),
			'price_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-pricing-rate-section' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'price_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-pricing-rate-section' => 'border-color: {{val}};'],
				'req' => ['!price_border_type' => '']
			),
			'price_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' =>  ['{{element}} .pagelayer-pricing-rate-section' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!price_border_type' => '']
			),
			'price_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' =>  ['{{element}} .pagelayer-pricing-rate-section' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!price_border_type' => '']
			),
			'price_margin' => array(
				'type' => 'padding',
				'label' => __pl('margin'),
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-rate-section' => 'margin: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
			'price_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-rate-section' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
		],
		'currency_style' => [
			'currency' => array(
				'type' => 'text',
				'label' => __pl('currency'),
				'np' => 1,
				'default' => '$',
				'edit' => '.pagelayer-pricing-currency',
			),
			'currency_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-currency' => 'color:{{val}}'],
			),
			'currency_size' => array(
				'label' => __pl('currency_size'),
				'type' => 'typography',
				'default' => 'Poppins,35,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-price .pagelayer-pricing-currency' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],				
			),
			'currency_position' => array(
				'type' => 'radio',
				'label' => __pl('position'),
				'default' => 'top',
				'list' => array(
					'top' => __pl('top'),
					'middle' => __pl('middle'),
					'bottom' => __pl('bottom'),
				),
			),
		],
		'period_style' => [
			'period_inline' => array(
				'type' => 'checkbox',
				'label' => __pl('inline'),
				'css' => ['{{element}} .pagelayer-pricing-duration' => 'display:inline-block;'],
			),
			'period' => array(
				'type' => 'text',
				'label' => __pl('period'),
				'np' => 1,
				'default' => 'Per Month',
				'edit' => '.pagelayer-pricing-duration',
			),
			'period_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-duration' => 'color:{{val}}'],
			),
			'period_size' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-duration' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'feature_style' => [
			'elements' => array(
				'type' => 'group',
				'label' => __pl('features_item'),
				'sc' => PAGELAYER_SC_PREFIX.'_list_item',
				'item_label' => array(
					'default' => __pl('Features Item'),
					'param' => 'item'
				),
				'count' => 3,
				'text' =>strtr(__pl('add_new_item'), array('%name%' => __pl('Feature'))),
			),
			'features_background_color' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-features' => 'background-color:{{val}}'],
			),
			'features_text_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-pricing-ul li span' => 'color:{{val}}'],
			),
			'features_text_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',18,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-ul li span' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],	
			),
			'pri_features_spacing' => array(
				'label' => __pl('space_between'),
				'type' => 'slider',
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-ul > :not(:last-child) ' => 'margin-bottom:{{val}}px'],
			),
			'features_padding' => array(
				'label' => __pl('padding'),
				'type' => 'padding',
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-pricing-features' => 'padding: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px !important;'],
			),
		],
		'additional_info' => [						
			'additional_info' => array(
				'type' => 'textarea',
				'label' => __pl('additional_info'),
				'default' => 'Some Additional Information',
				'edit' => '.pagelayer-pricing-additional',
			),
			'additional_text_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-pricing-additional' => 'color:{{val}}'],
			),
			'addition_text_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-additional' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],	
			),
		],
		'button_style' => [
			'price_button' => array(
				'type' => 'checkbox',
				'label' => __pl('show_btn'),
				'default' => 'true',
			),		
			'button_type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'pagelayer-btn-danger',
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
				'req' => array(
					'price_button' => 'true'
				),
			),
			'button_size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-mini',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),					
					'pagelayer-btn-custom' => __pl('custom'),					
				),
				'req' => array(
					'price_button' => 'true'
				)
			),
			'button_size_custom' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-pricing-btn' => 'padding:{{val[0]}}px {{val[1]}}px;'],
				'req' => array(
					'button_size' => 'pagelayer-btn-custom'
				)
			),
			'button_url' => array(
				'type' => 'link',
				'label' => __pl('btn_url_label'),
				'selector' => '.pagelayer-pricing-btn',
				'np' => 1,
				'req' => array(
					'price_button' => 'true'
				),
			),
			'button_text' => array(
				'type' => 'text',
				'label' => __pl('button_text_label'),
				'np' => 1,
				'default' => 'Buy This Plan',
				'edit' => '.pagelayer-pricing-btn',
				'req' => array(
					'price_button' => 'true'
				),
			),
			'btn_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-pricing-btn' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
			),
			'btn_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'min' => '0',
				'max' => '200',
				'screen' => 1,
				'default' => '10',
				'css' => ['{{element}} .pagelayer-pricing-btn' => 'margin-top: {{val}}px;'],
				'req' => [
					'price_button' => 'true',
				]
			),
			'btn_state' => array(
				'type' => 'radio',
				'label' => __pl('button_state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('Normal'),
					'hover' => __pl('Hover'),
				),
				'req' => array(
					'price_button' => 'true',
					'button_type' => 'pagelayer-btn-custom'
				),
			),
			'button_color' => array(
				'type' => 'color',
				'label' => __pl('iconbox_button_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-btn' => 'color:{{val}};'],
				'req' => [
					'price_button' => 'true',
					'button_type' => 'pagelayer-btn-custom',
				],
				'show' => ['btn_state' => 'normal']
			),
			'button_bg_color' => array(
				'type' => 'color',
				'label' => __pl('button_bg_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-pricing-btn' => 'background-color:{{val}};'],
				'req' => [
					'button_type' => 'pagelayer-btn-custom',
				],
				'show' => ['btn_state' => 'normal']
			),
			'price_btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-pricing-btn' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['btn_state' => 'normal']
			),
			'price_btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-pricing-btn' => 'border-color: {{val}};'],
				'req' => ['!price_btn_border_type' => ''],
				'show' => ['btn_state' => 'normal']
			),
			'price_btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' =>  ['{{element}} .pagelayer-pricing-btn' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!price_btn_border_type' => ''],
				'show' => ['btn_state' => 'normal']
			),
			'price_btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' =>  ['{{element}} .pagelayer-pricing-btn' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => ['btn_state' => 'normal']
			),
			'pricing_btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-pricing-btn' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => ['btn_state' => 'hover'],
			),
			'pricing_btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('iconbox_button_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-pricing-btn:hover' => 'color:{{val}};'],
				'show' => ['btn_state' => 'hover'],
			),
			'pricing_btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('button_bg_color_hover'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-pricing-btn:hover' => 'background-color:{{val}};'],
				'show' => ['btn_state' => 'hover'],
			),
			'price_btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-pricing-btn:hover' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['btn_state' => 'hover']
			),
			'price_btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-pricing-btn:hover' => 'border-color: {{val}};'],
				'req' => ['!price_btn_border_type_hover' => ''],
				'show' => ['btn_state' => 'hover']
			),
			'price_btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' =>  ['{{element}} .pagelayer-pricing-btn:hover' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!price_btn_border_type_hover' => ''],
				'show' => ['btn_state' => 'hover']
			),
			'price_btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' =>  ['{{element}} .pagelayer-pricing-btn:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => ['btn_state' => 'hover']
			),
		],
		'ribbon_style' => [
			'ribbon' => array(
				'type' => 'checkbox',
				'label' => __pl('ribbion_display'),
			),
			'ribbon_text' => array(
				'type' => 'text',
				'label' => __pl('ribbion_text'),
				'default' => 'Popular',
				'css' => ['{{element}} .pagelayer-pricing-ribbon'=> 'display:inline-block;'],
				'req' => array(
					'ribbon' => 'true'
				)
			),
			'ribbon_text_size' => array(
				'type' => 'typography',
				'label' => __pl('ribbon_text_size'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-pricing-ribbon' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => array(
					'ribbon' => 'true'
				)
			),
			'ribbon_text_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-pricing-ribbon' => 'color:{{val}}'],
				'req' => array(
					'ribbon' => 'true'
				)
			),
			'ribbon_background' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'default' => '#fd6129',
				'css' => ['{{element}} .pagelayer-pricing-ribbon' => 'background-color:{{val}}'],
				'req' => array(
					'ribbon' => 'true'
				)
			),
		],
		'styles' => [
			'subtitle_style' => __pl('subtitle'),
			'header_style' => __pl('header_style'),			
			'currency_style' => __pl('currency_style'),
			'price_style' => __pl('price_style'),			
			'period_style' => __pl('period_style'),			
			'feature_style' => __pl('feature_style'),
			'button_style' => __pl('button_style'),
			'additional_info' => __pl('addition_info'),
			'ribbon_style' => __pl('ribbon_style'),
		],
   	)
);

// Social Share Group
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_share_grp', array(
		'name' => __pl('social_share'),
		'group' => 'button',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('social_share_grp'),
				'sc' => PAGELAYER_SC_PREFIX.'_share',
				'item_label' => array(
					'default' => __pl('share_item'),
					'param' => 'icon'
				),
				'count' => 3,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('share_name'))),
			),
		),
		'layout_style' => [
			'type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				//'css' => ['{{element}} .pagelayer-share-content:hover' => 'border-style: {{val}}'],
				'addClass' => 'pagelayer-share-type-{{val}}',
				'default' => 'icon-label',
				'list' => [
					'icon' => __pl('icon'),
					'icon-label' => __pl('icon-label'),
					'label' => __pl('label'),
				],
			),
			'count' => array(
				'type' => 'radio',
				'label' => __pl('count_in_line'),
				'default' => '',
				'screen' => 1,
				'css' => ['{{element}} > div' => 'width: calc(100% / {{val}});'],
				'list' => array(
					'' => __pl('auto'),
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				),
				'req' => array(
					'!type' => 'icon'
				)
			),
			'bg_shape' => array(
				'type' => 'select',
				'label' => __pl('icon_background_shape'),
				'np' => 1,
				'default' => 'pagelayer-social-shape-square',
				//'css' => ['{{element}} i' => 'height:1em; width:1em; position: absolute; top: 50%; left: 50%; transform: translate(-50% , -50%);',
				//'{{element}} .pagelayer-icon-holder' => 'position: relative; min-height: 1em; min-width: 1em;'],
				'addClass' => '{{val}}',
				'list' => array(
					'pagelayer-social-bg-none' => __pl('icon_shape_none'),
					'pagelayer-social-shape-circle' => __pl('icon_shape_circle'),
					'pagelayer-social-shape-square' => __pl('icon_shape_square'),
					'pagelayer-social-shape-rounded' => __pl('icon_shape_rounded'),
					'pagelayer-social-shape-boxed' => __pl('icon_shape_boxed'),
					'pagelayer-social-outline-border' => __pl('icon_shape_outline')
				),
			),
			/* 'bg_size' => array(
				'type' => 'spinner',
				'label' => __pl('social_grp_size_label'),
				'css' => ['{{element}} .pagelayer-icon-holder' => 'height: calc(1em + {{val}}px); width: calc(1em + {{val}}px);'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 10,
				'req' => array(
					'!bg_shape' => ''
				)
			), */
			'align' => array(
				'type' => 'radio',
				'label' => __pl('obj_align_label'),
				'np' => 1,
				'default' => 'center',
				'css' => 'text-align: {{val}};',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
			/* 'group_layout' => array(
				'type' => 'radio',
				'label' => __pl('layout'),
				'css' => ['{{element}} > div' => 'display: inline-block;'],
				'default' => 'horizontal',
				'list' => array(
					'' => __pl('vertical'),
					'horizontal' => __pl('horizontal')
				)
			), */
			'vspace' => array(
				'type' => 'spinner',
				'label' => __pl('space_between_col'),
				'css' => ['{{element}} .pagelayer-share' => 'padding-top: {{val}}px; padding-bottom: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 2,
				'screen' => 1,
				/* 'req' => array(
					'group_layout' => 'horizontal'
				) */
			),
			'hspace' => array(
				'type' => 'spinner',
				'label' => __pl('space_between_row'),
				'css' => ['{{element}} .pagelayer-share' => 'padding-left: {{val}}px; padding-right: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 2,
				'screen' => 1,
				/* 'req' => array(
					'group_layout' => ''
				) */
			),
			'height' => array(
				'type' => 'slider',
				'label' => __pl('height'),
				'css' => ['{{element}} .pagelayer-share-content' => 'min-height: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 35,
				'screen' => 1,
			),
			/* 'width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'css' => ['{{element}} .pagelayer-share-content' => 'min-width: {{val}}px;'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
			), */
		],
		'icon_style' => [
			'icon_size' => array(
				'type' => 'spinner',
				'label' => __pl('social_grp_size_label'),
				'css' => ['{{element}} i' => 'font-size: {{val}}px;',
					'{{element}} .pagelayer-icon-holder' => 'font-size: {{val}}px;'],
				'min' => 1,
				'step' => 1,
				'max' => 500,
				'default' => 25,
				'screen' => 1,
			),
			'icon_space' => array(
				'type' => 'spinner',
				'label' => __pl('space_around'),
				'css' => ['{{element}} .pagelayer-icon-holder' => 'padding-left: calc(0.5em + {{val}}px); padding-right: calc(0.5em + {{val}}px);'],
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
			),
			'color_scheme' => array(
				'type' => 'select',
				'label' => __pl('color'),
				'default' => 'pagelayer-scheme-official',
				'addClass' => '{{val}}',
				'list' => array(
					'' => __pl('custom'),
					'pagelayer-scheme-official' => __pl('official')
				)
			),
			'social_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'icon_color' => array(
				'type' => 'color',
				'label' => __pl('social_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-share-buttons i' => 'color: {{val}} !important;'],
				'req' => array(
					'color_scheme' => ''
				),
				'show' => ['social_hover' => '']
			),
			'icon_bg_color' => array(
				'type' => 'color',
				'label' => __pl('social_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-share-content' => 'background-color: {{val}} !important;'],
				'req' => array(
					'!bg_shape' => '',
					'color_scheme' => ''
				),
				'show' => ['social_hover' => '']
			),
			'icon_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-share-content' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['social_hover' => '']
			),
			'icon_border_color' => array(
				'type' => 'color',
				'label' => __pl('service_box_icon_border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-share-content' => 'border-color: {{val}} !important;'],
				'req' => array(
					'!icon_border_type' => '',
					'color_scheme' => ''
				),
				'show' => ['social_hover' => '']
			),
			'icon_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-share-content' => 'border-top-width: {{val[0]}}px !important; border-right-width: {{val[1]}}px !important; border-bottom-width: {{val[2]}}px !important; border-left-width: {{val[3]}}px !important'],
				'req' => [
					'!icon_border_type' => ''
				],
				'show' => ['social_hover' => '']
			),
			'icon_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-share-content' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!icon_border_type' => ''
				),
				'show' => ['social_hover' => '']
			),
			'social_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-share-content' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;',
				'{{element}} .pagelayer-share-content i' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;'],
				'show' => array(
					'social_hover' => 'hover'
				),
			),
			'icon_color_hover' => array(
				'type' => 'color',
				'label' => __pl('social_color_label'),
				'css' => ['{{element}} .pagelayer-share-buttons:hover i' => 'color: {{val}} !important;'],
				'req' => array(
					'color_scheme' => ''
				),
				'show' => ['social_hover' => 'hover']
			),
			'icon_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('social_bg_color_label'),
				'css' => ['{{element}} .pagelayer-share-content:hover' => 'background-color: {{val}} !important;'],
				'req' => array(
					'!bg_shape' => '',
					'color_scheme' => ''
				),
				'show' => ['social_hover' => 'hover']
			),
			'icon_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-share-content:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['social_hover' => 'hover']
			),
			'icon_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-share-content:hover' => 'border-color: {{val}} !important;'],
				'req' => array(
					'!icon_border_type_hover' => '',
					'color_scheme' => ''
				),
				'show' => ['social_hover' => 'hover']
			),
			'icon_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-share-content:hover' => 'border-top-width: {{val[0]}}px !important; border-right-width: {{val[1]}}px !important; border-bottom-width: {{val[2]}}px !important; border-left-width: {{val[3]}}px !important'],
				'req' => [
					'!icon_border_type_hover' => ''
				],
				'show' => ['social_hover' => 'hover']
			),
			'icon_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-share-content:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!icon_border_type_hover' => ''
				),
				'show' => ['social_hover' => 'hover']
			),
		],
		'label_style' => [
			'hide_name' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_name'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-icon-name span' => 'display: none;'],
			),
			'name_typo' => array(
				'type' => 'typography',
				'label' => __pl('quote_content_typo'),
				'default' => ',15,,,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-icon-name' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'label_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'label_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-icon-name-span' => 'color: {{val}} !important;'],
				'show' => ['label_hover' => '']
			),
			'label_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-icon-name-span:hover' => 'color: {{val}} !important;'],
				'show' => ['label_hover' => 'hover']
			)
		],
		'styles' => [
			'layout_style' => __pl('layout_style'),
			'icon_style' => __pl('icon_style'),
			'label_style' => __pl('label_style'),
		]
	)
);

// Social Share Button
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_share', array(
		'name' => __pl('icon'),
		'group' => 'button',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_share_grp'],
		'html' => '
				<a class="pagelayer-ele-link" title="{{icon}}" href="{{social_url}}">
					<div class="pagelayer-share-content">
						<div class="pagelayer-icon-holder pagelayer-share-buttons">
							<i class="pagelayer-social-fa {{icon}}"></i>
						</div>
						<div class="pagelayer-icon-name">
							<span class="pagelayer-icon-name-span">{{icon_label}}</span>
						</div>
					</div>
				</a>',
		'params' => array(
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('list_icon_label'),
				'default' => 'fab fa-facebook-square',
				'addAttr' => ['{{element}} .pagelayer-share-content' => 'data-icon="{{icon}}"'],
				'list' => ['facebook', 'facebook-f', 'facebook-square', 'facebook-messenger', 'twitter', 'twitter-square','x-twitter', 'x-twitter-square', 'google-plus', 'google-plus-square', 'google-plus-g', 'instagram', 'linkedin', 'linkedin-in', 'pinterest', 'pinterest-p', 'pinterest-square', 'reddit-alien', 'reddit-square', 'reddit', 'skype', 'stumbleupon', 'stumbleupon-circle', 'telegram', 'telegram-plane', 'tumblr', 'tumblr-square', 'vk', 'weibo', 'whatsapp', 'whatsapp-square', 'wordpress', 'wordpress-simple', 'xing', 'xing-square', 'delicious', 'dribbble', 'dribbble-square', 'snapchat-ghost','get-pocket', 'envelope', 'envelope-open', 'envelope-o'],
			),
			'custom_profile' => array(
				'type' => 'text',
				'label' => __pl('custom_profile'),
				'req' => ['icon' => ['fab fa-instagram', 'fab fa-dribbble', 'fab fa-dribbble-square']]
			),
			'text' => array(
				'type' => 'text',
				'label' => __pl('custom_label_text'),
				'edit' => '.pagelayer-icon-name-span',
				'np' => 1,
			),
			'target' => array(
				'label' => __pl('open_link_in_new_window'),
				'type' => 'checkbox',
				'addAttr' => ['{{element}} a' => 'target="_blank"'],
				'np' => 1,
			),
		)
	)
);

// Animated heading
pagelayer_freemium_shortcode(PAGELAYER_SC_PREFIX.'_anim_heading', array(
		'name' => __pl('animated_heading'),
		'group' => 'text',
		'innerHTML' => 'text',
		'html' =>  '<a if-ext="{{link}}" href="{{link}}">
			<div class="pagelayer-aheading-holder {{rotate_req}} {{animations}}">
				<div if="{{text}}" class="pagelayer-animated-heading pagelayer-animated-title">{{text}}</div>&nbsp;{{rotate_html}}
				<div if="{{after_text}}" class="pagelayer-animated-heading">{{after_text}}</div>
			<div class="pagelayer-blobs_1"></div><div class="pagelayer-blobs_2"></div><div class="pagelayer-blobs_3"></div><div class="pagelayer-blobs_4"></div><div class="pagelayer-blobs_5"></div><div class="pagelayer-blobs_6"></div><div class="pagelayer-blobs_7"></div>
			</div>
		</a>',
		'params' => array(
			'type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'effects',
				'addClass' => 'pagelayer-heading-{{val}}',
				'list' => array(
					'effects' => __pl('effects'),
					'rotating' => __pl('rotating'),
				),
			),
			'effects' => array(
				'type' => 'select',
				'label' => __pl('effects'),
				'default' => 'blobs',
				'addClass' => 'pagelayer-hEffect-{{val}}',
				'list' => array(
					'none' => __pl('none'),
					'blobs' => __pl('blobs'),
					'stroke' => __pl('stroke'),
					'shadow' => __pl('shadow'),
				),
				'req' => [ 'type' => 'effects' ]
			),
			'animations' => array(
				'type' => 'select',
				'label' => __pl('effects'),
				'default' => 'pagelayer-aheading-rotate1',
				'list' => array(
					'pagelayer-aheading-rotate1' => __pl('rotate-1'),
					'pagelayer-aheading-rotate2' => __pl('rotate-2'),
					'pagelayer-aheading-rotate3' => __pl('rotate-3'),
					'pagelayer-aheading-loading-bar' => __pl('loading-bar'),
					'pagelayer-aheading-slide' => __pl('slide'),
					'pagelayer-aheading-clip' => __pl('clip'),
					'pagelayer-aheading-zoom' => __pl('zoom'),
					'pagelayer-aheading-scale' => __pl('scale'),
					'pagelayer-aheading-push' => __pl('push'),
				),
				'req' => [ 'type' => 'rotating' ]
			),
			'hide_clip' => array(
				'label' => __pl('clip_hide'),
				'type' => 'checkbox',
				'css' => ['{{element}} .pagelayer-words-wrapper:after' => 'display:none'],
				'req' => [ 'animations' => 'pagelayer-aheading-clip' ]
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'np' => 1,
				'default' => 'center',
				'screen' => 1,
				'css' => 'text-align: {{val}};',
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				)
			),
		),
		'title_style' => [
			'text' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'np' => 1,
				'default' => __pl('animated_heading'),
				'edit' => '.pagelayer-animated-title',
				'e' => [ 'v', 'f', 'r']
			),
			'rotate_text' => array(
				'type' => 'textarea',
				'label' => __pl('rotate_text'),
				'np' => 1,
				'default' => __pl('rotate_default'),
				'req' => [ 'type' => 'rotating' ]
			),
			'after_text' => array(
				'type' => 'text',
				'label' => __pl('after_text'),
				'np' => 1,
				'req' => [ 'type' => 'rotating' ]
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',40,,700,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-animated-heading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'color_type' => array(
				'type' => 'radio',
				'label' => __pl(''),
				'np' => 1,
				'default' => 'color',
				'list' => array(
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
				),
			),
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#A236FA',
				'css' => [
					'{{element}} .pagelayer-animated-heading' => 'background:{{val}}; -webkit-background-clip: text;',
					'{{element}}.pagelayer-hEffect-shadow .pagelayer-animated-heading' => 'color:{{val}};',
					'{{element}} .pagelayer-rotating-text *' => 'background:{{val}};  -webkit-background-clip: text;',
					'{{element}} .pagelayer-aheading-loading-bar .pagelayer-words-wrapper:after' => 'background:{{val}};',
					'{{element}} .pagelayer-aheading-clip .pagelayer-words-wrapper:after' => 'background:{{val}};'
				],
				'req' => ['color_type' => 'color']
			),
			'gradient' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',
				'css' => [
					'{{element}} .pagelayer-animated-heading' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%); -webkit-background-clip: text;',
					'{{element}} .pagelayer-rotating-text *' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%); -webkit-background-clip: text;',
					'{{element}} .pagelayer-aheading-loading-bar .pagelayer-words-wrapper:after' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);',
					'{{element}} .pagelayer-aheading-clip .pagelayer-words-wrapper:after' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'
				],
				'req' => [
					'color_type' => 'gradient',
					'!effects' => 'shadow'
				]
			),
		], 
		'misc_style' => [
			'blob_1' => array(
				'type' => 'color',
				'label' => __pl('blob_1_color'),
				'default' => '#ff1493',
				'css' => ['{{element}} .pagelayer-blobs_1' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_2' => array(
				'type' => 'color',
				'label' => __pl('blob_2_color'),
				'default' => '#ff4500',
				'css' => ['{{element}} .pagelayer-blobs_2' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_3' => array(
				'type' => 'color',
				'label' => __pl('blob_3_color'),
				'default' => '#00ff00',
				'css' => ['{{element}} .pagelayer-blobs_3' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_4' => array(
				'type' => 'color',
				'label' => __pl('blob_4_color'),
				'default' => '#ff0000',
				'css' => ['{{element}} .pagelayer-blobs_4' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_5' => array(
				'type' => 'color',
				'label' => __pl('blob_5_color'),
				'default' => '#ffff00',
				'css' => ['{{element}} .pagelayer-blobs_5' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_6' => array(
				'type' => 'color',
				'label' => __pl('blob_6_color'),
				'default' => '#00ffff',
				'css' => ['{{element}} .pagelayer-blobs_6' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'blob_7' => array(
				'type' => 'color',
				'label' => __pl('blob_7_color'),
				'default' => '#ff8c00',
				'css' => ['{{element}} .pagelayer-blobs_7' => 'background:{{val}}'],
				'req' => [
					'effects' => 'blobs',
					'type' => 'effects'
				]
			),
			'stroke' => array(
				'type' => 'slider',
				'label' => __pl('stroke_thickness'),
				'min' => 1,
				'step' => 1,
				'max' => 50,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-animated-heading' => '-webkit-text-stroke: {{val}}px transparent;'],
				'req' => [ 'effects' => 'stroke' ]
			),
			'stroke_color' => array(
				'type' => 'color',
				'label' => __pl('stroke_color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-animated-heading' => 'color:{{val}}'],
				'req' => [ 'effects' => 'stroke' ]
			),
			'shadow_color' => array(
				'type' => 'shadow',
				'label' => __pl('shadow'),
				'default' => '2,2,,#999999',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-animated-heading' => 'text-shadow: {{val[0]}}px {{val[1]}}px #fff, calc({{val[0]}}px * 2) calc({{val[1]}}px * 2) {{val[3]}};'],
				'req' => [ 'type' => 'effects', 'effects' => 'shadow' ]
			),
			'rotate_color' => array(
				'type' => 'color',
				'label' => __pl('rotate_color'),
				'css' => [
					'{{element}} .pagelayer-rotating-text *' => 'background:{{val}}; -webkit-background-clip: text;',
					'{{element}} .pagelayer-aheading-loading-bar .pagelayer-words-wrapper:after' => 'background:{{val}};',
					'{{element}} .pagelayer-aheading-clip .pagelayer-words-wrapper:after' => 'background:{{val}};'
				],
				'req' => ['type' => 'rotating']
			),
		],
		'styles' => [
			'title_style' => __pl('title_style'),
			'misc_style' => __pl('misc_style'),
		]
	)
);
main/custom_fonts.php000064400000022072151526520770010741 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// custom_fonts.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// This function will handle the custom fonts pages in Pagelayer 
add_action('init', 'pagelayer_custom_fonts_page', 9999);
function pagelayer_custom_fonts_page() {
	
	global $pagelayer;

	// Custom fonts supports
	$supports = array(
		'title', // post title
	);
	
	// Add custom fonts lables
	$labels = array(
		'name' => _x('Custom Fonts', 'plural'),
		'singular_name' => _x('Custom Font', 'singular'),
		'menu_name' => _x('Custom Fonts', 'admin menu'),
		'name_admin_bar' => _x('Custom Fonts', 'admin bar'),
		'add_new' => _x('Add New', 'Add'),
		'add_new_item' => __('Add New'),
		'new_item' => __('New Font'),
		'edit_item' => __('Edit Font'),
		'view_item' => __('View Font'),
		'all_items' => __('All Fonts'),
		'search_items' => __('Search Fonts'),
		'not_found' => __('No Pagelayer custom fonts found'),
	);
		
	$args = array(
		'supports' => $supports,
		'labels' => $labels,
		'public' => false,
		'show_in_menu' => false,		
		'publicly_queryable' => true,  
		'show_ui' => true, 
		'exclude_from_search' => true,  
		'show_in_nav_menus' => false,  
		'has_archive' => false,  
		'rewrite' => false, 	
	);
	
	// Register custom post type
	register_post_type(PAGELAYER_FONT_POST_TYPE, $args);
	remove_post_type_support( PAGELAYER_FONT_POST_TYPE, 'editor');	
}

// Removing extra columns
add_filter( 'manage_'.PAGELAYER_FONT_POST_TYPE.'_posts_columns', 'pagelayer_add_custom_columns' );
function pagelayer_add_custom_columns($columns){
	
	unset( $columns['author'] );
	unset( $columns['date']   );
	 
	$columns['pl-preview'] = __('Preview'); 
	 
	return $columns;
}

// Adding preview column data
add_action( 'manage_'.PAGELAYER_FONT_POST_TYPE.'_posts_custom_column' , 'pagelayer_add_custom_columns_data', 10, 2 );
function pagelayer_add_custom_columns_data( $column, $post_id ){
	if($column == __('pl-preview')){
		$font_link = get_post_meta( $post_id, 'pagelayer_font_link', true );		
		echo '<style>@font-face { font-family: "'.get_the_title($post_id).'"; src: url("'.wp_unslash( $font_link ).'"); }</style>';
		echo '<span style="font-family:\''.get_the_title($post_id).'\'; font-size:16px" >Preview of the CUSTOM font</span>';
	}
}

// Removing row actions
add_filter( 'post_row_actions', 'pagelayer_remove_row_actions', 10, 1 );
function pagelayer_remove_row_actions( $actions ){
	if( get_post_type() === PAGELAYER_FONT_POST_TYPE ){
		foreach($actions as $action => $html){
			if($action == 'edit' || $action == 'trash' || $action == 'clone' || $action == 'untrash' || $action == 'delete'){
				continue;
			}else{
				unset($actions[$action]);
			}
		}
	}
	return $actions;
}

// Removing Screen options
add_filter('screen_options_show_screen', 'pagelayer_remove_screen_options', 1, 1);
function pagelayer_remove_screen_options($show_screen) { 
	if(get_post_type() == PAGELAYER_FONT_POST_TYPE) {
		return false;
	}
	return $show_screen; 
}

// Removing all other metaboxes.
add_action('admin_init', function() {pagelayer_remove_all_metaboxes(PAGELAYER_FONT_POST_TYPE);});
function pagelayer_remove_all_metaboxes($type) {
	add_filter("get_user_option_meta-box-order_{$type}", function() use($type) {
		global $wp_meta_boxes;
		$publishbox = $wp_meta_boxes[$type]['side']['core']['submitdiv'];
		$fontsBox = $wp_meta_boxes[$type]['normal']['default']['pl-fonts-link-box'];
		$wp_meta_boxes[$type] = array(	  
							'side' => array(
								'core' => array(
									'submitdiv' => $publishbox
								)
							),
							'normal' => array(
								'default' => array(
									'pl-fonts-link-box' => $fontsBox
									)
								)
							);
		return array();
	}, PHP_INT_MAX);
} 

// Hiding extra options of publish metabox
add_action( 'admin_head', 'pagelayer_hide_publish_options' );
function pagelayer_hide_publish_options() {
	if(get_post_type() == PAGELAYER_FONT_POST_TYPE){
		echo '<style>.submitbox #minor-publishing{ display: none; }</style>';		
	}
}

// Adding source metabox
add_action('add_meta_boxes', 'pagelayer_add_meta_box');
function pagelayer_add_meta_box(){
	add_meta_box( 'pl-fonts-link-box', _x('Source', 'font source'), 'pagelayer_font_link_metabox', PAGELAYER_FONT_POST_TYPE, 'normal', 'default', null);
}

function pagelayer_font_link_metabox($object){
	wp_enqueue_media();
	wp_nonce_field('pagelayer-font-post', 'pagelayer');
	$link = get_post_meta($object->ID, 'pagelayer_font_link', true);
	?>
	<div>
		<table width="100%">
			<tr>
				<th valign="top" style="text-align:right; padding-right:20px; width:20%;"><?php echo __('Font File');?> : </th>
				<td>
					<div>
						<input type="text" class="pagelayer_font_input" id="pl_font_link" name="pagelayer_font_link" onclick="fontUpload(event)" style="width:70%" value="<?php echo wp_unslash($link); ?>" autocomplete="false" readonly="true"/>
						<button type="button" class="button button-light" onclick="fontUpload(event)">Upload Font</button>
					</div>
				</td>
			</tr>
		</table>
	</div>
	<script>
	
	window.onload = function(){
		jQuery('#submitdiv').on('click', '#publish', function(e){
			
			if(jQuery('#title').val()==''){
				alert('Please insert title of the page');
				return false;
			}else{
				if(jQuery('#pl_font_link').val()==''){
					alert('Please insert link of the font');				
					return false;
				}else{
					return true;					
				}				
			}
			
		});
	}
	
	function fontUpload(e){
		var allowed_mime_type = ['.ttf', '.woff', '.woff2','.otf'];
		var allClear = false;
		var custom_uploader = wp.media({
			title: 'Upload Font',
			library : {
				type : 'font'
			},
			button: {
				text: 'Select Font' // button label text
			},
			multiple: false
		}).on('select', function() { // it also has "open" and "close" events
			var attachment = custom_uploader.state().get('selection').first().toJSON();
			for(var i=0; i<allowed_mime_type.length; i++){
				if(attachment['filename'].indexOf(allowed_mime_type[i]) != -1){
					allClear=true;				
					break;
				}
			}
			if(allClear){
				jQuery('.pagelayer_font_input').val(attachment['url']);
			}else{
				alert('Kindly insert a correct font file. Allowed font file types are (otf|ttf|woff|woff2)');
			}
		}).open();
	}
	</script>
	
<?php }

// Saving source metabox content
add_action('save_post', 'pagelayer_save_source_meta_box', 10, 3);
function pagelayer_save_source_meta_box($post_id, $post, $update){

	if(PAGELAYER_FONT_POST_TYPE != $post->post_type){
		return $post_id;
	}
	
	// DO an admin referrer check
	if(!empty($_POST)){
		check_admin_referer('pagelayer-font-post', 'pagelayer');
	}else{
		return $post_id;
	}

	$meta_box_link_value = '';

	if(isset($_POST['pagelayer_font_link'])){
		$meta_box_link_value  = wp_unslash($_POST['pagelayer_font_link']);
	}   

	update_post_meta($post_id, 'pagelayer_font_link', $meta_box_link_value );
	
}

// 	Adding custom mime type
add_filter('upload_mimes', 'pagelayer_custom_mime_types', 1, 1);	
function pagelayer_custom_mime_types($mime_types = array()){
	global $pagelayer;
	
	forEach($pagelayer->allowed_mime_type as $key => $value){
		$mime_types[$key]=$value;		
	}
	return $mime_types;
}

// Adding custom mime type
add_filter( 'mime_types', 'pagelayer_mime_types' );
function pagelayer_mime_types($default_mimes){
	global $pagelayer;
	
	forEach($pagelayer->allowed_mime_type as $key => $value){
		$default_mimes[$key]=$value;		
	}
	
	return $default_mimes;
}

// Adding custom mime type
add_filter( 'wp_check_filetype_and_ext', 'pagelayer_check_filetype_and_ext', 10, 5 );
function pagelayer_check_filetype_and_ext( $types, $file, $filename, $mimes, $real_mime = false ){	
	global $pagelayer;
	
	forEach($pagelayer->allowed_mime_type as $key => $value){
		if ( false !== strpos( $filename, '.'.$key ) ) {
			$types['ext'] = $key;
			$types['type'] = $value;
		}		
	}
	
	return $types;
}

// Removing notification.
add_filter( 'post_updated_messages', 'pagelayer_delete_notification' );
function pagelayer_delete_notification( $messages ){
	if(get_post_type() == PAGELAYER_FONT_POST_TYPE){
		unset($messages['post'][1]);
		unset($messages['post'][6]);
		return $messages;		
	}
}

main/download_google_fonts.php000064400000007060151526520770012572 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// download_google_fonts.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Download google fonts
function pagelayer_pro_download_google_fonts($url){
	global $wp_filesystem;
	
	if (!defined('FS_METHOD')) { 
		define( 'FS_METHOD', 'direct' );
	}

	$uploads_dir = wp_upload_dir();
	$font_url = $uploads_dir['baseurl'].'/pl-google-fonts';
	$font_dir = $uploads_dir['basedir'].'/pl-google-fonts';
	
	// Find hash of current url
	$url_md5 = md5($url);
	$local_path = $font_dir.'/'.$url_md5.'.css';

	if(file_exists( $local_path ) ){
		return $local_path;
	}

	// Load Wp filesystem class
	if ( ! function_exists( 'WP_Filesystem' ) ) {
		$file_path = ABSPATH . 'site-admin/includes/file.php';
		$file_path = file_exists($file_path) ? $file_path : ABSPATH . 'wp-admin/includes/file.php';
		include $file_path;	
	}

	WP_Filesystem();

	// Is google fonts directory exists?
	if( !file_exists( $font_dir ) ){		
		wp_mkdir_p( $font_dir );
	}

	//verify fonts upload directory exists or not
	$fonts_dir = $font_dir.'/fonts';

	if( !file_exists( $fonts_dir ) ){		
		wp_mkdir_p($fonts_dir);
	}
	
	// Fetch stylesheet
	$useragent = array( 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36');

	$response = wp_remote_get($url, $useragent);
	$response_code = wp_remote_retrieve_response_code($response);

	if ( is_wp_error( $response ) || $response_code !== 200 ) {
		return false;
	}
	
	$remote_file = wp_remote_retrieve_body($response);
	
	// Collect google fonts urls
	preg_match_all( '/url\(.*?\)/i', $remote_file, $font_links );

	if(!isset( $font_links[0] ) || count( $font_links[0] ) < 1 ) {
		return false;
	}

	foreach( $font_links[0] as $key => $_fontlink ){

		$download_url = str_ireplace( array('url(',')'), '', $_fontlink );
		
		if(empty($download_url)){
			continue;
		}

		$parse_url = parse_url($download_url);
		$font_name = basename($parse_url['path']);
		
		$local_file = $font_dir.'/fonts/'.$font_name;
		$_local_file = './fonts/'.$font_name;
		
		if( empty( $font_name ) || strpos($font_name, '.woff2') === false ){
			continue;
		}

		// Download font files
		if(!file_exists( $local_file ) ){

			$tmp_file = download_url(  $download_url );

			if(is_wp_error( $tmp_file )){
				continue;
			}

			$wp_filesystem->copy( $tmp_file, $local_file );
			$wp_filesystem->delete( $tmp_file );
		
		}

		// Update font links
		$remote_file = str_replace( $download_url, $_local_file, $remote_file );

	}
	
	// Save local stylesheet
	$wp_filesystem->put_contents( $local_path, $remote_file );
	
	return $local_path;
}main/premium.php000064400001536722151526520770007711 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// premium.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:       23rd Jan 2017
// Time:       23:00 hrs
// Site:       http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

global $pagelayer;

// Image Hotspot
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_image_hotspot', array(
		'name' => __pl('Image Hotspot'),
		'group' => 'image',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-icon-holder',
		'html' => '<div class="pagelayer-image-hotspot-holder">
			<img class="pagelayer-img" src="{{{img-url}}}" title="{{{img-title}}}" alt="{{{img-alt}}}" />
			<div class="pagelayer-icon-holder pagelayer-hotspots-{{common_tip_show}} pagelayer-{{common_tip_theme}}"></div>
		</div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('hotspots'),
				'sc' => PAGELAYER_SC_PREFIX.'_hotspot',
				'item_label' => array(
					'default' => __pl('hotspot'),
					'param' => 'title',
				),
				'count' => 1,
				'text' => __pl('Add New Hotspot'),
			),
			'img' => array(
				'type' => 'image',
				'label' => __pl('Main Image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'desc' => __pl('Choose an image from Media Library'),
				'css' => ['{{element}} .pagelayer-icon-holder' => 'position:absolute; top:0; left:0; height:100%; width:100%;', '{{element}} .pagelayer-icon-holder .pagelayer-ele-wrap' => 'display: contents', '{{element}} .pagelayer-image-hotspot-holder' => 'position:relative'],
			),
			'icon_anim_hover' => array(
				'type' => 'select',
				'label' => __pl('icon_animation'),
				'list' => [
					'' => __pl('none'),
					'grow' => __pl('Grow'),
					'shrink' => __pl('Shrink'),
					'pulse' => __pl('Pulse'),
					'pulse-grow' => __pl('Pulse Grow'),
					'pulse-shrink' => __pl('Pulse Shrink'),
					'push' => __pl('Push'),
					'pop' => __pl('Pop'),
					'buzz' => __pl('Buzz'),
					'buzz-out' => __pl('Buzz Out'),
					'float' => __pl('Float'),
					'sink' => __pl('Sink'),
					'bob' => __pl('Bob'),
					'hang' => __pl('Hang'),
					'bounce-in' => __pl('Bounce In'),
					'bounce-out' => __pl('Bounce Out'),
					'rotate' => __pl('Rotate'),
					'grow-rotate' => __pl('Grow Rotate'),
					'skew-forward' => __pl('Skew Forward'),
					'skew-backward' => __pl('Skew Backward'),
					'wobble-vertical' => __pl('Wobble Vertical'),
					'wobble-horizontal' => __pl('Wobble Horizontal'),
					'wobble-bottom-to-right' => __pl('Wobble Bottom To Right'),
					'wobble-top-to-right' => __pl('Wobble Top To Right'),
					'wobble-top' => __pl('Wobble Top'),
					'wobble-bottom' => __pl('Wobble Bottom'),
					'wobble-skew' => __pl('Wobble Skew'),
				],
				'addAttr' => ['{{element}} .pagelayer-icon-holder' => 'pagelayer-animation="{{icon_anim_hover}}"'],
			),
			/* 'common_hotspot_color' => array(
				'type' => 'color',
				'label' => __pl('Hotspot Theme'),
				'default' => 'mp-text-color-red',
				'list' => array(
					'mp-text-color-red' => __pl('red'),
					'mp-text-color-dark-grey' => __pl('grey'),
					'mp-text-color-black' => __pl('black'),
					'custom' => __pl('custom'),
				),
			),
			'common_hotspot_custom_color' => array(
				'type' => 'color',
				'label' => __pl('Hotspot Color'),
				'default' => '#e25441',
				'req' => array(
					'common_hotspot_color' => 'custom'
				)
			),
			'common_plus_color' => array(
				'type' => 'color',
				'label' => __pl('Hotspot Icon Color'),
				'default' => '#ffffff',
				'req' => array(
					'common_hotspot_color' => 'custom'
				)
			),
			'common_hotspot_size' => array(
				'type' => 'radio',
				'label' => __pl('Hotspot Size'),
				'default' => 'normal',
				'list' => array(
					'small' => __pl('small'),
					'normal' => __pl('middle'),
					'big' => __pl('large'),
				)
			),*/
			'common_tip_show' => array(
				'type' => 'select',
				'label' => __pl('tooltip_display'),
				'default' => 'hover',
				'list' => array(
					'hover' => __pl('On Hover'),
					'always' => __pl('always'),
					'click' => __pl('On Click'),
				)
			),
		)
	)
);

// Hotspot
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_hotspot', array(
		'name' => __pl('hotspot'),
		'group' => 'image',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_image_hotspot'],
		'innerHTML' => 'tooltip_text',
		'html' => '<div class="pagelayer-hotspots-icon-holder">
			<div if-ext="{{icon_pulse}}" class="pagelayer-image-hotspots-anim">
				<i class="{{icon}}"></i>
				<div if="{{tooltip_text}}" class="pagelayer-tooltip-text pagelayer-tooltip-{{tooltip_position}}">
					{{tooltip_text}}
				</div>
			</div>
		</div>',
		'params' => array(
			'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'default' => 'Lorem',
			),
			'align_top' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'default' => 50,
				'min' => 0,
				'max' => 100,
				'css' =>  ['{{element}}' => 'top: {{val}}%'],
			),
			'align_left' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_pos'),
				'default' => 50,
				'min' => 0,
				'max' => 100,
				'css' =>  ['{{element}}' => 'left: {{val}}%'],
			),
		),
		'icon_style' => [
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
				'default' => 'fas fa-map-pin',
				'css' => ['{{element}}' => 'position: absolute;transform: translateY(-{{align_top}}%) translateX(-{{align_left}}%);display: inline-block; cursor: pointer;'],
			),
			'icon_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' =>  ['{{element}} .pagelayer-hotspots-icon-holder .fas' => 'color:{{val}}'],
			),
			'icon_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#0986c0',
				'css' =>  ['{{element}} .pagelayer-hotspots-icon-holder .fas' => 'background-color:{{val}}'],
			),
			'icon_pulse' => array(
				'type' => 'checkbox',
				'label' => __pl('pulse'),
				'default' => 'true',
			),
			'icon_pluse_color' => array(
				'type' => 'color',
				'label' => __pl('pulse_color'),
				'default' => '#ffffff',
				'css' =>  ['{{element}} .pagelayer-image-hotspots-anim::before' => 'background-color:{{val}}'],
			),
			'icon_rounded' => array(
				'type' => 'checkbox',
				'label' => __pl('rounded'),
				'default' => 'true',
				'css' =>  ['{{element}} .pagelayer-hotspots-icon-holder .fas' => 'border-radius:100%', '{{element}} .pagelayer-image-hotspots-anim::before ' => 'border-radius:100%'],
			),
			'icon_padding' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'screen' => 1,
				'default' => '15,18',
				'css' =>  ['{{element}} .pagelayer-hotspots-icon-holder .fas' => 'padding:{{val[0]}}px {{val[1]}}px;margin-right:1px'],
			),
		],
		'tooltip_style' => [
			'tooltip_text' => array(
				'type' => 'editor',
				'label' => __pl('text'),
				'default' => 'Lorem ipsum dolor sit amet',
				'edit' => '.pagelayer-tooltip-text',
			),
			'tooltip_position' => array(
				'type' => 'select',
				'label' => __pl('position'),
				'default' => 'top',
				'list' => array(
					'top' => __pl('top'),
					'right' => __pl('right'),
					'bottom' => __pl('bottom'),
					'left' => __pl('left'),
				)
			),
			'common_tip_theme' => array(
				'type' => 'select',
				'label' => __pl('theme'),
				'default' => 'tooltipster-default',
				'list' => array(
					'tooltipster-default' => __pl('dark'),
					/* 'tooltipster-light' => __pl('silver'),
					'tooltipster-noir' => __pl('noir'),
					'tooltipster-shadow' => __pl('shadow'), */
					'custom' => __pl('custom'),
				),
			),
			'common_custom_bg_theme' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#eb002c',
				'req' => array(
					'common_tip_theme' => 'custom'
				),
				'css' => ['{{element}} .pagelayer-tooltip-text' => 'background-color:{{val}}', '{{element}} .pagelayer-tooltip-text:after' => 'border-color:transparent !important ;border-{{tooltip_position}}-color:{{val}} !important']
			),
			'common_custom_font_theme' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'req' => array(
					'common_tip_theme' => 'custom'
				),
				'css' => ['{{element}} .pagelayer-tooltip-text' => 'color:{{val}}']
			),
		],
		'styles' => [
			'icon_style' => __pl('icon'),
			'tooltip_style' => __pl('tooltip')
		]
	)
);

// Audio
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_audio', array(
		'name' => __pl('audio'),
		'group' => 'media',
		'html' => '<div class="pagelayer-audio-container">
			<audio controls>
				<source src="{{{src-url}}}"></source>
			</audio>
		</div>',
		'params' => array(
			'src' => array(
				'type' => 'audio',
				'label' => __pl('wp_audio_source_title'),
				'desc' => __pl('wp_audio_source_desc'),
				'default' => 'http://wpcom.files.wordpress.com/2007/01/mattmullenweg-interview.mp3',
			),
			'autoplay' => array(
				'type' => 'checkbox',
				'label' => __pl('wp_audio_autoplay_title'),
				'desc' => __pl('wp_audio_autoplay_desc'),
				'default' => '',
				'addAttr' => ['{{element}} audio' => 'autoplay="autoplay"'],
			),
			'loop' => array(
				'type' => 'checkbox',
				'label' => __pl('wp_audio_loop_title'),
				'desc' => __pl('wp_audio_loop_desc'),
				'default' => '',
				'addAttr' => ['{{element}} audio' => 'loop="loop"'],
			),
			'width' => array(
				'type' => 'slider',
				'label' => __pl('shape_width'),
				'units' => ['%', 'px'],
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'css' => 'width: {{val}} !important',
			),
			'padding' => array(
				'type' => 'dimension',
				'label' => __pl('padding'),
				'default' => '10,10',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-audio-container' => 'padding-top: {{val[0]}}px; padding-bottom: {{val[0]}}px; padding-left: {{val[1]}}px; padding-right: {{val[1]}}px;'],
			),
		),
		'playpause_style' => [
			'playpause_size' => array(
				'type' => 'spinner',
				'label' => __pl('size'),
				'default' => 12,
				'min' => 0,
				'max' => 200,
				'screen' => 1,
				'css' => ['{{element}} .mejs-playpause-button button' => 'font-size:{{val}}px;']
			),
			'playpause_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .mejs-playpause-button button:after' => 'color:{{val}}']
			),
			'playpause_space' => array(
				'type' => 'spinner',
				'label' => __pl('space_around'),
				'default' => 5,
				'min' => -100,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{element}} .mejs-playpause-button button' => 'padding:calc( 1em + {{val}}px ) !important;']
			),
			'playpause_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#E5E5E5',
				'css' => ['{{element}} .mejs-playpause-button button' => 'background-color:{{val}} !important;']
			),
			'playpause_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'default' => 50,
				'min' => 0,
				'max' => 50,
				'screen' => 1,
				'css' => ['{{element}} .mejs-playpause-button button' => 'border-radius: {{val}}%;']
			),
		],
		'duration_style' => [
			'show_duration' => array(
				'type' => 'checkbox',
				'label' => __pl('show'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-audio-container' => 'show_duration="{{show_duration}}"'],
			),
			'duration_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .mejs-duration' => 'color:{{val}} !important;']
			),
		],
		'progress_style' => [
			'show_progress' => array(
				'type' => 'checkbox',
				'label' => __pl('show'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-audio-container' => 'show_progress="{{show_progress}}"'],
			),
			'progress_height' => array(
				'type' => 'slider',
				'label' => __pl('progress_height'),
				'units' => ['px', '%'],
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'default' => 10,
				'css' => [
					'{{element}} .mejs-time-total' => 'height:{{val}} !important;',
				],
			),
			'progress_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => 'rgba(0,0,0,0.1)',
				'css' => ['{{element}} .mejs-controls .mejs-time-rail .mejs-time-total' => 'background:{{val}} !important;']
			),
			'progress_loaded' => array(
				'type' => 'color',
				'label' => __pl('loaded_color'),
				'default' => '#777777',
				'css' => ['{{element}} .mejs-time-loaded' => 'background:{{val}} !important;']
			),
			'progress_current' => array(
				'type' => 'color',
				'label' => __pl('current_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .mejs-time-current' => 'background:{{val}} !important;']
			),
			'progress_hovered' => array(
				'type' => 'color',
				'label' => __pl('hovered_color'),
				'default' => '#b5d2f9',
				'css' => ['{{element}} .mejs-time-hovered' => 'background:{{val}} !important;']
			),
			'progress_handle' => array(
				'type' => 'color',
				'label' => __pl('handle_color'),
				'default' => '#000000',
				'css' => [
					'{{element}} .mejs-time-handle' => 'background:{{val}} !important;',
					'{{element}} .mejs-time-handle-content' => 'background:{{val}} !important;',
				]
			),
		],
		'current_style' => [
			'show_current' => array(
				'type' => 'checkbox',
				'label' => __pl('show'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-audio-container' => 'show_current="{{show_current}}"'],
			),
			'current_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .mejs-currenttime' => 'color:{{val}} !important;']
			),
		],
		'volume_style' => [
			'show_volume' => array(
				'type' => 'checkbox',
				'label' => __pl('show'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-audio-container' => 'show_volume="{{show_volume}}"'],
			),
			'volume_size' => array(
				'type' => 'spinner',
				'label' => __pl('size'),
				'default' => 12,
				'min' => 0,
				'max' => 200,
				'screen' => 1,
				'css' => ['{{element}} .mejs-volume-button button' => 'font-size:{{val}}px;']
			),
			'volume_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .mejs-volume-button button:after' => 'color:{{val}}']
			),
			'volume_space' => array(
				'type' => 'spinner',
				'label' => __pl('space_around'),
				'default' => 5,
				'min' => -100,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{element}} .mejs-volume-button button' => 'padding:calc( 1em + {{val}}px ) !important;']
			),
			'volume_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#E5E5E5',
				'css' => ['{{element}} .mejs-volume-button button' => 'background-color:{{val}} !important;']
			),
			'volume_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'default' => 50,
				'min' => 0,
				'max' => 50,
				'screen' => 1,
				'css' => ['{{element}} .mejs-volume-button button' => 'border-radius: {{val}}%;']
			),
		],
		'volume_slider' => [
			'volume_height' => array(
				'type' => 'slider',
				'label' => __pl('progress_height'),
				'units' => ['px', '%'],
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'default' => 10,
				'css' => [
					'{{element}} .mejs-horizontal-volume-total' => 'height:{{val}} !important;'
				],
			),
			'volume_width' => array(
				'type' => 'slider',
				'label' => __pl('shape_width'),
				'min' => 0,
				'max' => 100,
				'default' => 35,
				'screen' => 1,
				'css' => [
					'{{element}} .mejs-horizontal-volume-total' => 'width:{{val}}px !important;',
					'{{element}} .mejs-horizontal-volume-slider' => 'width: calc( {{val}}px + 10px ) !important;',
				],
			),
			'vslides_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => 'rgba(0,0,0,0.1)',
				'css' => ['{{element}} .mejs-horizontal-volume-total' => 'background:{{val}} !important;']
			),
			'vslider_current' => array(
				'type' => 'color',
				'label' => __pl('current_color'),
				'default' => '#777777',
				'css' => ['{{element}} .mejs-horizontal-volume-current' => 'background:{{val}} !important;']
			),
		],
		'styles' => [
			'playpause_style' => __pl('playpause_style'),
			'duration_style' => __pl('duration_style'),
			'progress_style' => __pl('progress_style'),
			'current_style' => __pl('current_style'),
			'volume_style' => __pl('volume_style'),
			'volume_slider' => __pl('volume_slider'),
		]
	)
);

// Video Slider
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_video_slider', array(
		'name' => __pl('video_slider'),
		'group' => 'media',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'prevent_inside' => ['pl_slides'],
		'holder' => '.pagelayer-video-slider-holder',
		'child_selector' => '>.pagelayer-owl-stage-outer>.pagelayer-owl-stage>.pagelayer-owl-item', // Make it very specifc
		'html' => '<div class="pagelayer-video-slider-holder pagelayer-owl-holder pagelayer-owl-carousel pagelayer-owl-theme"></div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('Videos'),
				'sc' => PAGELAYER_SC_PREFIX.'_video',
				'item_label' => array(
					'default' => __pl('video'),
					'param' => 'video_type'
				),
				'count' => 2,
				'text' => __pl('add_media'),
			),
		),
		'slider_options' => $pagelayer->slider_options,
		'arrow_styles' => $pagelayer->slider_arrow_styles,
		'pager_styles' => $pagelayer->slider_pager_styles,
		'styles' => [
			'slider_options' => __pl('slider_options'),
			'arrow_styles' => __pl('arrow_styles'),
			'pager_styles' => __pl('pager_styles'),
		],
	)
);

// Download Button
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_download', array(
		'name' => __pl('Download Button'),
		'group' => 'button',
		'html' => '<a href="{{{attachment-url}}}" target="_blank" class="pagelayer-btn-holder pagelayer-ele-link {{type}} {{size}} {{icon_position}}" download="">
					<i class="{{icon}} pagelayer-btn-icon"></i>
					<span class="pagelayer-btn-text">{{text}}</span>
					<i class="{{icon}} pagelayer-btn-icon"></i>
				</a>',
		'params' => array(
			'text' => array(
				'type' => 'text',
				'label' => __pl('button_text_label'),
				'default' => 'Download',
				'edit' => '.pagelayer-btn-text'
			),
			'attachment' => array(
				'type' => 'media',
				'label' => __pl('media_file'),
				'desc' => __pl('media_description'),
				'default' => '',
			),
			'file_name' => array(
				'type' => 'text',
				'label' => __pl('Download File Name'),
				'addAttr' => ['{{element}} a.pagelayer-btn-holder' => 'download="{{file_name}}"']
			),
			'full_width' => array(
				'type' => 'checkbox',
				'label' => __pl('stretch'),
				'screen' => 1,
				'css' => ['{{element}} a' => 'width: 100%; text-align: center;']
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('obj_align_label'),
				'default' => 'left',
				'screen' => 1,
				'css' => 'text-align: {{val}}',
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => array(
					'full_width' => ''
				)
			),
			'btn_typo' => array(
				'type' => 'typography',
				'label' => __pl('quote_content_typo'),
				'css' => [
					'{{element}} .pagelayer-btn-text' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
					'{{element}} .pagelayer-btn-holder' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
			),
		),
		'btn_style' => [
			'type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-default',
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
			),
			'size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-large',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				)
			),
			'btn_custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('btn_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'padding: {{val}}px calc({{val}}px *2)'],
				'req' => array(
					'size' => 'pagelayer-btn-custom'
				),
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-btn-holder' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
		],
		'icon_style' => [
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('service_box_font_icon_label'),
				'default' => 'fas fa-download',
			),
			'icon_position' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'pagelayer-btn-icon-left',
				'list' => array(
					'pagelayer-btn-icon-left' => __pl('left'),
					'pagelayer-btn-icon-right' => __pl('right')
				),
				'req' => array(
					'!icon' => ''
				)
			),
			'icon_spacing' => array(
				'type' => 'slider',
				'label' => __pl('icon_spacing'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-icon' => 'padding: 0 {{val}}px;'],
				'req' => array(
					'!icon' => ''
				),
			),
		],
		'border_style' => [
			'btn_bor_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),	
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
		],
		'styles' => [
			'btn_style' => __pl('btn_style'),
			'icon_style' => __pl('icon_style'),
			'border_style' => __pl('border_style'),
		],
	)
);

// Table
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_table', array(
		'name' => __pl('table'),
		'group' => 'other',
		'no_gt' => 1,
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-data-holder',
		'html' => '<div class="pagelayer-data-holder"></div>
		<table class="pagelayer-table-holder"></table>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('table_row'),
				'sc' => PAGELAYER_SC_PREFIX.'_table_row',
				'item_label' => array(
					'default' => __pl('table_row'),
					//'param' => 'title',
				),
				'count' => 3,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('table_row')))
			),
			'table_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'screen' => 1,
				'units' => ['%', 'px'],
				'min' => 0,
				'css' => ['{{element}} .pagelayer-table-holder' => 'width:{{val}}'],
			),
			'table_height' => array(
				'type' => 'slider',
				'label' => __pl('height'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'min' => 0,
				'css' => ['{{element}} .pagelayer-table-holder' => 'height:{{val}}'],
			),
			'table_td_padding' => [
				'type' => 'padding',
				'label' => __pl('table_td_padding'),
				'screen' => 1,
				'units' => ['px', 'em'],
				'css' => ['{{element}} td, {{element}} th' => 'padding-top: {{val[0]}}; padding-right: {{val[1]}}; padding-bottom: {{val[2]}}; padding-left: {{val[3]}}'],
			],
		),
		'table_style' => array(
			'table_position' => array(
				'type' => 'select',
				'label' => __pl('table_position'),
				'css' => ['{{element}} .pagelayer-table-holder' => '{{val}}:auto'],
				'list' => array(
					'margin-right' => __pl('left'),
					'margin' => __pl('center'),
					'margin-left' => __pl('right'),
				),
			),
			'table_content_align' => array(
				'type' => 'select',
				'label' => __pl('content_align'),
				'css' => ['{{element}} .pagelayer-table-holder' => 'text-align:{{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'table_verti_align' => array(
				'type' => 'select',
				'label' => __pl('vertical_align'),
				'css' => ['{{element}} .pagelayer-table-holder *' => 'vertical-align:{{val}}'],
				'list' => array(
					'' => __pl('none'),
					'top' => __pl('top'),
					'middle' => __pl('middle'),
					'bottom' => __pl('bottom'),
				),
			),
			'even_odd_row' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'default' => 'odd_row',
				'list' => array(
					'odd_row' => __pl('odd_row'),
					'even_row' => __pl('even_row'),
					'hover' => __pl('hover'),
				),
			),
			'odd_row_text_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} tr:nth-child(odd) td, {{element}} tr:nth-child(odd) th' => 'color:{{val}}'],
				'show' => ['even_odd_row' => 'odd_row'],
			),
			'odd_row_color' => array(
				'type' => 'color',
				'label' => __pl('odd_row_bg'),
				'default' => '#ffffff',
				'css' => ['{{element}} tr:nth-child(odd) td, {{element}} tr:nth-child(odd) th' => 'background-color:{{val}}'],
				'show' => ['even_odd_row' => 'odd_row'],
			),
			'even_row_text_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} tr:nth-child(even) td, {{element}} tr:nth-child(even) th' => 'color:{{val}}'],
				'show' => ['even_odd_row' => 'even_row'],
			),
			'even_row_color' => array(
				'type' => 'color',
				'label' => __pl('even_row_bg'),
				'default' => '#e3e3e3',
				'css' => ['{{element}}  tr:nth-child(even) td, {{element}}  tr:nth-child(even) th' => 'background-color:{{val}}'],
				'show' => ['even_odd_row' => 'even_row'],
			),
			'tr_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}}  tr:hover td, {{element}}  tr:hover th' => 'color:{{val}} !important'],
				'show' => ['even_odd_row' => 'hover'],
			),
			'tr_hover_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#e3e3e3',
				'css' => ['{{element}} tr:hover td, {{element}} tr:hover th' => 'background-color:{{val}} !important'],
				'show' => ['even_odd_row' => 'hover'],
			),
			'table_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-table-holder' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
			),
			'table_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} table' =>'border-style: {{val}};',
					'{{element}} th' =>'border-style: {{val}};',
					'{{element}} td' =>'border-style: {{val}};'
				],
				'default' => 'solid',
				'list' => [
					'none' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'table_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#42414f',
				'css' => ['{{element}} table' =>'border-color: {{val}};',
					'{{element}} th' =>'border-color: {{val}};',
					'{{element}} td' =>'border-color: {{val}};'
				],
				'req' => ['!table_border_type' => 'none']
			),
			'table_border_width' => array(
				'type' => 'spinner',
				'label' => __pl('border_width'),
				'default' => 1,
				'screen' => 1,
				'css' => ['{{element}} table' =>'border-width: {{val}}px;',
					'{{element}} th' =>'border-width: {{val}}px;',
					'{{element}} td' =>'border-width: {{val}}px;'
				],
				'req' => ['!table_border_type' => 'none']
			),
		),
		'styles' => array(
			'table_style' => __pl('table_style'),
		),
	)
);

// Table row
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_table_row', array(
		'name' => __pl('table_row'),
		'group' => 'other',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_table'],
		'has_group' => [
			'section' => 'params', 
			'prop' => 'col_elements'
		],
		'holder' => '.pagelayer-table-row-holder',
		'html' => '<div class="pagelayer-table-row-holder"></div>',
		'params' => array(
			'col_elements' => array(
				'type' => 'group',
				'label' => __pl('table_cell'),
				'sc' => PAGELAYER_SC_PREFIX.'_table_col',
				'item_label' => array(
					'default' => __pl('table_cell'),
					'param' => 'title',
				),
				'count' => 3,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('table_cell')))
			),
			'tr_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),				
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'tr_color' => array(
				'type' => 'color',
				'label' => __pl('color'),				
				'css' => ['.pagelayer-table [pagelayer-table-id="{{ele_id}}"] td, .pagelayer-table [pagelayer-table-id="{{ele_id}}"] th' => 'color:{{val}} !important'],
				'show' => ['tr_colors' => ''],
			),
			'tr_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.pagelayer-table [pagelayer-table-id="{{ele_id}}"] td, .pagelayer-table [pagelayer-table-id="{{ele_id}}"] th' => 'background-color:{{val}} !important'],
				'show' => ['tr_colors' => ''],
			),
			'tr_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),				
				'css' => ['.pagelayer-table [pagelayer-table-id="{{ele_id}}"]:hover td, .pagelayer-table [pagelayer-table-id="{{ele_id}}"]:hover th' => 'color:{{val}} !important'],
				'show' => ['tr_colors' => 'hover'],
			),
			'tr_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.pagelayer-table [pagelayer-table-id="{{ele_id}}"]:hover td, .pagelayer-table [pagelayer-table-id="{{ele_id}}"]:hover th' => 'background-color:{{val}} !important'],
				'show' => ['tr_colors' => 'hover'],
			),
			'tr_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'.pagelayer-table [pagelayer-table-id="{{ele_id}}"]' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				],
			),
			'tr_td_padding' => [
				'type' => 'padding',
				'label' => __pl('row_data_padding'),
				'screen' => 1,
				'units' => ['px', 'em'],
				'css' => ['.pagelayer-table [pagelayer-table-id="{{ele_id}}"] td, .pagelayer-table [pagelayer-table-id="{{ele_id}}"] th' => 'padding-top: {{val[0]}}; padding-right: {{val[1]}}; padding-bottom: {{val[2]}}; padding-left: {{val[3]}}'],
			],
		)
	)
);

// Table col
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_table_col', array(
		'name' => __pl('table_cell'),
		'group' => 'other',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_table_row'],
		'innerHTML' => 'data',
		'html' => '<div class="pagelayer-col-data"></div>',
		'params' => array(
			'data' => array(
				'type' => 'textarea',
				'label' => __pl('data'),
				'default' => 'Lorem ipsum',
				'addAttr' => ['{{element}} .pagelayer-col-data' => 'data-td="{{data}}"'],
			),
			'td_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'screen' => 1,
				'units' => ['%', 'px'],
				'css' => ['.pagelayer-table tr [pagelayer-table-id="{{ele_id}}"]' => 'width:{{val}}'],
			),
			'td_tag' => array(
				'type' => 'select',
				'label' => __pl('cell_type'),
				'default' => 'td',
				'list' => array(
					'td' => __pl('standard_cell'),
					'th' => __pl('header_cell'),
				),
				'addAttr' => ['{{element}} .pagelayer-col-data' => 'data-tag="{{td_tag}}"'],
			),
			'td_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),				
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'td_color' => array(
				'type' => 'color',
				'label' => __pl('color'),				
				'css' => ['.pagelayer-table tr [pagelayer-table-id="{{ele_id}}"]' => 'color:{{val}} !important'],
				'show' => ['td_colors' => ''],
			),
			'td_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.pagelayer-table tr [pagelayer-table-id="{{ele_id}}"]' => 'background-color:{{val}} !important'],
				'show' => ['td_colors' => ''],
			),
			'td_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),				
				'css' => ['.pagelayer-table tr [pagelayer-table-id="{{ele_id}}"]:hover' => 'color:{{val}} !important'],
				'show' => ['td_colors' => 'hover'],
			),
			'td_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.pagelayer-table tr [pagelayer-table-id="{{ele_id}}"]:hover' => 'background-color:{{val}} !important'],
				'show' => ['td_colors' => 'hover'],
			),
			'td_colspan' => array(
				'type' => 'spinner',
				'label' => __pl('colspan'),
				'min' => 1,
				'addAttr' => ['{{element}} .pagelayer-col-data' => 'data-colspan="{{td_colspan}}"'],
			),
			'td_rowspan' => array(
				'type' => 'spinner',
				'label' => __pl('rowspan'),
				'min' => 1,
				'addAttr' => ['{{element}} .pagelayer-col-data' => 'data-rowspan="{{td_rowspan}}"'],
			),
		),
	)
);

// Call To Action
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_call', array(
		'name' => __pl('cta'),
		'group' => 'other',
		'innerHTML' => 'content',
		'html' => '<div if={{show_ribbon}} class="pagelayer-cta-ribbon pagelayer-cta-ribbon-{{ribbon_pos}}"><div class="pagelayer-cta-ribbon-text">{{ribbon_text}}</div></div>
				<div class="pagelayer-cta-img-holder">
					<div if="{{cta_image}}" class="pagelayer-cta-image" style="background-image: url(\'{{{cta_image-url}}}\');">
					</div>
				</div>
				<div class="pagelayer-cta-content-holder">
					<div class="pagelayer-cta-content">
						<div if="{{heading}}" class="pagelayer-cta-heading">{{heading}}</div>
						<div if="{{subheading}}" class="pagelayer-cta-subheading">{{subheading}}</div>
						<div if="{{content}}" class="pagelayer-cta-text">{{content}}</div>
						<a if={{button_text}} class="pagelayer-btn-holder pagelayer-ele-link {{btn_type}} {{btn_size}}" href="{{{button_link}}}">{{button_text}}</a>
					</div>
				</div>',
		'params' => array(
			'layout' => array(
				'type' => 'select',
				'label' => __pl('cta_layout_label'),
				'default' => 'normal',
				'addClass' => 'pagelayer-cta-layout-{{val}}',
				'list' => array(
					'normal' => __pl('normal'),
					'overlay' => __pl('overlay')
				)
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('cta_align_label'),
				'default' => 'left',
				'addClass' => 'pagelayer-cta-align-{{val}}',
				'list' => array(
					'left' => __pl('left'),
					'' => __pl('center'),
					'right' => __pl('right'),
				),
				'req' => array(
					'layout' => 'normal'
				)
			),
		),
		'image_style' => [
			'cta_image' => array(
				'type' => 'image',
				'label' => __pl('cta_image_label'),
				'default' => PAGELAYER_URL.'/images/default-image.png'
			),
			'height' => array(
				'type' => 'slider',
				'label' => __pl('cta_img_height_label'),
				'css' => ['{{element}} .pagelayer-cta-image' => 'min-height: {{val}}px;'],
				'screen' => 1,
				'default' => 300,
				'min' => 0,
				'max' => 1000,
				'step' => 1,
			),
			'width' => array(
				'type' => 'slider',
				'label' => __pl('cta_img_width_label'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cta-img-holder' => 'flex-basis: {{val}}%;',
					'{{element}} .pagelayer-cta-content-holder' => 'flex-basis: calc(100% - {{val}}%);'],
				'default' => 50,
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'req' => array(
					'layout' => 'normal',
					'!align' => ''
				)
			),
			'img_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'img_overlay' => array(
				'type' => 'color',
				'label' => __pl('overlay'),
				'css' => ['{{element}} .pagelayer-cta-image:before' => 'background-color: {{val}}'],
				'show' => ['img_hover' => '']
			),
			'img_opacity' => array(
				'type' => 'slider',
				'label' => __pl('opacity'),
				'css' => ['{{element}} .pagelayer-cta-image:before' => 'opacity: {{val}};'],
				'min' => 0,
				'max' => 1,
				'step' => 0.1,
				'show' => ['img_hover' => '']
			),
			'hov_delay' => array(
				'type' => 'slider',
				'label' => __pl('delay'),
				'css' => ['{{element}} .pagelayer-cta-image:before, {{element}} .pagelayer-cta-image' => 'transition: all {{val}}ms;'],
				'default' => 800,
				'min' => 200,
				'max' => 10000,
				'step' => 100,
				'show' => ['img_hover' => 'hover']
			),
			'img_overlay_hover' => array(
				'type' => 'color',
				'label' => __pl('overlay'),
				'default' => '#333333',
				//'css' => ['{{element}} .pagelayer-cta-img-overlay' => 'background-color: {{val}}'],
				'css' => ['{{element}}:hover .pagelayer-cta-image:before' => 'background-color: {{val}}'],
				'show' => ['img_hover' => 'hover']
			),
			'img_opacity_hover' => array(
				'type' => 'slider',
				'label' => __pl('opacity'),
				'css' => ['{{element}}:hover .pagelayer-cta-image:before' => 'opacity: {{val}};'],
				'default' => 0.3,
				'min' => 0,
				'max' => 1,
				'step' => 0.1,
				'show' => ['img_hover' => 'hover']
			),
			'hover_anim' => array(
				'type' => 'select',
				'label' => __pl('cta_hover_anim_label'),
				'default' => 'pagelayer-cta-zoomin',
				'addClass' => '{{val}}',
				'list' => array(
					'' => __pl('cta_anim_none'),
					'pagelayer-cta-zoomin' => __pl('cta_anim_zoomin'),
					'pagelayer-cta-zoomout' => __pl('cta_anim_zoomout'),
					'pagelayer-cta-moveup' => __pl('cta_anim_moveup'),
					'pagelayer-cta-movedown' => __pl('cta_anim_movedown'),
					'pagelayer-cta-moveleft' => __pl('cta_anim_moveleft'),
					'pagelayer-cta-moveright' => __pl('cta_anim_moveright'),
				),
				'show' => ['img_hover' => 'hover']
			),
		],
		'heading_styles' => [
			'heading' => array(
				'type' => 'text',
				'label' => __pl('heading_name'),
				'default' => 'Time for action',
				'edit' => '.pagelayer-cta-heading',
			),
			'heading_hover' => array(
				'type' => 'radio',
				'label' => __pl(''),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-cta-heading' => 'color: {{val}}'],
				'show' => ['heading_hover' => '']
			),
			'heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'default' => 'Advent Pro,40,,700,,,solid,1.7,,,',
				'css' => ['{{element}} .pagelayer-cta-heading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['heading_hover' => '']
			),
			'heading_shadow' => array(
				'type' => 'shadow',
				'label' => __pl('heading_shadow'),
				'css' => ['{{element}} .pagelayer-cta-heading' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
				'show' => ['heading_hover' => '']
			),
			'heading_delay' => array(
				'type' => 'slider',
				'label' => __pl('delay'),
				'css' => ['{{element}} .pagelayer-cta-heading' => 'transition: all {{val}}ms;'],
				'default' => 800,
				'min' => 200,
				'max' => 3000,
				'step' => 100,
				'show' => ['heading_hover' => 'hover']
			),
			'heading_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}}:hover .pagelayer-cta-heading' => 'color: {{val}}'],
				'show' => ['heading_hover' => 'hover']
			),
			'heading_typo_hover' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['{{element}}:hover .pagelayer-cta-heading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['heading_hover' => 'hover']
			),
			'heading_shadow_hover' => array(
				'type' => 'shadow',
				'label' => __pl('heading_shadow'),
				'css' => ['{{element}}:hover .pagelayer-cta-heading' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
				'show' => ['heading_hover' => 'hover']
			),
		],
		'subheading_styles' => [
			'subheading' => array(
				'type' => 'text',
				'label' => __pl('subheading_name'),
				'edit' => '.pagelayer-cta-subheading',
			),
			'subheading_hover' => array(
				'type' => 'radio',
				'label' => __pl(''),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'subheading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#555555',
				'css' => ['{{element}} .pagelayer-cta-subheading' => 'color: {{val}}'],
				'show' => ['subheading_hover' => '']
			),
			'subheading_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['{{element}} .pagelayer-cta-subheading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['subheading_hover' => '']
			),
			'subheading_shadow' => array(
				'type' => 'shadow',
				'label' => __pl('heading_shadow'),
				'css' => ['{{element}} .pagelayer-cta-subheading' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
				'show' => ['subheading_hover' => '']
			),
			'subheading_delay' => array(
				'type' => 'slider',
				'label' => __pl('delay'),
				'css' => ['{{element}} .pagelayer-cta-subheading' => 'transition: all {{val}}ms;'],
				'default' => 800,
				'min' => 200,
				'max' => 3000,
				'step' => 100,
				'show' => ['subheading_hover' => 'hover']
			),
			'subheading_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}}:hover .pagelayer-cta-subheading' => 'color: {{val}}'],
				'show' => ['subheading_hover' => 'hover']
			),
			'subheading_typo_hover' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['{{element}}:hover .pagelayer-cta-subheading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['subheading_hover' => 'hover']
			),
			'subheading_shadow_hover' => array(
				'type' => 'shadow',
				'label' => __pl('heading_shadow'),
				'css' => ['{{element}}:hover .pagelayer-cta-subheading' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
				'show' => ['subheading_hover' => 'hover']
			),
		],
		'text_style' => [
			'content' => array(
				'type' => 'editor',
				'label' => __pl('text'),
				'default' => '<p><span style="color: rgb(255, 255, 255);">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor. consectetur adipiscing elit, sed do eiusmod tempor</span></p>',
				'edit' => '.pagelayer-cta-text',
			),
		],
		'content_styles' => [
			'content_spacing' => [
				'type' => 'padding',
				'label' => __pl('cta_content_spacing_label'),
				'default' => '25,25,25,25',
				'screen' => 1,
				//'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-cta-content' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
			],
			'content-align' => array(
				'type' => 'radio',
				'label' => __pl('cta_content_align_label'),
				'default' => 'left',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cta-content-holder' => 'text-align: {{val}};'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				)
			),
			'content_valign' => array(
				'type' => 'radio',
				'label' => __pl('cta_valign_label'),
				'default' => 'flex-start',
				'screen' => 1,
				'addClass' => 'pagelayer-cta-align-{{val}}',
				'css' => ['{{element}} .pagelayer-cta-content-holder' => 'align-items: {{val}};'],
				'list' => array(
					'flex-start' => __pl('top'),
					'center' => __pl('center'),
					'flex-end' => __pl('bottom'),
				)
			),
			'content_hover' => array(
				'type' => 'radio',
				'label' => __pl(''),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'content_bg' => array(
				'type' => 'color',
				'label' => __pl('cta_content_bg_label'),
				'default' => '#4B6270',
				'css' => ['{{element}} .pagelayer-cta-content-holder' => 'background-color: {{val}}'],
				'show' => ['content_hover' => ''],
				'req' => array(
					'layout' => 'normal'
				)
			),
			'content_delay' => array(
				'type' => 'slider',
				'label' => __pl('delay'),
				'css' => ['{{element}} .pagelayer-cta-content-holder' => 'transition: all {{val}}ms;'],
				'default' => 800,
				'min' => 200,
				'max' => 3000,
				'step' => 100,
				'show' => ['content_hover' => 'hover'],
			),
			'content_bg_hover' => array(
				'type' => 'color',
				'label' => __pl('cta_content_bg_label'),
				'default' => '#E88987',
				'css' => ['{{element}}:hover .pagelayer-cta-content-holder' => 'background-color: {{val}}'],
				'show' => ['content_hover' => 'hover'],
				'req' => array(
					'layout' => 'normal'
				)
			),
		],
		'button_style' => [
			'button_text' => array(
				'type' => 'text',
				'label' => __pl('text'),
				'default' => __pl('button_name'),
				'edit' => '.pagelayer-btn-holder',
			),
			'button_link' => array(
				'type' => 'link',
				'label' => __pl('link_settings'),
				'selector' => '.pagelayer-ele-link',
				'desc' => __pl('button_link_desc'),
			),
			'btn_type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-success',
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom'),
				),
			),
			'btn_size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-mini',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				)
			),
			'btn_custom_size' => array(
				'type' => 'dimension',
				'label' => __pl('btn_custom_size'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'padding: {{val[0]}}px {{val[1]}}px;'],
				'req' => array(
					'btn_size' => 'pagelayer-btn-custom'
				),
			),
			'btn_spacing' => array(
				'type' => 'slider',
				'label' => __pl('cta_btn_spacing_label'),
				'css' => ['{{element}} .pagelayer-btn-holder' => 'margin-top: {{val}}px;'],
				'default' => 5,
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'background-color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-btn-holder' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'background-color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'default' => '40,40,40,40',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}}:hover .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
		],
		'ribbon_style' => [
			'show_ribbon' => array(
				'type' => 'checkbox',
				'label' => __pl('cta_show_ribbon'),
				'css' => ['{{element}} .pagelayer-cta-ribbon' => 'position: absolute; z-index: 2;'],
				'default' => 'true'
			),
			'ribbon_style' => array(
				'type' => 'select',
				'label' => __pl('style'),
				//'css' => ['{{element}} .pagelayer-cta-ribbon' => '{{val}}: 0px;'],
				'default' => '',
				'list' => array(
					'' => __pl('default')
				),
				'req' => [
					'show_ribbon' => 'true'
				]
			),
			'ribbon_text' => array(
				'type' => 'text',
				'label' => __pl('cta_ribbon_text_label'),
				'default' => __pl('ribbon_text_default'),
				'edit' => '.pagelayer-cta-ribbon-text',
				'req' => array(
					'show_ribbon' => 'true'
				),
			),
			'ribbon_bg' => array(
				'type' => 'color',
				'label' => __pl('cta_ribbon_bg_label'),
				'default' => '#0986c0',
				'css' => [
					'{{element}} .pagelayer-cta-ribbon' => 'background-color: {{val}}',
					'{{element}} .pagelayer-cta-ribbon-text:before' => 'border-top-color: {{val}}; border-bottom-color: {{val}};'
				],
				'req' => array(
					'show_ribbon' => 'true'
				),
			),
			'ribbon_color' => array(
				'type' => 'color',
				'label' => __pl('cta_ribbon_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-cta-ribbon' => 'color: {{val}}'],
				'req' => array(
					'show_ribbon' => 'true'
				),
			),
			'ribbon_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['{{element}} .pagelayer-cta-ribbon-text' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => [
					'show_ribbon' => 'true'
				]
			),
			'ribbon_pos' => array(
				'type' => 'radio',
				'label' => __pl('ribbon_pos_label'),
				'css' => ['{{element}} .pagelayer-cta-ribbon' => '{{val}}: 0px;'],
				'default' => 'left',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'right' => __pl('right')
				),
				'req' => [
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				]
			),
			'ribbon_top' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'css' => ['{{element}} .pagelayer-cta-ribbon' => 'top: {{val}}%;'],
				'screen' => 1,
				'default' => 5,
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'req' => [
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				]
			),
			'ribbon_spacing' => array(
				'type' => 'dimension',
				'label' => __pl('space_around'),
				'default' => '10,10',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-cta-ribbon-text' => 'padding-left: {{val[0]}}px; padding-right: {{val[1]}}px;'],
				'req' => [
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				]
			),
			'ribbon_height' => array(
				'type' => 'slider',
				'label' => __pl('block_height'),
				'css' => [
					'{{element}} .pagelayer-cta-ribbon' => 'height: {{val}}px;',
					'{{element}} .pagelayer-cta-ribbon-left:before' => 'border-width: calc( {{val}}px / 2 ); right: calc( -{{val}}px / 2 );',
					'{{element}} .pagelayer-cta-ribbon-right:before' => 'border-width: calc( {{val}}px / 2 ); left: calc( -{{val}}px / 2 );',
					'{{element}} .pagelayer-cta-ribbon-left .pagelayer-cta-ribbon-text:before' => 'border-width: calc( {{val}}px / 2 ); right: calc( -{{val}}px / 2 );',
					'{{element}} .pagelayer-cta-ribbon-right .pagelayer-cta-ribbon-text:before' => 'border-width: calc( {{val}}px / 2 ); left: calc( -{{val}}px / 2 );',
					'{{element}} .pagelayer-cta-ribbon-text' => 'line-height: {{val}}px;'
				],
				'default' => 35,
				'min' => 0,
				'max' => 200,
				'screen' => 1,
				'step' => 1,
				'screen' => 1,
				'req' => [
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				]
			),
			'ribbon_shadow' => array(
				'type' => 'color',
				'label' => __pl('shadow_color'),
				'default' => 'rgba(0,0,0,0.5)',
				'css' => [
					'{{element}} .pagelayer-cta-ribbon:after' => 'background-color: {{val}}',
					/* '{{element}} .pagelayer-cta-ribbon-left:before' => 'border-top-color: {{val}}; border-bottom-color: {{val}}; border-left-color: {{val}}',
					'{{element}} .pagelayer-cta-ribbon-right:before' => 'border-top-color: {{val}}; border-bottom-color: {{val}}; border-right-color: {{val}}', */
					'{{element}} .pagelayer-cta-ribbon:before' => 'border-top-color: {{val}}; border-bottom-color: {{val}};'
				],
				'req' => array(
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				),
			),
			'shadow_height' => array(
				'type' => 'slider',
				'label' => __pl('shadow_pos'),
				'css' => [
					'{{element}} .pagelayer-cta-ribbon:before' => 'top: {{val}}px',
					'{{element}} .pagelayer-cta-ribbon:after' => 'height: {{val}}px; bottom: -{{val}}px;'
				],
				'default' => 3,
				'min' => 0,
				'max' => 50,
				'screen' => 1,
				'step' => 1,
				'screen' => 1,
				'req' => [
					'show_ribbon' => 'true',
					'ribbon_style' => ''
				]
			),
		],
		'styles' => [
			'image_style' => __pl('image_style'),
			'heading_styles' => __pl('heading_styles'),
			'subheading_styles' => __pl('subheading_styles'),
			'text_style' => __pl('text_style'),
			'content_styles' => __pl('content_styles'),
			'button_style' => __pl('button_style'),
			'ribbon_style' => __pl('ribbon_style'),
		]
	)
);

// Modal
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_modal', array(
		'name' => __pl('modal'),
		'group' => 'other',
		'innerHTML' => 'content',
		'html' => '<div class="pagelayer-modal-container">
			<div class="pagelayer-modal-button">
				<a class="pagelayer-btn-holder pagelayer-ele-link {{type}} {{size}} {{button_icon_position}}" onclick="pagelayer_render_pl_modal(event)">
					<i if="{{button_icon}}" class="{{button_icon}} pagelayer-btn-icon pagelayer-icon-left"></i>
					<span class="pagelayer-btn-text" if="{{button_text}}">{{button_text}}</span>
					<i if="{{button_icon}}" class="{{button_icon}} pagelayer-btn-icon pagelayer-icon-right"></i>
				</a>
			</div>
			<div class="pagelayer-modal-content pagelayer-modal-{{modal_style}}">
				<div if={{close_by_overlay}} class="pagelayer-modal-bg-close" onclick="pagelayer_pl_modal_close(event)"></div>
				<div class="pagelayer-modal-close" onclick="pagelayer_pl_modal_close(event)"></div>
				<div class="pagelayer-modal-body">
					<div if="{{modal_title}}"class="pagelayer-modal-title">{{modal_title}}</div>
					<div class="pagelayer-modal-content-overflow" if-ext="{{content}}">
						<div class="pagelayer-modal-bottom-content" if-ext="{{content}}">{{content}}</div>
					</div>
				</div>
			</div>
		</div>',
		'params' => array(
			'modal_style' => array(
				'type' => 'radio',
				'label' => __pl('obj_style'),
				'default' => 'dark',
				'list' => array(
					'dark' => __pl('dark'),
					'light' => __pl('light'),
					'custom' => __pl('custom')
				)
			),
			'modal_shadow_color' => array(
				'type' => 'color',
				'label' => __pl('obj_shadow_color_label'),
				'default' => '#0b0b0b',
				'req' => array(
					'modal_style' => 'custom'
				),
				'css' => ['{{element}} .pagelayer-modal-content' => 'background-color: {{val}}'],
			),
			'modal_popup_width' => array(
				'type' => 'slider',
				'label' => __pl('modal_popup_width'),
				'default' => 70,
				'min' => 20,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-body' => 'width: {{val}}%'],
			),
			'modal_popup_height' => array(
				'type' => 'slider',
				'label' => __pl('content_max_height'),
				'min' => 100,
				'max' => 1500,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-content-overflow' => 'max-height: {{val}}px'],
			),
		),
		'icon_style' => [
			'button_icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
				'list' => pagelayer_icon_class_list(true)
			),
			'icon_spacing' => array(
				'type' => 'spinner',
				'label' => __pl('icon_spacing'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-icon' => 'padding: 0 {{val}}px;'],
				'req' => array(
					'!button_icon' => ''
				),
			),
			'button_icon_position' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'pagelayer-btn-icon-left',
				'list' => array(
					'pagelayer-btn-icon-left' => __pl('left'),
					'pagelayer-btn-icon-right' => __pl('right')
				),
				'req' => array(
					'!button_icon' => ''
				),
			),
		],
		'btn_styles' => [
			'button_text' => array(
				'type' => 'text',
				'label' => __pl('button_text_label'),
				'default' => 'Open Modal Box',
			),
			'size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-large',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				)
			),
			'btn_custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('btn_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'padding: {{val}}px {{val}}px;'],
				'req' => array(
					'size' => 'pagelayer-btn-custom'
				)
			),
			'type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-default',
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
			),
			'button_full_width' => array(
				'type' => 'checkbox',
				'label' => __pl('stretch'),
				'screen' => 1,
				'css' => ['{{element}} a' => 'width: 100%; text-align: center;']
			),
			'button_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'left',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-button' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => array(
					'button_full_width' => ''
				)
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => '',
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-btn-holder' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-btn-holder:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
		],
		'title_style' => [
			'modal_title' => array(
				'type' => 'textarea',
				'label' => __pl('title'),
				'default' => __pl('modal_title_content_default'),
				'edit' => '.pagelayer-modal-title'
			),
			'title_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-title' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => [
					'!modal_title' => ''
				],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-modal-title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => [
					'!modal_title' => ''
				],
			),
			'padding' => array(
				'type' => 'padding',
				'label' => __pl('stars_spacing'),
				'default' => '25,25,25,25',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-title' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
				'req' => [
					'!modal_title' => ''
				],
			),
			'modal_title_bgcolor' => array(
				'type' => 'color',
				'label' =>  __pl('bg_color'),
				'default' => '#3D54DF',
				'css' => ['{{element}} .pagelayer-modal-title' => 'background-color: {{val}}'],
				'req' => [
					'!modal_title' => '',
					'modal_style' => 'custom'
				],
			),
			'modal_title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-modal-title' => 'color: {{val}}'],
				'req' => [
					'!modal_title' => '',
					'modal_style' => 'custom'
				],
			)
		],
		'content_style' => [
			'content' => array(
				'type' => 'editor',
				'label' => __pl('obj_content'),
				'default' => __pl('content_with_tags_default'),
				'edit' => '.pagelayer-modal-bottom-content'
			),
			'content_padding' => array(
				'type' => 'padding',
				'label' => __pl('stars_spacing'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-modal-bottom-content' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px']
			),
			'modal_content_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'req' => array(
					'modal_style' => 'custom'
				),
				'css' => ['{{element}} .pagelayer-modal-body' => 'color: {{val}}'],
			),
			'modal_content_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#ffffff',
				'req' => array(
					'modal_style' => 'custom'
				),
				'css' => ['{{element}} .pagelayer-modal-bottom-content' => 'background-color: {{val}}'],
			),
		],
		'close_style' => [
			'close_size' => array(
				'type' => 'spinner',
				'label' => __pl('size'),
				'min' => 0,
				'step' => 1,
				'max' => 200,
				'default' => 50,
				'screen' => 1,
				'css' => [
					'{{element}} .pagelayer-modal-close:before' => 'height: {{val}}px; right: calc( {{val}}px / 2 );',
					'{{element}} .pagelayer-modal-close' => 'height: {{val}}px; width: {{val}}px;',
					'{{element}} .pagelayer-modal-close:after' => 'height: {{val}}px; right: calc( {{val}}px / 2 );'
				]
			),
			'modal_close_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-modal-close::before' => 'background-color:{{val}}', '{{element}} .pagelayer-modal-close::after' => 'background-color:{{val}}'],
				'req' => array(
					'modal_style' => 'custom',
				)
			),
			'close_by_overlay' => array(
				'type' => 'checkbox',
				'label' => __pl('close_by_overlay')
			)
		],
		'styles' => [
			'btn_styles' => __pl('btn_style'),
			'icon_style' => __pl('icon_style'),
			'title_style' => __pl('title_style'),
			'content_style' => __pl('content_style'),
			'close_style' => __pl('close_style'),
		]
	)
);

// Splash Screen
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_splash', array(
		'name' => __pl('splash_screen'),
		'group' => 'other',
		'innerHTML' => 'content',
		'html' => '<div class="pagelayer-splash-container  pagelayer-splash-{{style}}">
			<div if={{close_by_overlay}} class="pagelayer-splash-bg-close"></div>
			<span class="pagelayer-splash-close"></span>
			<div class="pagelayer-splash-body">
					<div if="{{title}}"class="pagelayer-splash-title">{{title}}</div>
					<div class="pagelayer-splash-content-overflow" if-ext="{{content}}">
						<div class="pagelayer-splash-bottom-content">{{content}}</div>
					</div>	
				</div>
		</div>',
		'params' => array(
			'style' => array(
				'type' => 'radio',
				'label' => __pl('style'),
				'default' => 'dark',
				'list' => array(
					'dark' => __pl('dark'),
					'light' => __pl('light'),
					'custom' => __pl('custom')
				)
			),
			'shadow_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#0b0b0b',
				'css' => ['{{element}} .pagelayer-splash-container ' => 'background:{{val}}'],
				'req' => array(
					'style' => 'custom'
				)
			),
			'display' => array(
				'type' => 'select',
				'label' => __pl('display'),
				'list' => array(
					'once' => __pl('once'),
					'always' => __pl('always')
				),
				'default' => 'once',
				'addAttr' => ['{{element}} .pagelayer-splash-container' => 'display_type="{{display}}"']
			),
			'delay' => array(
				'type' => 'spinner',
				'label' => __pl('animation_delay'),
				'default' => 1000,
				'min' => 100,
				'addAttr' => ['{{element}} .pagelayer-splash-container' => 'delay="{{delay}}"']
			),
			'width' => array(
				'type' => 'slider',
				'label' => __pl('icon_border_width'),
				'screen' => 1,
				'default' => '90',
				'css' => ['{{element}} .pagelayer-splash-body' => 'width:{{val}}%'],
			),
			'splash_popup_height' => array(
				'type' => 'slider',
				'label' => __pl('content_max_height'),
				'min' => 100,
				'max' => 1500,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-splash-content-overflow' => 'max-height: {{val}}px'],
			),
		),
		'title_style' => [
			'title' => array(
				'type' => 'textarea',
				'label' => __pl('title'),
				'default' => __pl('splash_title_content_default'),
				'edit' => '.pagelayer-splash-title'
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-splash-title' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => [
					'!title' => ''
				],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-splash-title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => [
					'!title' => ''
				],
			),
			'padding' => array(
				'type' => 'padding',
				'label' => __pl('space_around'),
				'default' => '25,25,25,25',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-splash-title' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
				'req' => [
					'!title' => ''
				],
			),
			'title_bg' => array(
				'type' => 'color',
				'label' =>  __pl('bg_color'),
				'default' => '#3D54DF',
				'css' => ['{{element}} .pagelayer-splash-title' => 'background-color: {{val}}'],
				'req' => [
					'!title' => '',
					'style' => 'custom'
				],
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-splash-title' => 'color: {{val}}'],
				'req' => [
					'!title' => '',
					'style' => 'custom'
				],
			)
		],
		'content_style' => [
			'content' => array(
				'type' => 'editor',
				'label' => __pl('obj_content'),
				'default' => __pl('content_with_tags_default'),
				'edit' => '.pagelayer-splash-bottom-content'
			),
			'content_color' => array(
				'type' => 'color',
				'label' => __pl('obj_content_color_label'),
				'default' => '#0b0b0b',
				'css' => ['{{element}} .pagelayer-splash-container ' => 'color:{{val}}'],
				'req' => array(
					'style' => 'custom'
				)
			),
			'content_padding' => array(
				'type' => 'padding',
				'label' => __pl('space_around'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-splash-bottom-content' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
			),
		],
		'close_style' => [
			'close_size' => array(
				'type' => 'spinner',
				'label' => __pl('size'),
				'min' => 0,
				'step' => 1,
				'max' => 200,
				'default' => 50,
				'screen' => 1,
				'css' => [
					'{{element}} .pagelayer-splash-close:before' => 'height: {{val}}px; right: calc( {{val}}px / 2 );',
					'{{element}} .pagelayer-splash-close' => 'height: {{val}}px; width: {{val}}px;',
					'{{element}} .pagelayer-splash-close:after' => 'height: {{val}}px; right: calc( {{val}}px / 2 );'
				]
			),
			'close_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-splash-close::after, {{element}} .pagelayer-splash-close::before ' => 'background-color:{{val}}'],
				'req' => array(
					'style' => 'custom'
				)
			),
			'close_by_overlay' => array(
				'type' => 'checkbox',
				'label' => __pl('close_by_overlay')
			),
		],
		'styles' => [
			'title_style' => __pl('title_style'),
			'content_style' => __pl('content_style'),
			'close_style' => __pl('close_style'),
		]
	)
);

// Chart
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_chart', array(
		'name' => __pl('chart'),
		'group' => 'other',
		'has_group' => [
			'section' => 'datasets', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-chart-child-holder',
		'html' => '<div if="{{title}}" class="pagelayer-chart-title">{{title}}</div>
			<div class="pagelayer-chart-child-holder"></div>
			<canvas class="pagelayer-chart-holder"></canvas>',
		'params' => array(
			'type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'desc' => __pl('google_charts_type_desc'),
				'default' => 'bar',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-type="{{type}}"'],
				'list' => array(
					'line' => __pl('google_charts_type_list_line'),
					'bar' => __pl('google_charts_type_list_bar'),
					'horizontalBar' => __pl('horizontalbar_chart'),
					'radar' => __pl('radar'),
					'doughnut' => __pl('doughnut_chart'),
					'pie' => __pl('google_charts_type_list_pie'),
					'polarArea' => __pl('polararea'),
				)
			),
			'legend_pos' => array(
				'type' => 'select',
				'label' => __pl('legend_pos'),
				//'desc' => __pl('legend_pos_desc'),
				'default' => 'top',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-legend="{{legend_pos}}"'],
				'list' => array(
					'' => __pl('none'),
					'top' => __pl('top'),
					'left' => __pl('left'),
					'bottom' => __pl('bottom'),
					'right' => __pl('right'),
				)
			),
			'custom_dimension' => array(
				'type' => 'checkbox',
				'label' => __pl('custom_dimension'),
				'default' => '',
			),
			'chart_height' => array(
				'type' => 'slider',
				'label' => __pl('custom_height'),
				'screen' => 1,
				'min' => 0,
				'max' => 1000,
				'step' => 1,
				'default' => 350,
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-height="{{chart_height}}"'],
				'css' => ['{{element}} .pagelayer-chart-holder' => 'height: {{val}}px !important;'],
				'req' => array(
					'custom_dimension' => 'true'
				),
			),
			'chart_width' => array(
				'type' => 'slider',
				'label' => __pl('custom_width'),
				'screen' => 1,
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'default' => 100,
				'css' => ['{{element}} .pagelayer-chart-holder' => 'width: {{val}}% !important;'],
				'req' => array(
					'custom_dimension' => 'true'
				),
			),
			/* 'colors' => array(
				'type' => 'textarea',
				'label' => __pl('google_charts_colors_label'),
				'desc' => 'You can give multiple colors here and separate them by coma(,) E.g. #000000, #ffffff, #f4c63d, #923a3a',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-colors="{{colors}}"'],
			), */
			/* 'width' => array(
				'type' => 'slider',
				'label' => __pl('Chart_width'),
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-width="{{width}}%"'],
			), */
		),
		'label_style' => [
			'labels' => array(
				'type' => 'textarea',
				'label' => __pl('label_style'),
				'desc' => __pl('Enter labels with comma(,) separeted'),
				'default' => 'Jan,Feb,Mar,Apr,May',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-labels="{{labels}}"'],
			),
			'label_colors' => array(
				'type' => 'textarea',
				'label' => __pl('colors'),
				'desc' => __pl('Enter hex color code with comma(,) separeted'),
				'default' => '#3e95cd,#8e5ea2,#3cba9f,#e8c3b9,#c45850',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'chart-colors="{{label_colors}}"'],
				'req' => [
					'type' => ['doughnut', 'pie', 'polarArea']
				]
			),
		],
		'datasets' => [
			'elements' => array(
				'type' => 'group',
				'label' => __pl('datasets'),
				'sc' => PAGELAYER_SC_PREFIX.'_chart_datasets',
				'item_label' => array(
					'default' => __pl('dataset'),
					'param' => 'datasets',
				),
				'count' => 1,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('dataset_name'))),
			),
		],
		'ticks_style' => [
			'tick_type' => array(
				'type' => 'radio',
				'label' => __pl('axis'),
				'default' => 'xaxis',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'xaxis' => __pl('x-axis'),
					'yaxis' => __pl('y-axis'),
				)
			),
			'xcolor' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-xcolor="{{xcolor}}"'],
				'show' => array(
					'tick_type' => 'xaxis'
				),
			),
			'xsize' => array(
				'type' => 'slider',
				'label' => __pl('size'),
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-xsize="{{xsize}}"'],
				'show' => array(
					'tick_type' => 'xaxis'
				),
			),
			'xrotate' => array(
				'type' => 'slider',
				'label' => __pl('Rotate'),
				'min' => 0,
				'max' => 360,
				'screen' => 1,
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-xrotate="{{xrotate}}"'],
				'show' => array(
					'tick_type' => 'xaxis'
				),
			),
			'xbegin' => array(
				'type' => 'checkbox',
				'label' => __pl('begin_at_zero'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-xbegin="{{xbegin}}"'],
				'show' => array(
					'tick_type' => 'xaxis'
				),
			),
			'ycolor' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-ycolor="{{ycolor}}"'],
				'show' => array(
					'tick_type' => 'yaxis'
				),
			),
			'ysize' => array(
				'type' => 'slider',
				'label' => __pl('size'),
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-ysize="{{ysize}}"'],
				'show' => array(
					'tick_type' => 'yaxis'
				),
			),
			'yrotate' => array(
				'type' => 'slider',
				'label' => __pl('Rotate'),
				'min' => 0,
				'max' => 360,
				'screen' => 1,
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-yrotate="{{yrotate}}"'],
				'show' => array(
					'tick_type' => 'yaxis'
				),
			),
			'ybegin' => array(
				'type' => 'checkbox',
				'label' => __pl('begin_at_zero'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-chart-holder' => 'data-ybegin="{{ybegin}}"'],
				'show' => array(
					'tick_type' => 'yaxis'
				),
			),
		],
		'title_style' => [
			'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'default' => __pl('company_performance'),
				'edit' => '.pagelayer-chart-title',
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#47425d',
				'css' => ['{{element}} .pagelayer-chart-title' => 'color:{{val}}'],
				'req' => [
					'!title' => ''
				],
			),
			'title_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-chart-title' => 'text-align:{{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'req' => [
					'!title' => ''
				],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-chart-title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => [
					'!title' => ''
				],
			),
		],
		'styles' => [
			'label_style' => __pl('label_style'),
			'datasets' => __pl('datasets'),
			'ticks_style' => __pl('ticks_style'),
			'title_style' => __pl('title_style'),
		],
	)
);

// Chart
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_chart_datasets', array(
		'name' => __pl('chart_dataset'),
		'group' => 'other',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_chart'],
		'holder' => '.pagelayer-chart-datasets',
		'html' => '<div class="pagelayer-chart-datasets"></div>',
		'params' => array(
			'label' => array(
				'type' => 'text',
				'label' => __pl('label'),
				'default' => __pl('dataset_name'),
				'addAttr' => ['{{element}} .pagelayer-chart-datasets' => 'datasets-label="{{label}}"'],
			),
			'datasets' => array(
				'type' => 'textarea',
				'label' => __pl('dataset_name'),
				'desc' => __pl('Enter the datasets and separate by coma(,)'),
				'default' => '5,9,7,8,5',
				'addAttr' => ['{{element}} .pagelayer-chart-datasets' => 'chart-datasets="{{datasets}}"'],
			),
			'bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'addAttr' => ['{{element}} .pagelayer-chart-datasets' => 'dataset-bg="{{bg_color}}"'],
			),
			'chart_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'addAttr' => ['{{element}} .pagelayer-chart-datasets' => 'border-color="{{chart_border_color}}"'],
			),
			'fill_color' => array(
				'type' => 'checkbox',
				'label' => __pl('fill_color'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-chart-datasets' => 'dataset-fill="{{fill_color}}"']
			),
		),
	)
);

// Menu list
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_menu_list', array(
		'name' => __pl('menu_list'),
		'group' => 'other',
		'holder' => '.pagelayer-menu-list',
		//'innerHTML' => 'text',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'html' => '<div class="pagelayer-menu-list"></div>',
		'params' => [
			'elements' => array(
				'type' => 'group',
				'label' => __pl('menu_item'),
				'sc' => PAGELAYER_SC_PREFIX.'_menu_item',
				'item_label' => array(
					'default' => __pl('menu_item'),
					'param' => 'title'
				),
				'count' => 3,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('menu_name'))),
			),
			'item_space' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-item' => 'padding-bottom: calc({{val}}px / 2); margin-bottom: calc({{val}}px / 2);'],
			),
			'valign' => array(
				'type' => 'select',
				'label' => __pl('badge_vertical_align'),
				'default' => 'center',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-item' => '-webkit-box-align:{{val}}; -webkit-align-items:{{val}}; -ms-flex-align:{{val}}; align-items:{{val}};'],
				'list' => [
					'flex-start' => __pl('top'),
					'center' => __pl('center'),
					'flex-end' => __pl('bottom'),
				],
			),
			'item_border_type' => array(
				'type' => 'select',
				'label' => __pl('divider'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-menu-item' => 'border-bottom-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'item_border_color' => array(
				'type' => 'color',
				'label' => __pl('divider_color'),
				'default' => '#dbdbdb',
				'css' => ['{{element}} .pagelayer-menu-item' => 'border-bottom-color: {{val}};'],
				'req' => ['!item_border_type' => '']
			),
			'item_border_width' => array(
				'type' => 'slider',
				'label' => __pl('thickness'),
				'min' => 0,
				'max' => 20,
				'step' => 1,
				'default' => 2,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-item' => 'border-bottom-width: {{val}}px;'],
				'req' => ['!item_border_type' => '']
			),
		],
		'title_styles' => [
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#0c0901',
				'css' => ['{{element}} .pagelayer-menu-title' => 'color:{{val}}'],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',19,,700,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-menu-title span:first-child' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'space_bottom' => array(
				'type' => 'slider',
				'label' => __pl('space_bottom'),
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-title' => 'padding-bottom:{{val}}px;']
			),
		],
		'item_details' => [
			'includes_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#484745',
				'css' => ['{{element}} .pagelayer-menu-includes' => 'color:{{val}}'],
			),
			'includes_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',12,italic,200,,,,,,,',
				'css' => ['{{element}} .pagelayer-menu-includes' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'separator_style' => [
			'separater' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'dotted',
				'css' => ['{{element}} .pagelayer-menu-separeter' =>'border-top-style:{{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
				]
			),
			'separater_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#777777',
				'css' => ['{{element}} .pagelayer-menu-separeter' => 'border-top-color:{{val}};'],
				'req' => ['!separater' => '']
			),
			'separater_width' => array(
				'type' => 'slider',
				'label' => __pl('shape_width'),
				'min' => 0,
				'max' => 20,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-separeter' => 'border-top-width:{{val}}px;'],
				'default' => 1,
				'req' => ['!separater' => '']
			),
			'separater_spacing' => array(
				'type' => 'slider',
				'label' => __pl('stars_spacing'),
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-separeter' => 'margin: 0 {{val}}px;'],
				'default' => 10,
				'req' => ['!separater' => '']
			),
		],
		'price_style' => [
			'price_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#c02530',
				'css' => ['{{element}} .pagelayer-menu-price' => 'color:{{val}}'],
			),
			'price_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',25,,600,,,,,,,',
				'css' => ['{{element}} .pagelayer-menu-price' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'desc_style' => [
			'desc_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#484745',
				'css' => ['{{element}} .pagelayer-menu-desc' => 'color:{{val}}'],
			),
			'desc_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',14,,,,,solid,1.5,,,',
				'css' => ['{{element}} .pagelayer-menu-desc' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'image_style' => [
			'custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('shape_width'),
				'min' => 0,
				'max' => 2000,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-img img' => 'width: {{val}}px;'],
				'default' => 400,
			),
			'img_spacing' => array(
				'type' => 'slider',
				'label' => __pl('stars_spacing'),
				'min' => 0,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-img' => 'padding-right: {{val}}px;'],
				'default' => 10,
			),
			'img_border_hover' => array(
				'type' => 'radio',
				'label' => '',
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'img_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-menu-img img' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'img_border_hover' => ''
				),
			),
			'img_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-menu-img img' => 'border-color: {{val}};'],
				'req' => array(
					'!img_border_type' => ''
				),
				'show' => array(
					'img_border_hover' => ''
				),
			),
			'img_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-img img' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!img_border_type' => ''
				],
				'show' => array(
					'img_border_hover' => ''
				),
			),
			'img_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-menu-img img' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'img_border_hover' => ''
				),
			),
			'img_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}}:hover .pagelayer-menu-img img' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'img_border_hover' => 'hover'
				),
			),
			'img_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}}:hover .pagelayer-menu-img img' => 'border-color: {{val}};'],
				'default' => '#0986c0',
				'req' => array(
					'!img_border_type' => ''
				),
				'show' => array(
					'img_border_hover' => 'hover'
				),
			),
			'img_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}}:hover .pagelayer-menu-img img' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!img_border_type' => ''
				],
				'show' => array(
					'img_border_hover' => 'hover'
				),
			),
			'img_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}}:hover .pagelayer-menu-img img' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'show' => array(
					'img_border_hover' => 'hover'
				),
			),
		],
		'styles' => [
			'title_styles' => __pl('title_style'),
			'item_details' => __pl('item_details'),
			'price_style' => __pl('price_style'),
			'desc_style' => __pl('desc_style'),
			'image_style' => __pl('image_style'),
			'separator_style' => __pl('separator_style'),
		]
	)
);

// Menu item
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_menu_item', array(
		'name' => __pl('menu_item'),
		'group' => 'other',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_menu_list'],
		//'innerHTML' => 'text',
		'html' => '<div class="pagelayer-menu-item">
			<div if="{{img}}" class="pagelayer-menu-img">
				<img class="pagelayer-img" src="{{{img-url}}}" title="{{{img-title}}}" alt="{{{img-alt}}}"/>
			</div>
			<div class="pagelayer-menu-details">
				<div class="pagelayer-menu-text">
					<div class="pagelayer-menu-title">
						<span if="{{title}}">
							<div class="pagelayer-menu-title-holder">{{title}}</div>
							<div if="{{includes}}" class="pagelayer-menu-includes">{{includes}}</div>
						</span>
						<span class="pagelayer-menu-separeter"></span>
						<span if="{{price}}" class="pagelayer-menu-price">{{price}}</span>
					</div>
					<div if="{{desc}}" class="pagelayer-menu-desc">{{desc}}</div>
				</div>
			</div>
		</div>',
		'params' => array(
			'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'default' => __pl('menu_item'),
				'edit' => '.pagelayer-menu-title-holder',
			),
			'includes' => array(
				'type' => 'text',
				'label' => __pl('includes_styles'),
				'default' => __pl('includes_default'),
				'edit' => '.pagelayer-menu-includes',
			),
			'desc' => array(
				'type' => 'textarea',
				'label' => __pl('desc_style'),
				'default' => __pl('desc_default'),
				'edit' => '.pagelayer-menu-desc',
			),
			'price' => array(
				'type' => 'text',
				'label' => __pl('price_style'),
				'default' => __pl('$59'),
				'edit' => '.pagelayer-menu-price',
			),
			'img' => array(
				'type' => 'image',
				'label' => __pl('Image'),
			),
		)
		
	)
);

// Post Portfolio
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_post_folio', array(
		'name' => __pl('post_folio'),
		'group' => 'other',
		'html' => '<div class="pagelayer-postfolio-section">{{post_html}}</div>',
		'params' => array(
			'type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'post',
				'list' => array(
					'post' => __pl('post'),
					'page' => __pl('page'),
				),
			),
			'columns' => array(
				'type' => 'select',
				'label' => __pl('columns'),
				'default' => '3',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-container' => 'grid-template-columns: repeat({{val}},1fr);'],
				'list' => array(
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				),
			),
			'count' => array(
				'type' => 'spinner',
				'label' => __pl('post_per_page'),
				'min' => 1,
				'step' => 1,
				'default' => 6,
			),
			'ratio' => array(
				'type' => 'spinner',
				'label' => __pl('ratio'),
				'min' => 0,
				'step' => 0.1,
				'max' => 2,
				'default' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-thumb' => 'padding: calc(50% * {{val}}) 0;'],
			),
			'col_gap' => array(
				'type' => 'slider',
				'label' => __pl('col_gap'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-container' => 'grid-column-gap: {{val}}px;'],
			),
			'row_gap' => array(
				'type' => 'slider',
				'label' => __pl('row_gap'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-container' => 'grid-row-gap: {{val}}px;'],
			),
			'thumb_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'min' => 0,
				'step' => 1,
				'max' => 50,
				'default' => 0,
				'screen' => 1,
				'css' => [
					'{{element}} .pagelayer-postfolio-thumb' => 'border-radius:{{val}}%;',
					'{{element}} .pagelayer-postfolio-content' => 'border-radius:{{val}}%;'
				],
			),
		),
		'title_style' => [
			'title_hover' => [
				'type' => 'radio',
				'label' => '',
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
			],
			'show_title' => array(
				'type' => 'checkbox',
				'label' => __pl('show_title'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-entry-title' => 'opacity:1;'],
				'show' => ['title_hover' => '']
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .pagelayer-entry-title' => 'color:{{val}};'],
				'show' => ['title_hover' => ''],
				'req' => ['show_title' => 'true']
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('title_typo'),
				'default' => ',20,,600,,,,,,,',
				'css' => ['{{element}} .pagelayer-entry-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['title_hover' => ''],
				'req' => ['show_title' => 'true']
			),
			'show_title_hover' => array(
				'type' => 'checkbox',
				'label' => __pl('show_title'),
				'default' => 'true',
				'css' => ['{{element}} .pagelayer-postfolio-content:hover .pagelayer-entry-title' => 'opacity:1;'],
				'show' => ['title_hover' => 'hover']
			),
			'title_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#333333',
				'css' => ['{{element}} .pagelayer-postfolio-content:hover .pagelayer-entry-title' => 'color:{{val}};'],
				'show' => ['title_hover' => 'hover'],
				'req' => ['show_title_hover' => 'true']
			),
			'title_typo_hover' => array(
				'type' => 'typography',
				'label' => __pl('title_typo'),
				'default' => ',20,,600,,,,,,,',
				'css' => ['{{element}} .pagelayer-postfolio-content:hover .pagelayer-entry-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['title_hover' => 'hover'],
				'req' => ['show_title_hover' => 'true']
			),
		],
		'overlay_style' => [
			'overlay_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#dadada',
				'css' => ['{{element}} .pagelayer-postfolio-thumb' => 'background-color:{{val}};']
			),
			'overlay_color_hover' => array(
				'type' => 'color',
				'label' => __pl('on_hover'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-postfolio-content:hover' => 'background-color:{{val}};']
			),
			'overlay_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('overlay_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 3000,
				'default' => 400,
				'css' => [
					'{{element}} .pagelayer-postfolio-content' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;',
					'{{element}} .pagelayer-entry-title' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;',
				],
			),
		],
		'filter_style' => [
			'filter_by' => array(
				'type' => 'select',
				'label' => __pl('filter_by'),
				'default' => 'category',
				'list' => array(
					'none' => __pl('none'),
					'category' => __pl('category'),
					'tags' => __pl('tags'),
				),
			),
			'filter_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#8DBCFA',
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'color:{{val}};'],
				'req' => ['!filter_by' => '']
			),
			'filter_bg' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'background-color:{{val}};'],
				'req' => ['!filter_by' => '']
			),
			'filter_typo' => array(
				'type' => 'typography',
				'label' => __pl('title_typo'),
				'default' => ',20,,,,,,,,,',
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['!filter_by' => '']
			),
			'filter_size' => array(
				'type' => 'dimension',
				'label' => __pl('btn_padding'),
				'default' => '5,10',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'padding-top: {{val[0]}}px; padding-bottom: {{val[0]}}px; padding-left: {{val[1]}}px; padding-right: {{val[1]}}px;'],
				'req' => ['!filter_by' => '']
			),
			'filter_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'border-radius:{{val}}px;'],
				'req' => ['!filter_by' => '']
			),
			'filter_spacing' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-btn' => 'margin:0 {{val}}px;'],
				'req' => ['!filter_by' => '']
			),
			'space_bottom' => array(
				'type' => 'slider',
				'label' => __pl('space_bottom'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 10,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-postfolio-filter' => 'padding-bottom:{{val}}px;'],
				'req' => ['!filter_by' => '']
			),
		],
		'styles' => [
			'title_style' => __pl('title_style'),
			'overlay_style' => __pl('overlay_style'),
			'filter_style' => __pl('filter_style'),
		]
	)
);

// Posts
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_posts', array(
		'name' => __pl('posts'),
		'group' => 'other',
		'prevent_inside' => ['pl_slides'],
		'html' => '<div class="pagelayer-posts-container">{{post_html}}</div>
		<div if="{{infinite_types}}" class="pagelayer_load_button" data-text={{infinite_final}}>
			<a data-max="{{max_pages}}" class="pagelayer-btn-holder pagelayer-btn-load pagelayer-ele-link {{infinite_btn_type}} {{infinite_btn_size}} {{load_btn_icon_position}}">
				<i if="{{load_btn_icon}}" class="{{load_btn_icon}} pagelayer-btn-load-icon"></i>
				<span if="{{infinite_text}}" class="pagelayer-btn-load-text" >{{infinite_text}}</span>
				<i if="{{load_btn_icon}}" class="{{load_btn_icon}} pagelayer-btn-load-icon"></i>
			</a>
			<div class="pagelayer-loader-holder" >
				<i class="fa fa-spinner fa-spin fa-3x fa-fw" aria-hidden="true"></i>
			</div>
		</div>',
		'params' => array(
			'post_type' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_post_type_label'),
				'desc' => __pl('posts_grid_post_type_desc'),
				'list' => array(
					'post' => __pl('post'),
					//'page' => __pl('page')
				)
			),
			'by_period' => array(
				'type' => 'select',
				'label' => __pl('period'),
				'default' => '',
				'list' => array(
					'' => __pl('all'),
					'last_day' => __pl('last_day'),
					'last_week' => __pl('last_week'),
					'last_month' => __pl('last_month'),
					'last_year' => __pl('last_year'),
					'custom' => __pl('custom'),
					//'ID' => __pl('ID'),
				)
			),
			'before_date' => array(
				'type' => 'datetime',
				'displayMode' => 'datetime', // date | datetime (default)
				'returnMode' => 'YYYY-MM-DD H:m:s', // mysql format uses here (default: Y-m-d H:i:s )
				'label' => __pl('before'),
				'default' => '',
				'req' => ['by_duration' => 'custom']
			),
			'after_date' => array(
				'type' => 'datetime',
				'displayMode' => 'datetime', // date | datetime (default)
				'returnMode' => 'YYYY-MM-DD H:m:s', // mysql format uses here (default: Y-m-d H:i:s )
				'label' => __pl('after'),
				'default' => '',
				'req' => ['by_duration' => 'custom']
			),
			'orderby' => array(
				'type' => 'select',
				'label' => __pl('posts_order_by'),
				'default' => 'date',
				'list' => array(
					'date' => __pl('date'),
					'title' => __pl('title'),
					'modified' => __pl('posts_order_by_modified'),
					'rand' => __pl('posts_order_by_random'),
					'menu_order' => __pl('posts_order_by_menu_order'),
					'author' => __pl('author'),
					'ID' => __pl('ID'),
				)
			),
			'posts_order' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_sort_order'),
				'default' => 'DESC',
				'list' => array(
					'ASC' => __pl('posts_grid_sort_order_ascending'),
					'DESC' => __pl('posts_grid_sort_order_descending')
				)
			),
			'count' => array(
				'type' => 'spinner',
				'label' => __pl('post_per_page'),
				'min' => 1,
				'step' => 1,
				'default' => 6,
			),
			'que_sec' => array(
				'type' => 'radio',
				'label' => '',
				'default' => 'include',
				'list' => array(
					'include' => __pl('include'),
					'exclude' => __pl('exclude')
				)
			),
			'include_by' => array(
				'type' => 'multiselect',
				'label' => __pl('include_by'),
				'list' => array(
					'term' => __pl('term'),
					'author' => __pl('author')
				),
				'show' => ['que_sec' => 'include']
			),
			'inc_term' => array(
				'type' => 'multiselect',
				'label' => __pl('term'),
				'list' => pagelayer_get_post_term(),
				'req' => ['include_by' => ['term','term,author']],
				'show' => ['que_sec' => 'include']
			),
			'inc_author' => array(
				'type' => 'select',
				'label' => __pl('author'),
				'list' => pagelayer_get_post_author(),
				'req' => ['include_by' => ['author','term,author']],
				'show' => ['que_sec' => 'include']
			),
			'ignore_sticky' => array(
				'label' => __pl('ignore_sticky_posts'),
				'type' => 'checkbox',
				'show' => ['que_sec' => 'include']
			),
			'exclude_by' => array(
				'type' => 'multiselect',
				'label' => __pl('exclude_by'),
				'list' => array(
					'term' => __pl('term'),
					'author' => __pl('author')
				),
				'show' => ['que_sec' => 'exclude']
			),
			'exc_term' => array(
				'type' => 'multiselect',
				'label' => __pl('term'),
				'list' => pagelayer_get_post_term(),
				'req' => ['exclude_by' => ['term','term,author']],
				'show' => ['que_sec' => 'exclude']
			),
			'exc_author' => array(
				'type' => 'select',
				'label' => __pl('author'),
				'list' => pagelayer_get_post_author(),
				'req' => ['exclude_by' => ['author','term,author']],
				'show' => ['que_sec' => 'exclude']
			),
			'offset' => array(
				'type' => 'spinner',
				'label' => __pl('offset'),
				'min' => 0,
				'step' => 1,
				'max' => 50,
				'show' => ['que_sec' => 'exclude']
			),
		),
		'posts_options' => $pagelayer_posts_options,
		'thumb_style' => $pagelayer_thumb_style,
		'title_style' => $pagelayer_title_style,
		'meta_options' => $pagelayer_meta_style,
		'content_style' => $pagelayer_content_style,
		'more_style' => $pagelayer_more_style,
		'btn_border_style' => $pagelayer_btn_border_style,
		'slider_options' => [
			'enable_slider' => array(
				'type' => 'checkbox',
				'label' => __pl('enable_slider'),
				'default' => '',
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-enable_slider="enable"']
			),
			'slide_items' => array(
				'type' => 'spinner',
				'label' => __pl('number_of_items'),
				'min' => 1,
				'step' => 1,
				'max' => 10,
				'default' => 1,
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-items="{{slide_items}}"'],
				'req' => ['enable_slider' => 'true']
			),
			'slide_margin' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 10,
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-margin="{{slide_margin}}"'],
				'req' => [
					'!slide_items' => '1',
					'enable_slider' => 'true'
				]
			),
			'slide_loop' => array(
				'type' => 'checkbox',
				'label' => __pl('loop'),
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-loop="{{slide_loop}}"'],
				'req' => ['enable_slider' => 'true']
			),
			'slide_nav' => array(
				'type' => 'checkbox',
				'label' => __pl('navigation'),
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-nav="{{slide_nav}}"'],
				'req' => ['enable_slider' => 'true']
			),
			'slide_dots' => array(
				'type' => 'checkbox',
				'label' => __pl('bullets'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-dots="{{slide_dots}}"'],
				'req' => ['enable_slider' => 'true']
			),
			'slide_autoplay' => array(
				'type' => 'checkbox',
				'label' => __pl('autoplay'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-autoplay="{{slide_autoplay}}"'],
				'req' => ['enable_slider' => 'true']
			),
			'slide_timeout' => array(
				'type' => 'spinner',
				'label' => __pl('autoplay_timeout'),
				'min' => 1000,
				'step' => 200,
				'max' => 10000,
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-autoplay-timeout="{{slide_timeout}}"'],
				'req' => [
					'slide_autoplay' => 'true',
					'enable_slider' => 'true'
				]
			),
			'slide_hoverpause' => array(
				'type' => 'checkbox',
				'label' => __pl('autoplay_hover_pause'),
				'addAttr' => ['{{element}} .pagelayer-posts-container' => 'data-owl-autoplay-hover-pause="{{slide_hoverpause}}"'],
				'req' => [
					'slide_autoplay' => 'true',
					'enable_slider' => 'true'
				]
			),
		],
		'infinite' => $pagelayer_infinite_style,
		'arrow_styles' => $pagelayer->slider_arrow_styles,
		'pager_styles' => $pagelayer->slider_pager_styles,
		'styles' => [
			'posts_options' => __pl('posts_options'),
			'thumb_style' => __pl('thumb_style'),
			'title_style' => __pl('title_style'),
			'meta_options' => __pl('meta_options'),
			'content_style' => __pl('content_style'),
			'more_style' => __pl('more_style'),
			'btn_border_style' => __pl('border_styles'),
			'slider_options' => __pl('slider_options'),
			'arrow_styles' => __pl('arrow_styles'),
			'pager_styles' => __pl('pager_styles'),
			'infinite' => __pl('infinite_scroll'),
		]
	)
);

// Slides
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_slides', array(
		'name' => __pl('slides'),
		'group' => 'other',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'prevent_inside' => ['pl_slides'],
		'holder' => '.pagelayer-slides-holder',
		'child_selector' => '>.pagelayer-owl-stage-outer>.pagelayer-owl-stage>.pagelayer-owl-item', // Make it very specifc
		'html' => '<div class="pagelayer-slides-holder pagelayer-owl-holder pagelayer-owl-carousel pagelayer-owl-theme"></div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('slide'),
				'sc' => PAGELAYER_SC_PREFIX.'_content_slide',
				'item_label' => array(
					'default' => __pl('slide'),
					'param' => 'item'
				),
				'count' => 2,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('slide'))),
			),
			'height' => array(
				'type' => 'slider',
				'label' => __pl('height'),
				'screen' => 1,
				'min' => 1,
				'step' => 1,
				'max' => 1500,
				'units' => ['vh','px','%'],
				'css' => [
					'{{element}} .pagelayer-slide, {{element}} .pagelayer-content-slide' => 'max-height: {{val}}; height:{{val}};',
				],
			),
		),
		'slider_options' => $pagelayer->slider_options,
		'arrow_styles' => $pagelayer->slider_arrow_styles,
		'pager_styles' => $pagelayer->slider_pager_styles,
		'styles' => [
			'slider_options' => __pl('slider_options'),
			'arrow_styles' => __pl('arrow_styles'),
			'pager_styles' => __pl('pager_styles'),
		]
	)
);

// Content Slide
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_content_slide', array(
	'name' => __pl('content_slide'),
	'group' => 'other',
	'has_group' => [
		'section' => 'params', 
		'prop' => 'elements',
	],
	'not_visible' => 1,
	'parent' => [PAGELAYER_SC_PREFIX.'_slides'],
	'holder' => '.pagelayer-content-slide',
	'html' => '<div class="pagelayer-content-slide-bg"></div>
	<div class="pagelayer-slide-bg-overlay"></div>
	<div class="pagelayer-content-slide"></div>',
	'params' => array(
		'elements' => array(
			'type' => 'group',
			'label' => __pl('Inner Row'),
			'sc' => PAGELAYER_SC_PREFIX.'_inner_row',
			'count' => 1,
			'item_label' => array(
				'default' => __pl('Slide Inner Row'),
			),
			'inner_content' => [
				['pl_col' => [
					'atts' => ['ele_padding' => '8%,8%,8%,8%', 'content_pos' => 'center'],
					'inner_content' => [
						['pl_anim_heading' => [ 
							'atts' => ['text' => 'Faster & Easiest way to make a slide  with', 'type' => 'rotating', 'align' => 'center', 'animations' => 'pagelayer-aheading-push', 'color' => '#fff', 'color_type' => 'color', 'rotate_color' => '#ff7a03', 'rotate_text' => 'Drag&Drop,Animations,&More', 'typo' => ',30,,700,,,Solid,,,,']
						]],
						['pl_heading' => [ 
							'atts' => ['text' => '<h4>Slide show Sub-Heading</h4>', 'color' => '#ffffff', 'align' => 'center']
						]],
						['pl_text' => [
							'atts' => ['text' => '<p style="text-align: center; color: rgb(255, 255, 255);">This is the default Slide show content. Feel free to delete it.</p>']
						]],
						['pl_btn' => [
							'atts' => ['align' => 'center', 'type' => 'pagelayer-btn-custom', 'size' => 'pagelayer-btn-mini', 'btn_bg_color' => '', 'btn_color' => '#fff', 'btn_border_type' => 'solid', 'btn_border_color' => '#fff', 'btn_color_hover' => '#fff']
						]],
					]
				]],
			],
			'hide' => 1,
		),
		'type' => array(
			'label' => __pl('background_type'),
			'type' => 'radio',
			'list' => array(
				'' => __pl('color'),
				'image' => __pl('image'),
				'gradient' => __pl('gradient')
			),
		),
		'bg_color' => [
			'type' => 'color',
			'label' => __pl('bg_color'),
			'default' => '#0986c0',
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background: {{val}};'],
			'req' => ['type' => '']
		],
		'gradient' => [
			'type' => 'gradient',
			'label' => '',
			'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
			'req' => ['type' => 'gradient']
		],
		'img_color' => [
			'type' => 'color',
			'label' => __pl('color'),
			'desc' => __pl('fallback_color'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background: {{val}};'],
			'req' => ['type' => 'image']
		],
		'bg_img' => [
			'type' => 'image',
			'label' => __pl('Image'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background: url("{{{bg_img-url}}}");'],
			'req' => ['type' => 'image']
		],
		'bg_attachment' => [
			'type' => 'select',
			'label' => __pl('ele_bg_attachment'),
			'list' => [
				'' => __pl('default'),
				'scroll' => __pl('scroll'),
				'fixed' => __pl('fixed')
			],
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background-attachment: {{val}};', '{{element}} .pagelayer-content-slide-bg' => 'background-attachment: {{val}};'],
			'req' => ['type' => 'image']
		],
		'bg_posx' => [
			'type' => 'select',
			'label' => __pl('ele_bg_posx'),
			'list' => [
				'' => __pl('default'),
				'center' => __pl('center'),
				'left' => __pl('left'),
				'right' => __pl('right')
			],
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background-position-x: {{val}};'],
			'req' => ['type' => 'image']
		],
		'bg_posy' => [
			'type' => 'select',
			'label' => __pl('ele_bg_posy'),
			'list' => [
				'' => __pl('default'),
				'center' => __pl('center'),
				'top' => __pl('top'),
				'bottom' => __pl('bottom')
			],
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background-position-y: {{val}};'],
			'req' => ['type' => 'image']
		],
		'bg_repeat' => [
			'type' => 'select',
			'label' => __pl('ele_bg_repeat'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background-repeat: {{val}};'],
			'list' => [
				'' => __pl('default'),
				'repeat' => __pl('repeat'),
				'no-repeat' => __pl('no-repeat'),
				'repeat-x' => __pl('repeat-x'),
				'repeat-y' => __pl('repeat-y'),
			],
			'req' => ['type' => 'image']
		],
		'bg_size' => [
			'type' => 'select',
			'label' => __pl('ele_bg_size'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'background-size: {{val}};'],
			'list' => [
				'' => __pl('default'),
				'cover' => __pl('cover'),
				'contain' => __pl('contain')
			],
			'req' => ['type' => 'image']
		],
		'bg_ken_burn' => array(
			'type' => 'checkbox',
			'label' => __pl('ken_burn_effect'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'animation-name: pagelayerKenBurn;'],
			'req' => ['type' => 'image']
		),
		'bg_ken_burn_speed' => array(
			'type' => 'spinner',
			'label' => __pl('ken_burn_speed'),
			'min' => 1,
			'step' => 1,
			'default' => '20',
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'animation-duration:{{val}}s;'],
			'req' => ['!bg_ken_burn' => '', 'type' => 'image'],
		),
		'bg_ken_burn_rev' => array(
			'type' => 'checkbox',
			'label' => __pl('ken_burn_reverse'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'animation-name: pagelayerKenBurnReverse;'],
			'req' => ['!bg_ken_burn' => '', 'type' => 'image'],
		),
		'bg_ken_burn_loop' => array(
			'type' => 'checkbox',
			'label' => __pl('loop_kenburn'),
			'css' => ['{{element}} .pagelayer-content-slide-bg' => 'animation-iteration-count: infinite;'],
			'req' => ['!bg_ken_burn' => '', 'type' => 'image'],
		),
		'bg_overlay' => [
			'type' => 'checkbox',
			'label' => __pl('row_bg_overlay'),
		],
		'bg_overlay_color' => [
			'type' => 'color',
			'label' => __pl('color'),
			'css' => ['{{element}} .pagelayer-slide-bg-overlay' => 'background-color: {{val}}'],
			'req' => ['!bg_overlay' => '']
		],
		'bg_overlay_blend_mode' => [
			'type' => 'select',
			'label' => __pl('blend_mode'),
			'list' => [
				'' => __pl('Normal'),
				'multiply' => __pl('Multiply'),
				'screen' => __pl('Screen'),
				'overlay' => __pl('Overlay'),
				'darken' => __pl('Darken'),
				'lighten' => __pl('Lighten'),
				'color-dodge' => __pl('Color Dodge'),
				'color-burn' => __pl('Color Burn'),
				'hue' => __pl('Hue'),
				'saturation' => __pl('Saturation'),
				'color' => __pl('Color'),
				'exclusion' => __pl('Exclusion'),
				'luminosity' => __pl('Luminosity'),
			],
			'css' => ['{{element}} .pagelayer-slide-bg-overlay' => 'mix-blend-mode:{{val}};'],
			'req' => ['!bg_overlay' => ''],
		],
		
	),
));

// Slide, for backward compatibility of slides child
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_slide', array(
		'name' => __pl('slide'),
		'group' => 'other',
		'holder' => '.pagelayer-slide-btns',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_slides'],
		'html' => '<div class="pagelayer-slide-holder">
			<div if="{{heading}}" class="pagelayer-slide-heading">{{heading}}</div>
			<div if="{{sub}}" class="pagelayer-slide-sub">{{sub}}</div>
			<div if="{{desc}}" class="pagelayer-slide-desc">{{desc}}</div>
			<div class="pagelayer-slide-btns"></div>
		</div>',
		//'innerHTML' => 'desc',
		'has_group' => [
			'section' => 'btn_style', 
			'prop' => 'elements'
		],
		'params' => array(
			'type' => array(
				'label' => __pl('background_type'),
				'type' => 'radio',
				'default' => 'color',
				'list' => array(
					'color' => __pl('color'),
					'image' => __pl('image'),
					'gradient' => __pl('gradient')
				)
			),
			'color' => [
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#0986c0',
				'css' => 'background: {{val}};',
				'req' => ['type' => 'color']
			],
			'gradient' => [
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',
				'css' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);',
				'req' => ['type' => 'gradient']
			],
			'img_color' => [
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '',
				'desc' => __pl('fallback_color'),
				'css' => 'background: {{val}};',
				'req' => ['type' => 'image']
			],
			'bg_img' => [
				'type' => 'image',
				'label' => __pl('Image'),
				'css' => 'background: url("{{{bg_img-url}}}");',
				'req' => ['type' => 'image']
			],
			'bg_attachment' => [
				'type' => 'select',
				'label' => __pl('ele_bg_attachment'),
				'list' => [
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				],
				'css' => 'background-attachment: {{val}};',
				'req' => ['type' => 'image']
			],
			'bg_posx' => [
				'type' => 'select',
				'label' => __pl('ele_bg_posx'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right')
				],
				'css' => 'background-position-x: {{val}};',
				'req' => ['type' => 'image']
			],
			'bg_posy' => [
				'type' => 'select',
				'label' => __pl('ele_bg_posy'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom')
				],
				'css' => 'background-position-y: {{val}};',
				'req' => ['type' => 'image']
			],
			'bg_repeat' => [
				'type' => 'select',
				'label' => __pl('ele_bg_repeat'),
				'css' => 'background-repeat: {{val}};',
				'list' => [
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				],
				'req' => ['type' => 'image']
			],
			'bg_size' => [
				'type' => 'select',
				'label' => __pl('ele_bg_size'),
				'css' => 'background-size: {{val}};',
				'list' => [
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				],
				'req' => ['type' => 'image']
			],
		),
		'content_box_style' => [
			'content_width' => array(
				'type' => 'spinner',
				'label' => __pl('width'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 80,
				'css' => ['{{element}} .pagelayer-slide-holder' => 'width: {{val}}%'],
			),
			'content_posx' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_pos'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 50,
				'css' => ['{{element}} .pagelayer-slide-holder' => 'left: {{val}}%;'],
			),
			'content_posy' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 50,
				'css' => ['{{element}} .pagelayer-slide-holder' => 'top: {{val}}%; transform: translate(-{{content_posx}}%, -{{val}}%);'],
			),
			'content_bg' => [
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#46494a98',
				'css' => ['{{element}} .pagelayer-slide-holder' => 'background: {{val}}'],
			],
			'content_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'default' => '50,50,50,50',
				'css' => ['{{element}} .pagelayer-slide-holder' => 'padding-top:{{val[0]}}px; padding-right:{{val[1]}}px; padding-bottom:{{val[2]}}px; padding-left:{{val[3]}}px'],
			),
			'align' => array(
				'label' => __pl('alignment'),
				'type' => 'radio',
				'default' => 'center',
				'css' => ['{{element}} .pagelayer-slide-holder' => 'text-align:{{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
		],
		'heading_style' => [
			'heading' => array(
				'type' => 'text',
				'label' => __pl('heading_style'),
				'default' => __pl('This is Heading'),
				'edit' => '.pagelayer-slide-heading',
			),
			'heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-slide-heading' => 'color: {{val}};'],
			),
			'heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',44,,700,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-slide-heading' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'heading_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'default' => 0,
				'max' => 200,
				'css' => ['{{element}} .pagelayer-slide-heading' => 'padding-bottom: {{val}}px'],
			),
		],
		'sub_style' => [
			'sub' => array(
				'type' => 'textarea',
				'label' => __pl('sub_style'),
				'default' => __pl('This is Sub-Heading'),
				'edit' => '.pagelayer-slide-sub',
			),
			'sub_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-slide-sub' => 'color: {{val}};'],
			),
			'sub_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',26,,,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-slide-sub' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'sub_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'default' => 20,
				'max' => 200,
				'css' => ['{{element}} .pagelayer-slide-sub' => 'padding-bottom: {{val}}px'],
			),
		],
		'btn_style' => [
			'elements' => array(
				'type' => 'group',
				'label' => __pl('buttons'),
				'sc' => PAGELAYER_SC_PREFIX.'_btn',
				'item_label' => array(
					'default' => __pl('button'),
					'param' => 'text'
				),
				'count' => 2,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('button_name'))),
			),
			'btn_space' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'max' => 100,
				'default' => 10,
				'css' => ['{{element}} .pagelayer-btn' => 'padding-right: {{val}}px;'],
			)
		],
		'desc_style' => [
			'desc' => array(
				'type' => 'textarea',
				'label' => __pl('desc_style'),
				'default' => __pl('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac leo ut arcu dictum viverra at eu magna.'),
				'edit' => '.pagelayer-slide-desc',
			),
			'desc_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-slide-desc' => 'color: {{val}};'],
			),
			'desc_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',15,,,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-slide-desc' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'desc_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'screen' => 1,
				'min' => 0,
				'step' => 1,
				'default' => 10,
				'max' => 200,
				'css' => ['{{element}} .pagelayer-slide-desc' => 'padding-bottom: {{val}}px'],
			),
		],
		'styles' => [
			'content_box_style' => __pl('content_box_style'),
			'heading_style' => __pl('heading_style'),
			'sub_style' => __pl('sub_style'),
			'desc_style' => __pl('desc_style'),
			'btn_style' => __pl('btn_style'),
		]
	)
);

// Author Box
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_author_box', array(
		'name' => __pl('author_box'),
		'group' => 'archive',
		'html' => '<div class="pagelayer-author-box-div pagelayer-author-box-holder pagelayer-layout-{{layout}}">
					<div class="pagelayer-author-profile-pic" if={{author_picture}}>
						<a if-ext={{show_website}} href="{{{author_website}}}" class="pagelayer-link-sel">
							<img class="pagelayer-img pagelayer-author-image" src="{{{avatar-url}}}" title="{{{avatar-title}}}" alt="{{{avatar-alt}}}" />
						</a>
					</div>
					<div class="pagelayer-author-profile-desc">
						<a href="{{{author_website}}}" if-ext={{show_website}}>
							<div class="pagelayer-author-title" if={{show_name}}>{{display_html}}</div>
						</a>
						<p class="pagelayer-author-bio" if={{show_bio}}>{{description}}</p>
						<a href="{{user_url}}" class="pagelayer-author-btn {{type}} pagelayer-button {{size}} pagelayer-ele-link" if={{archive_btn}}>{{archive_btn_txt}}</a>
						<a href="{{{author_website}}}" class="pagelayer-author-btn {{type}} pagelayer-button {{size}} pagelayer-ele-link" if={{show_as_button}}>{{btn_txt}}</a>
					</div>
				</div>',
		'params' => array(
			'box_source' => array(
				'type' => 'select',
				'label' => __pl('box_source_type'),
				'default' => 'current',
				'list' => array(
					'current' => __pl('current_author'),
					'custom' => __pl('custom'),
				),
			),
			'avatar' => array(
				'type' => 'image',
				'label' => __pl('custom_image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'req' => ['box_source' => 'custom'],	
			),
			'author_picture' => array(
				'type' => 'checkbox',
				'label' => __pl('author_picture'),
				'default' => true,				
			),
			'show_name' => array(
				'type' => 'checkbox',
				'label' => __pl('show_name'),
				'default' => true,
			),
			'display_name' => array(
				'type' => 'text',
				'label' => __pl('display_name'),
				'req' => ['box_source' => 'custom', 'show_name' => 'true' ],
				'default' => 'Author',
			),
			'name_style' => array(
				'type' => 'select',
				'label' => __pl('name_style'),
				'default' => 'h4',
				'list' => array(
					'h1' => __pl('H1'),
					'h2' => __pl('H2'),
					'h3' => __pl('H3'),
					'h4' => __pl('H4'),
					'h5' => __pl('H5'),
					'h6' => __pl('H6'),
				),
			),
			'user_url' => array(
				'type' => 'select',
				'label' => __pl('link'),
				'default' => 'none',
				'list' => array(
					'none' => __pl('none'),
					'archives' => __pl('archives'),
				),
				'req' => ['box_source' => 'current'],	
			),
			'show_website' => array(
				'type' => 'checkbox',
				'label' => __pl('show_site'),
				'default' => '',	
			),
			'author_website' => array(
				'type' => 'link',
				'label' => __pl('author_website'),
				'selector' => '.pagelayer-link-sel',
				'req' => ['show_website' => 'true'],
			),
			'show_as_button' => array(
				'type' => 'checkbox',
				'label' => __pl('show_website_btn'),
				'default' => '',
				'req' => ['show_website' => 'true'],
			),
			'btn_txt' => array(
				'type' => 'text',
				'label' => __pl('button_text'),
				'default' => 'Website',
				'req' => array(
					'show_as_button' => 'true',
					'show_website' => 'true'
				),
			),
			'show_bio' => array(
				'type' => 'checkbox',
				'label' => __pl('show_bio'),
				'req' => ['box_source' => 'custom'],
				'default' => 'true',
			),
			'description' => array(
				'type' => 'textarea',
				'label' => __pl('description'),
				'default' => 'This is my Bio!',
				'req' => array(
					'box_source' => 'custom',
					'show_bio' => 'true'
				),
			),
			'archive_btn' => array(
				'type' => 'checkbox',
				'label' => __pl('show_archive_btn'),
				'default' => '',
				'req' => ['box_source' => 'current'],
			),
			'archive_btn_txt' => array(
				'type' => 'text',
				'label' => __pl('archive_btn_txt'),
				'default' => 'All Post',
				'req' => array(
					'archive_btn' => 'true',
					'box_source' => 'current'
				),
			),
			'layout' => array(
				'type' => 'radio',
				'label' => __pl('layout'),
				'default' => 'left',
				//'css' => ['{{element}} .pagelayer-author-profile-pic' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
			'alignment' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'left',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-profile-desc' => 'text-align: {{val}}',
				'{{element}} .pagelayer-author-profile-pic' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
		),
		'image_style' => [
			'image_size' => array(
				'type' => 'slider',
				'label' => __pl('image_size'),
				'step' => 1,
				'max' => 200,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-image' => 'height: {{val}}px; width: {{val}}px;'],
			),
			'image_gap' => array(
				'type' => 'slider',
				'label' => __pl('gap'),
				'step' => 1,
				'max' => 100,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-profile-pic' => 'padding-right: {{val}}px;'],
			),
			'image_border' => array(
				'type' => 'checkbox',
				'label' => __pl('border'),
				'default' => '',
			),
			'image_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'req' => ['image_border' => 'true'],
				'css' => ['{{element}} .pagelayer-author-image' => 'border-color: {{val}};'],
			),
			'image_border_width' => array(
				'type' => 'slider',
				'label' => __pl('border_width'),
				'max' => 20,
				'step' => 1,
				'min' => 0,
				'screen' => 1,
				'req' => ['image_border' => 'true'],
				'css' => ['{{element}} .pagelayer-author-image' => 'border-width: {{val}}px;'],
			),
			'image_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-author-image' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'req' => ['image_border' => 'true'],
			),
			'image_border_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'step' => 1,
				'max' => 100,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-image' => 'border-radius: {{val}}px;'],
			),
			'image_border_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-author-image' =>'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			)
		],
		'text_style' => [
			'name_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-author-title *' => 'color: {{val}};'],
			),
			'name_typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-author-title *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-author-title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'title_gap' => array(
				'type' => 'slider',
				'label' => __pl('gap'),
				'step' => 1,
				'max' => 100,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-title' => 'padding-bottom: {{val}}px;'],
			),
			'bio_color' => array(
				'type' => 'color',
				'label' => __pl('bio_color'),
				'css' => ['{{element}} .pagelayer-author-bio' => 'color: {{val}};'],
			),
			'bio_typography' => array(
				'type' => 'typography',
				'label' => __pl('bio_typo'),
				'css' => ['{{element}} .pagelayer-author-bio *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-author-bio' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'bio_gap' => array(
				'type' => 'slider',
				'label' => __pl('bio_gap'),
				'step' => 1,
				'max' => 100,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-bio' => 'padding-bottom: {{val}}px;'],
			),
		],
		'button_style' => [
			'type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-default',
				//'addClass' => ['{{element}} .pagelayer-btn-holder' => '{{val}}'],
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
			),
			'size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-large',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				)
			),
			'btn_custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('btn_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 5,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-btn' => 'padding: calc({{val}}px / 2) {{val}}px;'],
				'req' => array(
					'size' => 'pagelayer-btn-custom'
				),
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-author-btn' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-author-btn' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-author-btn' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'background-color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'color: {{val}};'],
				'req' => array(
					'type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bor_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),	
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-author-btn' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-author-btn' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['{{element}} .pagelayer-author-btn' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' => ['{{element}} .pagelayer-author-btn' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'css' => ['{{element}} .pagelayer-author-btn:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_gap' => array(
				'type' => 'slider',
				'label' => __pl('btn_gap'),
				'step' => 1,
				'max' => 100,
				'min' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-author-btn' => 'margin-bottom: {{val}}px;'],
			),
		],
		'styles' => [
			'image_style' => __pl('image'),
			'text_style' => __pl('text'),
			'button_style' => __pl('button'),
		]		
	)
);

// Login
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_login', array(
		'name' => __pl('login'),
		'group' => 'other',
		'html' => '<div class="pagelayer-login-div pagelayer-login-holder" >
					<form class="pagelayer-login-form" onsubmit="return pagelayer_login_submit(this, event)" method="POST">
						<div>
							<label if={{show_label}} class="pagelayer-login-username">{{custom_label_username}}</label>
							<input type="text" name="username" id="username" placeholder="{{custom_placeholder_login}}" class="pagelayer-login-input-field" spellcheck="false"/>
						</div>
						<div class="user-pass-wrap">
							<label if={{show_label}} class="pagelayer-login-password">{{custom_label_password}}</label>
							<input type="password" name="password" id="password" placeholder="{{custom_placeholder_password}}" class="pagelayer-login-input-field" spellcheck="false"/>
						</div>
						<div class="pagelayer-login-cap" if="{{login_cap}}">{{login_cap}}</div>
						<div>
							<input type="checkbox" name="remember_me" if="{{remember_me}}" class="pagelayer-rememberMe"/><label if="{{remember_me}}" class="pagelayer-rememberMe">Remember Me</label>
						</div>
						<div class="wrapper pagelayer-login-btn-{{alignment}} pagelayer-login-wrappers">
							<input type="hidden" name="login_url" value="{{redirect_url}}" if="{{redirect_login}}" />
							<input type="hidden" name="logout_url" value="{{logout_url}}" if="{{redirect_logout}}" />
							<button name="submit" class="pagelayer-ele-link pagelayer-login-btn {{btn_type}} pagelayer-button {{btn_size}}">{{login_text}}</button>
						</div>
						<div class="pagelayer-login-wrappers">
						<a if="{{lost_pass}}" href="'. esc_url( wp_lostpassword_url( get_permalink() ) ) .'" class="pagelayer-ele-link">Lost your Password?</a>
						</div>
					</form>
					<div class="pagelayer-login-error-box"></div>
				</div>
				<div class="pagelayer-logout-txt" if={{display_logouttxt}}>{{display_logouttxt}}</div>',
		'params' => array(
			'show_label' => array(
				'type' => 'checkbox',
				'label' => __pl('show_label'),
				'default' => 'true'
			),
			'remember_me' => array(
				'type' => 'checkbox',
				'label' => __pl('remember_me'),
				'default' => 'true'
			),
			'lost_pass' => array(
				'type' => 'checkbox',
				'label' => __pl('lost_pass'),
				'default' => 'true'
			),
			'custom_label' => array(
				'type' => 'checkbox',
				'label' => __pl('custom_label'),
				'default' => '',
			),
			'custom_label_username' => array(
				'type' => 'text',
				'label' => __pl('custom_label_username'),
				'default' => 'Username',
				'show' => ['custom_label' => 'true'],
				'edit' => '.pagelayer-login-username',
			),
			'custom_placeholder_login' => array(
				'type' => 'text',
				'label' => __pl('custom_placeholder_login'),
				'default' => 'Username',
				'show' => ['custom_label' => 'true'],
			),
			'custom_label_password' => array(
				'type' => 'text',
				'label' => __pl('custom_label_password'),
				'default' => 'Password',
				'show' => ['custom_label' => 'true'],
				'edit' => '.pagelayer-login-password',
			),
			'custom_placeholder_password' => array(
				'type' => 'text',
				'label' => __pl('custom_placeholder_password'),
				'default' => 'Password',
				'show' => ['custom_label' => 'true'],
			),
			'redirect_login' => array(
				'type' => 'checkbox',
				'label' => __pl('redirect_login'),
				'default' => '',
			),
			'redirect_url' => array(
				'type' => 'text',
				'label' => __pl('login_redirect_url'),
				'desc' => __pl('redirect_url_desc'),
				'default' => '',
				'req' => ['redirect_login' => 'true'],
			),
			'redirect_logout' => array(
				'type' => 'checkbox',
				'label' => __pl('redirect_logout'),
				'default' => '',
			),
			'logout_url' => array(
				'type' => 'text',
				'label' => __pl('logout_redirect_url'),
				'desc' => __pl('redirect_url_desc'),
				'default' => '',
				'req' => ['redirect_logout' => 'true'],
			),
		),
		'form_style' => array(
			'row_gap' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'step' => 1,
				'screen' => 1,
				'max' => 60,
				'css' => ['{{element}} .pagelayer-login-div input, .pagelayer-login-div .pagelayer-login-wrappers' => 'margin-bottom: {{val}}px;'],
			),
			'alignment' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'screen' => 1,
				'default' => 'left',
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-login-div, .pagelayer-login-input-field' => 'text-align: {{val}};'],
				'addClass' => ['{{element}} .pagelayer-login-input-field' => 'pagelayer-login-input-{{val}}']
			),
			'link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['{{element}} .pagelayer-login-form a' => 'color: {{val}};'],
			),
			'link_color_hover' => array(
				'type' => 'color',
				'label' => __pl('link_color_hover'),
				'css' => ['{{element}} .pagelayer-login-form a:hover' => 'color: {{val}};'],
			),
		),
		'label_style' => array(
			'label_gap' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'step' => 1,
				'screen' => 1,
				'max' => 60,
				'css' => ['{{element}} .pagelayer-login-div label' => 'margin-bottom: {{val}}px;'],
			),
			'text_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => ['{{element}} .pagelayer-login-form label, {{element}} .pagelayer-login-cap' => 'color: {{val}};'],
			),
			'label_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-login-form label, {{element}} .pagelayer-login-cap' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		),
		'fields_style' => array(
			'field_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'desc' => __pl('login_widget_width_desc'),
				'min' => 10,
				'max' => 100,
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}}  .pagelayer-login-form .pagelayer-login-input-field' => 'width: {{val}}%;']
			),
			'field_color' => array(
				'type' => 'color',
				'label' => __pl('text_color'),
				'css' => ['{{element}} .pagelayer-login-form .pagelayer-login-input-field, {{element}} .pagelayer-login-cap input' => 'color: {{val}};', '{{element}} .pagelayer-login-form .pagelayer-login-input-field::selection' => 'color:white; background-color: {{val}};'],
			),
			'field_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-login-form input' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'field_bgcolor' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-login-form .pagelayer-login-input-field, {{element}} .pagelayer-login-cap input' => 'background-color: {{val}};'],
			),
			'field_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-login-form .pagelayer-login-input-field, {{element}} .pagelayer-login-cap input' => 'border-color: {{val}};'],
			),
			'field_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-form .pagelayer-login-input-field, {{element}} .pagelayer-login-cap input' => 'border-width: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
			'field_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-form .pagelayer-login-input-field, {{element}} .pagelayer-login-cap input' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
			),
		),
		'buttons_style' => array(
			'login_text' => array(
				'type' => 'text',
				'label' => __pl('text'),
				'default' => 'Log In',
				'edit' => '.pagelayer-login-btn',
			),
			'btn_stretch' => array(
				'type' => 'checkbox',
				'label' => __pl('stretch'),
				'css' => ['{{element}} .pagelayer-login-btn' => 'width:100%;'],
			),
			'btn_gap' => array(
				'type' => 'padding',
				'label' => __pl('spacing'),
				'step' => 1,
				'screen' => 1,
				'max' => 60,
				'default' => '10',
				'css' => ['{{element}} .pagelayer-login-btn' => 'margin-top: {{val[0]}}px; margin-right: {{val[1]}}px; margin-bottom: {{val[2]}}px; margin-left: {{val[3]}}px'],
			),
			'btn_type' => array(
				'type' => 'select',
				'label' => __pl('button_type_label'),
				'default' => 'pagelayer-btn-default',
				//'addClass' => ['{{element}} .pagelayer-btn-holder' => '{{val}}'],
				'list' => array(
					'pagelayer-btn-default' => __pl('btn_type_default'),
					'pagelayer-btn-primary' => __pl('btn_type_primary'),
					'pagelayer-btn-secondary' => __pl('btn_type_secondary'),
					'pagelayer-btn-success' => __pl('btn_type_success'),
					'pagelayer-btn-info' => __pl('btn_type_info'),
					'pagelayer-btn-warning' => __pl('btn_type_warning'),
					'pagelayer-btn-danger' => __pl('btn_type_danger'),
					'pagelayer-btn-dark' => __pl('btn_type_dark'),
					'pagelayer-btn-light' => __pl('btn_type_light'),
					'pagelayer-btn-link' => __pl('btn_type_link'),
					'pagelayer-btn-custom' => __pl('btn_type_custom')
				),
			),
			'btn_size' => array(
				'type' => 'select',
				'label' => __pl('button_size_label'),
				'default' => 'pagelayer-btn-large',
				'list' => array(
					'pagelayer-btn-mini' => __pl('mini'),
					'pagelayer-btn-small' => __pl('small'),
					'pagelayer-btn-large' => __pl('large'),
					'pagelayer-btn-extra-large' => __pl('extra_large'),
					'pagelayer-btn-double-large' => __pl('double_large'),
					'pagelayer-btn-custom' => __pl('custom'),
				)
			),
			'btn_custom_size' => array(
				'type' => 'spinner',
				'label' => __pl('btn_custom_size'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'screen' => 1,
				'default' => 5,
				'css' => ['{{element}} .pagelayer-login-btn' => 'padding: calc({{val}}px / 2) {{val}}px;'],
				'req' => array(
					'btn_size' => 'pagelayer-btn-custom'
				),
			),
			'btn_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_label'),
				'default' => '#0986c0',
				'css' => ['{{element}} .pagelayer-login-btn' => 'background-color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('btn_color_label'),
				'default' => '#ffffff',
				'css' => ['{{element}} .pagelayer-login-btn' => 'color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => ''
				),
			),
			'btn_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('btn_hover_delay_label'),
				'desc' => __pl('btn_hover_delay_desc'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-login-btn' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_bg_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'background-color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('btn_color_hover_label'),
				'default' => '',
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'color: {{val}};'],
				'req' => array(
					'btn_type' => 'pagelayer-btn-custom',
				),
				'show' => array(
					'btn_hover' => 'hover'
				),
			),
			'btn_bor_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => '',
				//'no_val' => 1,// Dont set any value to element
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				)
			),	
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-login-btn' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-login-btn' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-btn' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-btn' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => ''
				),
				'show' => array(
					'btn_bor_hover' => ''
				),
			),
			'btn_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color_hover_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type_hover' => ''
				],
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
			'btn_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius_hover'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-login-btn:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type_hover' => ''
				),
				'show' => array(
					'btn_bor_hover' => 'hover'
				),
			),
		),
		'styles' => [
			'form_style' => __pl('Form'),
			'label_style' => __pl('Label'),
			'fields_style' => __pl('Fields'),
			'buttons_style' => __pl('Button'),
		]		
	)
);

// SiteMap
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_sitemap', array(
		'name' => __pl('sitemap'),
		'group' => 'other',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'holder' => '.pagelayer-sitemap-div-holder',
		'html' => '<div class="pagelayer-sitemap-div pagelayer-sitemap-holder">
				<div class="pagelayer-sitemap-div-holder pagelayer-sitemap-flex-wrapper">
				</div>
			</div>',
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('Label'),
				'sc' => PAGELAYER_SC_PREFIX.'_sitemap_item',
				'item_label' => array(
					'default' => __pl('Label'),
					'param' => 'title'
				),
				'count' => 1,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('sitemap_item'))),
			),
			'columns' => array(
				'type' => 'select',
				'label' => __pl('columns'),
				'default' => '2',
				'list' => array(
					'1' => __pl('1'),
					'2' => __pl('2'),
					'3' => __pl('3'),
					'4' => __pl('4'),
					'5' => __pl('5'),
					'6' => __pl('6'),
				),
				'css' => [ '{{element}} .pagelayer-sitemap-div-holder > *' => 'flex-basis: calc( 1 / {{val}} * 100% );' ],
			),
			'nofollow' => array(
				'type' => 'checkbox',
				'label' => __pl('nofollow'),
				'default' => '',
				'addAttr' => ['{{element}} .pagelayer-sitemap-list-item a' => 'rel="nofollow"',
				'{{element}} .pagelayer-sitemap-div-holder' => 'data-nofollow="true"'],
			),
		),
		'additional_opt' => [
			'protected' => array(
				'type' => 'checkbox',
				'label' => __pl('protected_post'),
				'default' => '',
			),
		],
		'list_styles' => [
			'indent' => array(
				'type' => 'slider',
				'label' => __pl('indent'),
				'default' => 0,
				'min' => 0,				
				'max' => 100,
				'css' => ['{{element}} .pagelayer-sitemap-section li' => 'margin-left: {{val}}px'],
			),
			'padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-sitemap-section' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('title_color'),
				'css' => ['{{element}} .pagelayer-sitemap-section span' => 'color: {{val}}'],
			),
			'title_typography' => array(
				'type' => 'typography',
				'label' => __pl('title_typography'),
				'css' => ['{{element}} .pagelayer-sitemap-section span' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'list_color' => array(
				'type' => 'color',
				'label' => __pl('list_color'),
				'css' => ['{{element}} .pagelayer-sitemap-section li' => 'color: {{val}}',
				'{{element}} .pagelayer-sitemap-section a' => 'color: {{val}}'],
			),
			'list_typography' => array(
				'type' => 'typography',
				'label' => __pl('list_typography'),
				'css' => ['{{element}} .pagelayer-sitemap-section li, {{element}} .pagelayer-sitemap-section a' =>'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'list_type' => array(
				'type' => 'radio',
				'label' => __pl('list_type'),
				'default' => 'disc',
				'list' => array(
					'disc' => __pl('sitemap_disc'),
					'circle' => __pl('sitemap_circle'),
					'square' => __pl('sitemap_square'),
					'none' => __pl('sitemap_none')
				),
				'css' => ['{{element}} .pagelayer-sitemap-section li' => 'list-style-type: {{val}}'],
			),
		],
		'styles' => [
			'additional_opt' => __pl('additional_option'),
			'list_styles' => __pl('list_option'),
		]
		
		
	)
);

// SiteMap Builder
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_sitemap_item', array(
		'name' => __pl('sitemap_item'),
		'group' => 'other',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_sitemap'],
		'html' => '{{sitemap_html}}',
		'params' => array(
			'sitemap_type' => array(
				'type' => 'select',
				'label' => __pl('type'),
				'default' => 'post_type',
				'list' => array(
					'post_type' => __pl('post_type'),
					'taxonomy' => __pl('taxonomy'),
				)
			),
			'source_post' => array(
				'type' => 'select',
				'label' => __pl('source'),
				'default' => 'page',
				'list' => array(
					'post' => __pl('Posts'),
					'page' => __pl('Pages'),
				),
				'show' => array(
					'sitemap_type' => 'post_type',
				),
			),
			'source_taxonomy' => array(
				'type' => 'select',
				'label' => __pl('source'),
				'default' => 'category',
				'list' => array(
					'category' => __pl('categories'),
					'post_tag' => __pl('tags'),
					'post_format' => __pl('format'),
				),
				'show' => array(
					'sitemap_type' => 'taxonomy'
				),
			),
			'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'default' => '',
			),
			'order_post' => array(
				'type' => 'select',
				'label' => __pl('order_by'),
				'default' => 'random',
				'list' => array(
					'post_date' => __pl('date'),
					'post_title' => __pl('title'),
					'menu_order' => __pl('menu_order'),
					'rand' => __pl('random'),
				),
				'show' => array(
					'sitemap_type' => 'post_type',
				),
			),
			'order_taxonomy' => array(
				'type' => 'select',
				'label' => __pl('order_by'),
				'default' => 'name',
				'list' => array(
					'ID' => __pl('id'),
					'name' => __pl('name'),
				),
				'show' => array(
					'sitemap_type' => 'taxonomy'
				),
			),
			'order' => array(
				'type' => 'select',
				'label' => __pl('order'),
				'default' => 'DESC',
				'list' => array(
					'ASC' => __pl('asc'),
					'DESC' => __pl('desc'),
				)
			),
			'hide_empty' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_empty'),
				'default' => true,
				'show' => array(
					'sitemap_type' => 'taxonomy'
				),
			),
			'hierarchical' => array(
				'type' => 'checkbox',
				'label' => __pl('hierarchical_view'),
				'default' => '',
			),
			'depth' => array(
				'type' => 'select',
				'label' => __pl('depth'),
				'list' => array(
					'0' => __pl('all'),
					'1' => __pl('1'),
					'2' => __pl('2'),
					'3' => __pl('3'),
					'4' => __pl('4'),
					'5' => __pl('5'),
					'6' => __pl('6'),
				),
				'show' => array(
					'hierarchical' => 'true'
				),
			),			
		),
	)
);

// Search Form
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_search', array(
		'name' => __pl('search_form'),
		'group' => 'other',
		'html' => '<div class="pagelayer-search-container pagelayer-search-{{type}}">
			<button class="pagelayer-search-toggle pagelayer-search-button">
				<span if="{{button_text}}" class="pagelayer-search-submit-label">{{button_text}}</span>					
				<i if="{{button_icon}}" class="pagelayer-search-submit-icon {{button_icon}}"></i>
			</button>
			<form role="search" method="get" class="pagelayer-searchform" action="'.esc_url( home_url( '/' ) ).'">
				<div class="pagelayer-search-fields">
					<input class="pagelayer-search-input" type="text" value="" name="s" placeholder="{{{placeholder}}}" />
					<input type="hidden" if="{{post_type}}" value="{{post_type}}" name="post_type"/>
					<button type="submit" class="pagelayer-search-submit pagelayer-search-button">
						<span if="{{button_text}}" class="pagelayer-search-submit-label">{{button_text}}</span>					
						<i if="{{button_icon}}" class="pagelayer-search-submit-icon {{button_icon}}"></i>					
					</button>
				</div>
			</form> 
		</div>',
		'params' => array(
			'post_type' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_post_type_label'),
				'desc' => __pl('posts_grid_post_type_desc'),
				'list' => array_merge(['' => __pl('All Post Types')], pagelayer_post_types(true))
			),
			'type' => array(
				'type' => 'select',
				'label' => __pl('form_type'),
				'default' => 'classic',
				'list' => array(
					'classic' => __pl('classic'),
					'full-screen' => __pl('full_screen'),
				),
			),
			'placeholder' => array(
				'type' => 'text',
				'label' => __pl('placeholder'),
				'default' => __pl('search'),
			),
			'button_type' => array(
				'type' => 'radio',
				'label' => __pl('button_type'),
				'default' =>  'icon',
				'list' => array(
					'icon' =>  __pl('list_icon_label'),
					'text' =>  __pl('text'),
				),
			),
			'button_icon' => array(
				'type' => 'icon',
				'label' => __pl('button_icon'),
				'default' => 'fas fa-search',
				'req' => ['button_type' => 'icon']
			),
			'button_text' => array(
				'type' => 'text',
				'label' => __pl('button_text'),
				'default' =>  __pl('search'),
				'req' => ['button_type' => 'text']
			),
			'field-width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-fields'  => 'max-width:{{val}}%;'],
				'req' => ['type' => 'classic'],
			),
			'size' => array(
				'type' => 'slider',
				'label' => __pl('min_height'),
				'default' => 40,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-fields, {{element}} .pagelayer-search-full-screen input'  => 'min-height:{{val}}px;',
				'{{element}} .pagelayer-search-fields input'  => 'padding-left: calc({{val}}px / 3);padding-right: calc({{val}}px / 3);',
				'{{element}} .pagelayer-search-fields button'  => 'padding-left: calc({{val}}px / 3)'],
				
			),
			'field_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'center',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-search-fields'  => 'margin:auto;margin-{{val}}:0;'],
				'req' => ['type' => 'classic'],
			),
			'toggle_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'left',
				'screen' => 1,
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-search-container'  => 'text-align:{{val}};'],
				'req' => ['type' => 'full-screen'],
			),
			'holder_border_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-search-full-screen .pagelayer-search-fields' => 'background-color: {{val}};'],
				'req' => ['type' => 'full-screen'],
			),
			'holder_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_styles'),
				'default' => 'solid',
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'css' => ['{{element}} .pagelayer-search-fields' =>'border-style: {{val}};'],
			),
			'holder_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-search-fields' => 'border-color: {{val}};'],
				'req' => ['!holder_border_type' => '']
			),
			'holder_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '1,1,1,1',
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-search-fields' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!holder_border_type' => '']
			),
			'holder_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' =>  ['{{element}} .pagelayer-search-fields' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!holder_border_type' => '']
			),
			'holder_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-search-fields' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}};'],
			),
		),
		'input_style' => array(
			'input_colors' => array(
				'type' => 'radio',
				'label' => '',
				'default' => '',
				'list' => array(
					'normal' => __pl('normal'),
					'focus' => __pl('focus'),
				),
			),
			'input_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-search-input' => 'color:{{val}}'],
				'show' => ['input_colors' => 'normal'],
			),
			'input_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-search-input' => 'background-color:{{val}}'],
				'show' => ['input_colors' => 'normal'],
			),
			'input_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-search-input:focus' => 'color:{{val}}'],
				'show' => ['input_colors' => 'focus'],
			),
			'input_bg_hover_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-search-input:focus' => 'background-color:{{val}}'],
				'show' => ['input_colors' => 'focus'],
			),
			'input_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'css' => ['{{element}} .pagelayer-search-input' => 'font-size:{{val}}px'],
			),
			'input_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-search-input' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'input_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => 100,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-input' => 'width:{{val}}%'],
			),
			'input_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_styles'),
				'css' => ['{{element}} .pagelayer-search-input' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'input_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-search-input' => 'border-color: {{val}};'],
				'req' => ['!input_border_type' => '']
			),
			'input_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '0,0,0,0',
				'css' =>  ['{{element}} .pagelayer-search-input' =>'border-width: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px !important;'],
				'req' => ['!input_border_type' => '']
			),
			'input_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' =>  ['{{element}} .pagelayer-search-input' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => ['!input_border_type' => '']
			),
		),
		'button_style' => array(
			'button_colors' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'button_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-search-button' => 'color:{{val}}'],
				'show' => ['button_colors' => 'normal'],
			),
			'button_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-search-button' => 'background-color:{{val}}'],
				'show' => ['button_colors' => 'normal'],
			),
			'button_hover_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-search-button:hover' => 'color:{{val}}'],
				'show' => ['button_colors' => 'hover'],
			),
			'button_bg_hover_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-search-button:hover' => 'background-color:{{val}}'],
				'show' => ['button_colors' => 'hover'],
			),
			'button_position' => array(
				'type' => 'radio',
				'label' => __pl('position'),
				'screen' => 1,
				'default' => 'row',
				'list' => array(
					'row-reverse' => __pl('left'),
					'row' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-search-fields' => 'flex-direction:{{val}}'],
				'req' => ['type' => 'classic'],
			),
			'button_size' => array(
				'type' => 'slider',
				'label' => __pl('font_size'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-submit-label' => 'font-size:{{val}}',
				'{{element}} .pagelayer-search-submit-icon' => 'font-size:{{val}}'],
			),
			'button_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-search-button' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['button_type' => 'text']
			),
			'button_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-button' => 'min-width:{{val}}'],
			),
			'button_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => ['px', 'em','%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-button' => 'padding:{{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}'],
			),
			'submit_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_styles'),
				'css' => ['{{element}} .pagelayer-search-submit' =>'border-style: {{val}};'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'submit_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-search-submit' => 'border-color: {{val}};'],
				'req' => ['!submit_border_type' => '']
			),
			'submit_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '0,0,0,0',
				'css' =>  ['{{element}} .pagelayer-search-submit' =>'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px;'],
				'req' => ['!submit_border_type' => '']
			),
			'button_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'max' => 100,
				'units' => ['px', '%'],
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-search-button' => 'border-radius:{{val}} !important'],
			),
		),
		'styles' => [
			'input_style' => __pl('input_style'),
			'button_style' => __pl('button_style'),
		]
	)
);

//FACEBOOK buttons
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_fb_btn', array(
		'name' => __pl('Facebook Button'),
		'group' => 'other',
		'html' =>  '<div class="pagelayer-fb-btn-container" pagelayer-facebook-load="1">
				<span class="pagelayer-app-details" pagelayer-app-id="{{fb-app-id}}"></span>
				<div id="fb-root"></div>
				<div if="{{link_type}}" class="fb-like pagelayer-fb-btn-details" id="fb-like-btn" data-href="{{custom-url}}" data-layout="{{layout}}" data-action="{{btn_action}}" data-show-faces="{{peoples_faces}}" data-size="{{btn_size}}" data-share="{{share_btn}}">			
				</div>
			</div>',
		'params' => array(
			'fb-app-id' => array(
				'type' => 'text',
				'label' => __pl('app_id'),
				'default' => get_option('pagelayer-fbapp-id'),
			),
			'link_type' => array(
				'type' => 'select',
				'label' => __pl('post_link_type'),
				'default' => 'current',
				'list' => array(
					'current' => __pl('current_url'),
					'custom_link' => __pl('custom_url')
				),
			),
			'custom-url' => array(
				'type' => 'text',
				'label' => __pl('page_url'),
				'default' => 'https://www.facebook.com/',
				'req' => array(
					'link_type' => 'custom_link',
				)
			),
			'share_btn' => array(
				'type' => 'checkbox',
				'label' => __pl('share_btn'),
			),
			'peoples_faces' => array(
				'type' => 'checkbox',
				'label' => __pl('liked_faces'),
			),
			'layout' => array(
				'type' => 'select',
				'label' => __pl('layout_type'),
				'default' => 'standard',
				'list' => array(
					'standard' => __pl('standard'),
					'box_count' => __pl('box_count'),
					'button_count' => __pl('button_count'),
					'button' => __pl('button'),
				),
			),
			'btn_action' => array(
				'type' => 'select',
				'label' => __pl('btn_action'),
				'default' => 'Like',
				'list' => array(
					'like' => __pl('like'),
					'recommend' => __pl('recommend'),
				),
			),
			'btn_size' => array(
				'type' => 'select',
				'label' => __pl('btn_size'),
				'default' => 'small',
				'list' => array(
					'small' => __pl('small'),
					'large' => __pl('large'),
				),
			),
		),
	)
);

//FACEBOOK embed
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_fb_embed', array(
		'name' => __pl('Facebook Embed'),
		'group' => 'other',
		'html' =>  '<div class="pagelayer-fb-embed-container" pagelayer-facebook-load="1">
				<span class="pagelayer-app-details" pagelayer-app-id={{fb-app-id}}></span>
				<div id="fb-root"></div>
				<div if={{embed_type}} class="fb-embed fb-{{embed_type}}" data-href={{post-url}} data-show-text={{post_text}} data-width=500 data-adapt-container-width="true" data-allowfullscreen={{fullscreen_video}} data-autoplay={{autoplay_video}} data-show-captions={{video_captions}} data-include-parent={{parent_comments}}>			
				</div>
			</div>',
		'params' => array(
			'fb-app-id' => array(
				'type' => 'text',
				'label' => __pl('app_id'),
				'default' => get_option('pagelayer-fbapp-id'),
			),
			'embed_type' => array(
				'type' => 'select',
				'label' => __pl('embed_type'),
				'default' => 'post',
				'list' => array(
					'post' => __pl('post'),
					'video' => __pl('video'),
					'comment-embed' => __pl('comment'),
				),
			),
			'post-url' => array(
				'type' => 'text',
				'label' => __pl('post-url'),
				'addAttr' => ['{{element}} .fb-post' => 'data-href="{{post-url}}"'],
				'default' => 'https://www.facebook.com/pagelayer/posts/528135551039110',
				'req' => array(
					'embed_type' => 'post',
				),
			),
			'video-url' => array(
				'type' => 'text',
				'label' => __pl('video-url'),
				'addAttr' => ['{{element}} .fb-video' => 'data-href="{{video-url}}"'],
				'default' => 'https://www.facebook.com/seekahost/videos/1027688264058449/',
				'req' => array(
					'embed_type' => 'video',
				),
			),
			'comment-url' => array(
				'type' => 'text',
				'label' => __pl('comment-url'),
				'addAttr' => ['{{element}} .fb-comment' => 'data-href="{{comment-url}}"'],
				'default' => 'https://www.facebook.com/sitepad/posts/751812071877561?comment_id=830006664058101&reply_comment_id=831580997234001&comment_tracking=%7B%22tn%22%3A%22R%22%7D',
				'req' => array(
					'embed_type' => 'comment-embed',
				),
			),
			'post_text' => array(
				'type' => 'checkbox',
				'label' => __pl('full_post'),
				'req' => array(
					'!embed_type' => 'comment-embed',
				),
			),
			'autoplay_video' => array(
				'type' => 'checkbox',
				'label' => __pl('autoplay'),
				'req' => array(
					'embed_type' => 'video',
				),
			),
			'fullscreen_video' => array(
				'type' => 'checkbox',
				'label' => __pl('full_screen'),
				'req' => array(
					'embed_type' => 'video',
				),
			),
			'video_captions' => array(
				'type' => 'checkbox',
				'label' => __pl('captions'),
				'req' => array(
					'embed_type' => 'video',
				),
			),
			'parent_comments' => array(
				'type' => 'checkbox',
				'label' => __pl('parent_comments'),
				'default' => 'true',
				'req' => array(
					'embed_type' => 'comment-embed',
				),
			),
		),
	)
);

//FACEBOOK comments
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_fb_comments', array(
		'name' => __pl('Facebook Comments'),
		'group' => 'other',
		'html' =>  '<div class="pagelayer-fb-comments-container" pagelayer-facebook-load="1">
			<span class="pagelayer-app-details" pagelayer-app-id={{fb-app-id}}></span>
			<div id="fb-root"></div>
			<div  class="fb-comments" data-href="{{custom-url}}" data-colorscheme="{{color_scheme}}" data-numposts="{{number-of-comments}}" data-order-by="{{comments_order}}">
			</div>
		</div>',
		'params' => array(
			'fb-app-id' => array(
				'type' => 'text',
				'label' => __pl('app_id'),
				'default' => get_option('pagelayer-fbapp-id'),
			),
			'link_type' => array(
				'type' => 'select',
				'label' => __pl('post_link_type'),
				'default' => 'current',
				'list' => array(
					'current' => __pl('current_url'),
					'custom_link' => __pl('custom_url')
				),
			),
			'custom-url' => array(
				'type' => 'text',
				'label' => __pl('page_url'),
				'default' => 'https://www.facebook.com/pagelayer',
				'req' => array(
					'link_type' => 'custom_link',
				)
			),
			'color_scheme' => array(
				'type' => 'select',
				'label' => __pl('color_scheme'),
				'default' => 'light',
				'list' => array(
					'light' => __pl('Light'),
					'dark' => __pl('Dark'),
				),
			),
			'number-of-comments' => array(
				'type' => 'slider',
				'label' => __pl('comments_count'),
				'min' => '1',
				'max' => '100',
				'default' => '10',
			),
			'comments_order' => array(
				'type' => 'select',
				'label' => __pl('comments_order'),
				'default' => '',
				'list' => array(
					'social' => __pl('social'),
					'reverse_time' => __pl('reverse_time'),
					'time' => __pl('time'),
				),
			),
		),
	)
);

//FACEBOOK page
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_fb_page', array(
		'name' => __pl('Facebook Page'),
		'group' => 'other',
		'html' =>  '<div class="pagelayer-fb-page-container" pagelayer-facebook-load="1">
			<span class="pagelayer-app-details" pagelayer-app-id={{fb-app-id}}></span>
			<div id="fb-root"></div>
			<div if={{page_url}} class="fb-page" data-href={{page_url}} data-width="500" data-hide-cta={{cta-button}} data-tabs={{tabs_types}} data-small-header={{small_header}} data-adapt-container-width="true" data-hide-cover={{hide_cover}} data-show-facepile={{show_friends_faces}}>			
			</div>
		</div>',
		'params' => array(
			'fb-app-id' => array(
				'type' => 'text',
				'label' => __pl('app_id'),
				'default' => get_option('pagelayer-fbapp-id'),
			),
			'page_url' => array(
				'type' => 'text',
				'label' => __pl('page_link'),
				'default' => 'https://www.facebook.com/pagelayer',
			),
			'tabs_types' => array(
				'type' => 'multiselect',
				'label' => __pl('tabs'),
				'default' => 'timeline',
				'list' => array(
					'timeline' => __pl('timeline'),
					'events' => __pl('events'),
					'messages' => __pl('messages')
				),
			),
			'height' => array(
				'type' => 'spinner',
				'label' => __pl('page_height'),
				'default' => 500,
				'min' => 70,
				'max' => 1000,
				'step' => 10,
				'addAttr' => ['{{element}} .pagelayer-fb-page-container .fb-page' => 'data-height="{{height}}"'],
			),
 			'small_header' => array(
				'type' => 'checkbox',
				'label' => __pl('small_header'),
			),
			'hide_cover' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_cover'),
			),			
			'show_friends_faces' => array(
				'type' => 'checkbox',
				'label' => __pl('liked_faces'),
				'default' => "true",
			),
			'cta-button' => array(
				'type' => 'checkbox',
				'label' => __pl('cta_button'),
				'default' => "true",
			),			
		),
	)
);

// Review Item
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_review', array(
		'name' => __pl('review'),
		'group' => 'button',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_review_slider'],
		'html' => '<div class="pagelayer-review-slide">
			<div class="pagelayer-review-author">
				<div if={{author_image}} class="pagelayer-review-author-img">
					<img class="pagelayer-img" title="{{{author_image-title}}}" alt="{{{author_image-alt}}}"/>
				</div>				
				<div class="pagelayer-review-author-details">
					<div if={{author_name}} class="pagelayer-review-author-name">{{author_name}}</div>
					<div if={{author_title}} class="pagelayer-review-author-title">{{author_title}}</div>
					<div if={{number_of_ratings}} class="pagelayer-stars-container" title="{{number_of_ratings}}/5" pagelayer-stars-value="{{number_of_ratings}}" pagelayer-stars-count="5">	
					</div>					
				</div>
				<div class="pagelayer-icon-holder pagelayer-{{icon}}-icon">
					<a if-ext="{{icon_url}}" class="pagelayer-ele-link pagelayer-review-icon-link" href="{{{icon_url}}}">
						<i class="pagelayer-social-fa {{icon}} {{bg_shape}} {{icon_size}} pagelayer-animation-{{anim_hover}}"></i>
					</a>
				</div>			
			</div>
			<hr>
			<div class="pagelayer-review-text">
				<p if={{review_text}} class="pagelayer-review-p">{{review_text}}</p>
			</div>			
		</div>',
		'params' => array(
			'author_name' => array(
				'type' => 'text',
				'label' => __pl('author_Name'),
				'default' => 'Jane Doe',
				'edit' => '.pagelayer-review-author-name',
			),
			'author_title' => array(
				'type' => 'text',
				'label' => __pl('author_title'),
				'default' => '@janedoe',
				'edit' => '.pagelayer-review-author-title',
			),
			'show_avatar' => array(
				'type' => 'checkbox',
				'label' => __pl('show_avatar'),
			),
			'author_image' => array(
				'type' => 'image',
				'label' => __pl('avatar_style'),
				'addAttr' => ['{{element}} .pagelayer-review-author-img img' => 'src="{{{author_image-url}}}"'],
				'req' => ['show_avatar' => 'true']
			),
			'number_of_ratings' => array(
				'type' => 'spinner',
				'label' => __pl('author_rating'),
				'min' => '0',
				'max' => '5',
				'step' => '.1',
			),
			'icon_url' => array(
				'type' => 'link',
				'label' => __pl('author_url'),
				'selector' => '.pagelayer-review-icon-link',
			),
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('author_Icon'),
				'default' => 'fab fa-facebook',
				'list' => ['facebook', 'facebook-official', 'facebook-square', 'twitter', 'twitter-square', 'x-twitter', 'x-twitter-square', 'google-plus', 'google-plus-square', 'instagram', 'linkedin', 'linkedin-square', 'behance', 'behance-square', 'pinterest', 'pinterest-p', 'pinterest-square', 'reddit-alien', 'reddit-square', 'reddit', 'rss', 'rss-square', 'skype', 'slideshare', 'snapchat', 'snapchat-ghost', 'snapchat-square', 'soundcloud', 'spotify', 'stack-overflow', 'steam', 'steam-square', 'stumbleupon', 'telegram', 'thumb-tack', 'tripadvisor', 'tumblr', 'tumblr-square', 'twitch', 'vimeo', 'vimeo-square', 'vk', 'weibo', 'weixin', 'whatsapp', 'wordpress', 'xing', 'xing-square', 'yelp', 'youtube', 'youtube-square', 'youtube-play', '500px', 'flickr', 'android', 'github', 'github-square', 'gitlab', 'apple', 'jsfiddle', 'houzz', 'bitbucket', 'bitbucket-square', 'codepen', 'delicious', 'medium', 'meetup', 'mixcloud', 'dribbble', 'foursquare'],
			),
			'review_text' => array(
				'type' => 'textarea',
				'label' => __pl('review'),
				'default' => '"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which look even slightly believable."',
				'edit' => '.pagelayer-review-p',
				'e' => [ 'v', 'f', 'c', 'r'],
			),
		)
	)
);

// Reviews Slider
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_review_slider', array(
		'name' => __pl('reviews'),
		'group' => 'other',
		'prevent_inside' => ['pl_slides'],
		'holder' => '.pagelayer-reviews-holder',
		'child_selector' => '>.pagelayer-owl-stage-outer>.pagelayer-owl-stage>.pagelayer-owl-item', // Make it very specifc
		'html' => '<div class="pagelayer-review-slides-container">
			<div class="pagelayer-reviews-holder pagelayer-owl-holder pagelayer-owl-carousel pagelayer-owl-theme"></div>
		</div>',
		'has_group' => [
			'section' => 'params', 
			'prop' => 'elements'
		],
		'params' => array(
			'elements' => array(
				'type' => 'group',
				'label' => __pl('review'),
				'sc' => PAGELAYER_SC_PREFIX.'_review',
				'item_label' => array(
					'default' => __pl('review'),
					'param' => 'author_name',
				),
				'count' => 3,
				'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('review'))),
			),			
			'width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => 100,
				'min' => 30,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-reviews-holder' => 'width:{{val}}%;']
			),
		),
		'author_style' => array(
			'author_name_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-review-author-name' => 'color:{{val}} !important;'],
			),
			'author_name' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-review-author-name' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		),
		'title_style' => array(
			'author_title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-review-author-title' => 'color:{{val}} !important;'],
			),			
			'author_title' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',14,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-review-author-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		),
		'review_style' => array(
			'review_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' => ['{{element}} .pagelayer-review-text p' => 'color: {{val}} !important;'],
			),			
			'review_typography' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',18,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-review-text p' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),			
		),
		'icon_style' => array(
			'icon_color' => array(
				'type' => 'color',
				'label' => __pl('icon_color'),
				'css' => ['{{element}} .pagelayer-social-fa' => 'color: {{val}};']
			),
			'icon_size_custom' => array(
				'type' => 'spinner',
				'label' => __pl('service_box_icon_custom_size_label'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'default' => 20,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-social-fa' => 'font-size: {{val}}px']
			)
		),
		'seperator_style' => array(
			'seperator_width' => array(
				'type' => 'slider',
				'label' => __pl('seperator_width'),
				'default' => 1,
				'min' => 0,
				'max' => 20,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-slide hr' => 'border-top:{{val}}px solid;'],
			),
			'seperator_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#c5c5c5',
				'css' => ['{{element}} .pagelayer-review-slide hr' => 'border-top-color:{{val}};'],
			),
		),
		'stars_style' => array(
			'stars_color' => array(
				'type' => 'color',
				'label' => __pl('stars_color'),
				'default' => '#FFEB3B',
				'css' => ['{{element}} .pagelayer-stars-icon:before' => 'color: {{val}}'],
			),
			'unmarked_stars_color' => array(
				'type' => 'color',
				'label' => __pl('unmarked_star_color'),
				'default' => '#ccd6df',
				'css' => ['{{element}} .pagelayer-stars-container' => 'color: {{val}}'],
			),
			'stars_font_size' => array(
				'label' => __pl('stars_font_size'),
				'type' => 'slider',
				'min' => 5,
				'max' => 100,
				'default' => 20,
				'screen' => 1,
				'css' => ['{{element}}  .pagelayer-stars-container' => 'font-size:{{val}}px;'],
			),
			'stars_spacing' => array(
				'label' => __pl('stars_spacing'),
				'type' => 'slider',
				'min' => 0,
				'max' => 20,
				'default' => 2,
				'screen' => 1,
				'css' => ['{{element}}  .pagelayer-stars-icon:not(:first-child)' => 'margin-left:{{val}}px;'],
			),
		),
		'avatar_style' => array(
			'author_image_width' => array(
				'type' => 'slider',
				'label' => __pl('rw_image_width'),
				'min' => 50,
				'max' => 120,
				'default' => 70,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-author-img img' => 'width:{{val}}px !important; height: {{val}}px !important;'],
			),
			'author_image_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'max' => 100,
				'default' => 0,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-author-img img' => 'border-radius:{{val}}px !important;'],
			),
		),
		'slide_style' => array(
			'background-color' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'css' => ['{{element}} .pagelayer-review-slide' =>'background-color: {{val}};']
			),
			'slide_border_hover' => array(
				'type' => 'radio',
				'label' => __pl('border_state'),
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'slide_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-review-slide' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'slide_border_hover' => ''
				),
			),
			'slide_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-review-slide' => 'border-color: {{val}}!important;'],
				'req' => array(
					'!slide_border_type' => ''
				),
				'show' => array(
					'slide_border_hover' => ''
				),
			),
			'slide_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-slide' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!slide_border_type' => ''
				],
				'show' => array(
					'slide_border_hover' => ''
				),
			),
			'slide_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-slide' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!slide_border_type' => ''
				),
				'show' => array(
					'slide_border_hover' => ''
				),
			),
			'slide_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-review-slide:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'slide_border_hover' => 'hover'
				),
			),
			'slide_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-review-slide:hover' => 'border-color: {{val}} !important;'],
				'default' => '#0986c0',
				'req' => array(
					'!slide_border_type_hover' => ''
				),
				'show' => array(
					'slide_border_hover' => 'hover'
				),
			),
			'slide_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-slide:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!slide_border_type_hover' => ''
				],
				'show' => array(
					'slide_border_hover' => 'hover'
				),
			),
			'slide_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-review-slide:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!slide_border_type_hover' => ''
				),
				'show' => array(
					'slide_border_hover' => 'hover'
				),
			),
			'slide_box_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['{{element}} .pagelayer-review-slide' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			),
		),
		'slider_options' => $pagelayer->slider_options,
		'arrow_styles' => $pagelayer->slider_arrow_styles,
		'pager_styles' => $pagelayer->slider_pager_styles,
		'styles' => array(
			'author_style' => __pl('author_style'),
			'title_style' => __pl('title_style'),
			'review_style' => __pl('review_style'),
			'icon_style' => __pl('icon_style'),
			'seperator_style' => __pl('seperator_style'),
			'stars_style' => __pl('stars_style'),
			'avatar_style' => __pl('avatar_style'),
			'slide_style' => __pl('slide_style'),
			'slider_options' => __pl('slider_options'),			
			'arrow_styles' => __pl('arrow_styles'),			
			'pager_styles' => __pl('pager_styles'),			
		)
	)
);

// Template list
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_templates', array(
		'name' => __pl('templates'),
		'group' => 'other',
		'no_gt' => 1,
		'html' => '<div class="pagelayer-template-content">{{template_content}}</div>',
		'params' => array(
			'templates' => array(
				'type' => 'select',
				'label' => __pl('select_templates'),
				'default' => '0',
				'list' => ['0' => __pl('none')] + pagelayer_post_list_by_type('pagelayer-template'),
			),
		)
	)
);

// Posts Grid
/* pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_wp_posts_grid', array(
		'name' => __pl('Posts Grid'),
		'group' => 'wordpress',
		'html' => '<div class="pagelayer-wp-posts-grid-container"></div>',
		'params' => array(
			'query_type' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_query_type_label'),
				'desc' => __pl('posts_grid_query_type_desc'),
				'default' => 'simple',
				'list' => array(
					'simple' => __pl('simple'),
					'custom' => __pl('posts_grid_custom_query_label'),
					'ids' => __pl('ids'),
				)
			),
			'post_type' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_post_type_label'),
				'desc' => __pl('posts_grid_post_type_desc'),
				'list' => pagelayer_post_types(),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'category' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_category_label'),
				'desc' => __pl('posts_grid_category_desc'),
				'req' => array(
					'post_type' => 'post'
				)
			),
			'tag' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_tag_label'),
				'desc' => __pl('posts_grid_tag_desc'),
				'req' => array(
					'post_type' => 'post'
				)
			),
			'custom_tax' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_custom_tax_label'),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'custom_tax_field' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_custom_tax_field_label'),
				'default' => 'slug',
				'list' => array(
					'term_id' => __pl('term_id'),
					'slug' => __pl('slug'),
					'name' => __pl('name')
				),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'custom_tax_terms' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_custom_tax_term_label'),
				'desc' => __pl('posts_grid_custom_tax_term_desc'),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'posts_per_page' => array(
				'type' => 'spinner',
				'label' => __pl('posts_grid_posts_per_page_label'),
				'default' => 4, // For backward compatibility in lite version must be 3 posts per page
				'min' => 1,
				'max' => 40,
				'step' => 1,
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'posts_order' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_sort_order'),
				'default' => 'DESC',
				'list' => array(
					'ASC' => __pl('posts_grid_sort_order_ascending'),
					'DESC' => __pl('posts_grid_sort_order_descending')
				),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'custom_query' => array(
				'type' => 'textarea',
				'label' => __pl('posts_grid_custom_query_label'),
				'desc' => __pl('posts_grid_custom_query_desc'),
				'req' => array(
					'query_type' => 'custom'
				)
			),
			'ids' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_ids_label'),
				'desc' => __pl('posts_grid_ids_desc'),
				'req' => array(
					'query_type' => 'ids'
				)
			),
			'columns' => array(
				'type' => 'radio',
				'label' => __pl('columns_count'),
				'default' => 2,
				'list' => array( 
					1 => 1,
					2 => 2,
					3 => 3,
					4 => 4,
					6 => 6
				)
			),
			'template' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_template_label'),
				'list' => array(),
			),
			'posts_gap' => array(
				'type' => 'slider',
				'label' => __pl('posts_grid_posts_gap_label'),
				'default' => 30,
				'min' => 0,
				'max' => 100,
				'step' => 10,
			),
			'show_featured_image' => array(
				'type' => 'checkbox',
				'label' => __pl('posts_grid_show_featured_image'),
				'default' => 'true',
			),
			'image_size' => array(
				'type' => 'radio',
				'label' => __pl('obj_image_size_label'),
				'default' => 'large',
				'list' => array(
					'full' => __pl('full'),
					'large' => __pl('large'),
					'medium' => __pl('medium'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom')
				),
				'req' => array(
					'show_featured_image' => 'true'
				),
			),
			'image_custom_size' => array(
				'type' => 'text',
				'desc' => __pl('image_custom_size_label'),
				'req' => array(
					'image_size' => 'custom'
				),
			),
			'title_tag' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_title_tag'),
				'default' => 'h2',
				'list' => array(
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'hide' => __pl('posts_grid_title_tag_none'),
				)
			),
			'show_date_comments' => array(
				'type' => 'checkbox',
				'label' => __pl('posts_grid_show_date_comments'),
				'default' => 'true',
			),
			'show_content' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_show_content'),
				'default' => 'short',
				'list' => array(
					'short' => __pl('posts_grid_show_content_short'),
					'full' => __pl('posts_grid_show_content_full'),
					'excerpt' => __pl('posts_grid_show_content_excerpt'),
					'hide' => __pl('posts_grid_show_content_none'),
				)
			),
			'short_content_length' => array(
				'type' => 'slider',
				'label' => __pl('posts_grid_short_content_length'),
				'default' => 200,
				'min' => 0,
				'max' => 1000,
				'step' => 20,
				'req' => array(
					'show_content' => 'short'
				),
			),
			'read_more_text' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_read_more_text_label'),
				'default' => __pl('posts_grid_read_more_text')
			),
			'display_style' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_display_style'),
				'default' => 'show_all',
				'list' => array(
					'show_all' => __pl('show_all'),
					'load_more' => __pl('posts_grid_display_style_load_more'),
					'pagination' => __pl('posts_grid_display_style_pagination')
				)
			),
			'load_more_text' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_load_more_text_label'),
				'default' => __pl('posts_grid_load_more_text_default'), // "Load More"
				'req' => array(
					'display_style' => 'load_more'
				)
			),
			'filter' => array(
				'type' => 'radio',
				'label' => __pl('posts_grid_filter_label'),
				'desc' => __pl('posts_grid_filter_desc'),
				'default' => 'none',
				'list' => array(
					'none' => __pl('none'),
					'cats' => __pl('posts_grid_filter_by_first_tax'),
					'tags' => __pl('posts_grid_filter_by_second_tax'),
					'both' => __pl('posts_grid_filter_by_both')
				),
				'req' => array(
					'query_type' => 'simple'
				)
			),
			'filter_tax_1' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_filter_first_tax_name'),
				'default' => 'category',
				'list' => pagelayer_tax_list('category'),
				'req' => array(
					'filter' => array( 'cats', 'both' )
				)
			),
			'filter_tax_2' => array(
				'type' => 'select',
				'label' => __pl('posts_grid_filter_second_tax_name'),
				'default' => 'post_tag',
				'list' => pagelayer_tax_list('post_tag'),
				'req' => array(
					'filter' => array( 'tags', 'both' )
				)
			),
			'filter_btn_color' => array(
				'type' => 'color',
				'label' => __pl('button_color_label'),
				'default' => '#333333',
				'req' => array(
					'!filter' => 'none'
				)
			),
			'filter_btn_divider' => array(
				'type' => 'text',
				'label' => __pl('filter_links_divider'),
				'default' => '/',
				'req' => array(
					'filter_btn_color' => 'none'
				)
			),
			'filter_cats_text' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_filter_first_tax_text_label'),
				'default' => __pl('categories') . ':',
				'req' => array(
					'filter' => array('cats', 'both')
				)
			),
			'filter_tags_text' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_filter_second_tax_text_label'),
				'default' => __pl('tags') . ':',
				'req' => array(
					'filter' => array('tags', 'both')
				)
			),
			'filter_all_text' => array(
				'type' => 'text',
				'label' => __pl('posts_grid_filter_view_all_text_label'),
				'default' => __pl('all'),
				'req' => array(
					'!filter' => 'none'
				)
			)
		)
	)
); */

// Posts Slider
/* pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_wp_posts_slider', array(
		'name' => __pl('Posts Slider'),
		'group' => 'wordpress',
		'html' => '<div class="pagelayer-posts-slider-container" slider-autoplay="{{slider_autoplay}}" count="{{items_to_display}}" post-slider-pause="{{pause_on_hover}}" bullets="{{show_bullets}}" controlbtn ="{{show_nav}}" hide-posts-title="{{post_title}}" hide-posts-image="{{posts_image}}" hide-posts-date="{{post_date}}" post-content="{{show_content}}" hide-post-link ="{{read_more}}">
			<ul class="pagelayer-posts-slider-main">
			{{posts_slides}}
			</ul>
		</div>',
		'params' => array(			
			'post_count' => array(
				'type' => 'spinner',
				'label' => __pl('posts_count'),
				'default' => 1,
				'min' => 1,
				'max' => 10,
				'step' => 1
			),			
			'post_type' => array(
				'type' => 'select',
				'label' => __pl('post_types'),
				'default' => 'post',
				'list' => pagelayer_post_types(true),
			),
			'category' => array(
				'type' => 'select',
				'label' => __pl('categories'),
				'list' => pagelayer_get_categories(),
				'req' => array(
					'post_type' => 'post'
				),
			),
			'tags' => array(
				'type' => 'select',
				'label' => __pl('tags'),
				'list' => pagelayer_get_tags(),
				'req' => array(
					'post_type' => 'post'
				),
			),
			'order_by' => array(
				'type' => 'select',
				'label' => __pl('posts_order_by'),
				'default' => 'date',
				'list' => array(
					'ID' => __pl('posts_order_by_id'),
					'date' => __pl('posts_order_by_date'),
					'author' => __pl('posts_order_by_author'),
					'modified' => __pl('posts_order_by_modified'),
					'rand' => __pl('posts_order_by_random'),
					'comment_count' => __pl('posts_order_by_comment_count'),
					'menu_order' => __pl('posts_order_by_menu_order'),
				),
			),
			'sort_order' => array(
				'type' => 'radio',
				'label' => __pl('post_sort_order'),
				'default' => 'DESC',
				'list' => array(
					'ASC' => __pl('sort_order_ascending'),
					'DESC' => __pl('sort_order_descending'),
				),
			),
			'show_excerpt' => array(
				'type' => 'checkbox',
				'label' => __pl('show_excerpt'),
			),
		),
		'title_style' => [
			'post_title' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_title'),
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('title_color'),
				'default' => '#000000',
				'css' =>  ['{{element}} .pagelayer-posts-slider-title' => 'color:{{val}}'],
				'req' => array(
					'post_title' => '',
				),
			),
			'title_spacing' => array(
				'type' => 'padding',
				'label' => __pl('spacing'),
				'css' => ['{{element}} .pagelayer-posts-slider-title' => 'margin:{{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'post_title' => '',
				),
			),
			'post_title_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',20,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-posts-slider-title' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => array(
					'post_title' => '',
				),
			),
		],
		'image_style' => [
			'posts_image' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_image'),
			),
			'image_size' => array(
				'type' => 'radio',
				'label' => __pl('image_size'),
				'default' => 'full',
				'list' => array(
					'full' => __pl('full'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom')
				),
				'req' => array(
					'posts_image' => '',
				),
			),			
			'img_height' => array(
				'type' => 'slider',
				'label' => __pl('img_height'),
				'css' => ['{{element}} .pagelayer-posts-slider-img' => 'height: {{val}}em;'],
				'default' => 10,
				'min' => 10,
				'max' => 20,
				'step' => 0.2,
				'req' => array(
					'image_size' => 'custom',
				),
			),
			'image_spacing' => array(
				'type' => 'padding',
				'label' => __pl('spacing'),
				'css' => ['{{element}} .pagelayer-posts-slider-featured-img' => 'margin: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'posts_image' => '',
				),
			),
		],
		'content_style' => [
			'content_color' => array(
				'type' => 'color',
				'label' => __pl('content_color'),
				'default' => '#000000',
				'css' =>  ['{{element}} .pagelayer-posts-slider-excerpt' => 'color:{{val}}'],
			),
			'post_content_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',16,,300,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-posts-slider-excerpt ' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
		],
		'date_style' => [
			'post_date' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_date'),
			),
			'date_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#000000',
				'css' =>  ['{{element}} .pagelayer-post-slider-date p' => 'color:{{val}}'],
				'req' => array(
					'post_date' => '',
				),
			),
			'post_date_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',14,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-post-slider-date p' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}}!important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing:{{val[10]}}px !important;'],
				'req' => array(
					'post_date' => '',
				),
			),
		],
		'post_style' => [
			'read_more' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_link'),
			),
			'link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'default' => '#e82121',
				'css' =>  ['{{element}} .pagelayer-posts-slider-link' => 'color:{{val}}'],
			),
			'background_color' => array(
				'type' => 'color',
				'label' => __pl('background_color'),
				'css' =>  ['{{element}} .pagelayer-posts-slider-post' => 'background-color:{{val}}'],
			),
			'link_style' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'default' => ',16,,500,,,solid,,,,',
				'css' => ['{{element}} .pagelayer-posts-slider-link' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'post_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('post_shadow'),
				'css' => ['{{element}} .pagelayer-posts-slider-post' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
			),			
			'post_border_hover' => array(
				'type' => 'radio',
				'label' => __pl('border_state'),
				'default' => '',
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'post_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-posts-slider-post' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'post_border_hover' => ''
				),
			),
			'post_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-posts-slider-post' => 'border-color: {{val}}!important;'],
				'req' => array(
					'!post_border_type' => ''
				),
				'show' => array(
					'post_border_hover' => ''
				),
			),
			'post_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['{{element}} .pagelayer-posts-slider-post' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!post_border_type' => ''
				],
				'show' => array(
					'post_border_hover' => ''
				),
			),
			'post_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' => ['{{element}} .pagelayer-posts-slider-post' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!post_border_type' => ''
				),
				'show' => array(
					'post_border_hover' => ''
				),
			),
			'post_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-posts-slider-post:hover' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => array(
					'post_border_hover' => 'hover'
				),
			),
			'post_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-posts-slider-post:hover' => 'border-color: {{val}} !important;'],
				'default' => '#0986c0',
				'req' => array(
					'!post_border_type_hover' => ''
				),
				'show' => array(
					'post_border_hover' => 'hover'
				),
			),
			'post_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['{{element}} .pagelayer-posts-slider-post:hover' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!post_border_type_hover' => ''
				],
				'show' => array(
					'post_border_hover' => 'hover'
				),
			),
			'post_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' => ['{{element}} .pagelayer-posts-slider-post:hover' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!post_border_type_hover' => ''
				),
				'show' => array(
					'post_border_hover' => 'hover'
				),
			),			
		],
		'slider_options' => [
			'items_to_display' => array(
				'type' => 'spinner',
				'label' => __pl('slider_items_display'),
				'default' => 1,
				'min' => 1,
				'max' => 10,
				'step' => 1
			),
			'slider_autoplay' => array(
				'type' => 'checkbox',
				'label' => __pl('autoplay'),
				'default' => 'true',
			),
			'show_nav' => array(
				'type' => 'checkbox',
				'label' => __pl('slider_navigations'),
				'default' => 'true',
			),
			'nav_arrow_color' => array(
				'type' => 'color',
				'label' => __pl('slider_arrows_color'),
				'css' => ['{{element}} .pagelayer-prev-arrow:before' => 'color:{{val}} !important;',
				'{{element}} .pagelayer-next-arrow:before' => 'color:{{val}} !important;'],
				'req' => array(
					'show_nav' => 'true',
				)
			),
			'show_bullets' => array(
				'type' => 'checkbox',
				'label' => __pl('bullets'),
				'default' => 'true',
			),
			'pause_on_hover' => array(
				'type' => 'checkbox',
				'label' => __pl('slider_pause_on_hover'),
			),
		],
		'styles' => [
			'title_style' => __pl('title_style'),
			'image_style' => __pl('image_style'),
			'content_style' => __pl('content_style'),
			'date_style' => __pl('date_style'),
			'post_style' => __pl('posts_style'),
			'slider_options' => __pl('slider_options'),
		],
	)
); */

// Image Portfolio
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_img_portfolio', array(
	'name' => __pl('img_portfolio'),
	'group' => 'image',
	'icon' => 'fas fa-briefcase',
	'has_group' => [
		'section' => 'params',
		'prop' => 'elements'
	],
	//'child_selector' => '>.pagelayer-owl-stage-outer>.pagelayer-owl-stage>.pagelayer-owl-item', // Make it very specifc
	'holder' => '.pagelayer-img_portfolio-holder',
	'html' => '<div class="pagelayer-category-holder"></div>
		<div class="pagelayer-img_portfolio-holder"></div>',
	'params' => array(
		'elements' => array(
			'type' => 'group',
			'label' => __pl('image'),
			'sc' => PAGELAYER_SC_PREFIX.'_single_img',
			'item_label' => array(
				'default' => __pl('image'),
				'param' => 'title'
			),
			'count' => 1,
			'text' => strtr(__pl('add_new_item'), array('%name%' => __pl('image')))
		)
	),
	'img_style' =>[
		'img_width' => array(
			'type' => 'slider',
			'label' => __pl('width'),
			'screen' => 1,
			'min' => 0,
			'step' => 1,
			'max' => 100,
			'css' => ['{{element}} .pagelayer-img_portfolio-holder>div' => 'width: {{val}}%;'],
		),
		'img_spacing' => array(
			'type' => 'padding',
			'label' => __pl('space_around'),
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-single_img' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px'],
		),
		'img_height' => array(
			'type' => 'spinner',
			'label' => __pl('height'),
			'screen' => 1,
			'min' => 0,
			'step' => 1,
			'css' => ['{{element}} .pagelayer-img_portfolio-holder>div' => 'height: {{val}}px; overflow:hidden;'],
		),
		'img_stretch' => array(
			'type' => 'checkbox',
			'label' => __pl('stretch'),
			'css' => [
				'{{element}}, {{element}} .pagelayer-pf-img, {{element}} .pagelayer-pf-img img'=> 'height:100%; width:100%;'
			],
			'req' => ['!img_height' => '']
		),
		'img_hover' => array(
			'type' => 'radio',
			'label' => __pl('state'),
			'list' => array(
				'' => __pl('normal'),
				'hover' => __pl('hover'),
			),
		),
		'img_filter' => array(
			'type' => 'filter',
			'label' => __pl('filter'),
			'css' => ['{{element}} .pagelayer-pf-img img' => 'filter: blur({{val[0]}}px) brightness({{val[1]}}%) contrast({{val[2]}}%) grayscale({{val[3]}}%) hue-rotate({{val[4]}}deg) opacity({{val[5]}}%) saturate({{val[6]}}%)'],
			'show' => ['img_hover' => '']
		),
		'img_shadow' => array(
			'type' => 'box_shadow',
			'label' => __pl('shadow'),
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-pf-img img' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			'show' => ['img_hover' => '']
		),
		'img_rotate' => array(
			'type' => 'spinner',
			'label' => __pl('Rotate'),
			'min' => 0,
			'max' => 360,
			'step' => 1,
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-pf-img img' => 'transform: rotate({{val}}deg)'],
			'show' => ['img_hover' => '']
		),
		'img_hover_delay' => array(
			'type' => 'spinner',
			'label' => __pl('btn_hover_delay_label'),
			'desc' => __pl('btn_hover_delay_desc'),
			'min' => 0,
			'step' => 100,
			'max' => 5000,
			'css' => ['{{element}} .pagelayer-pf-img img' => '-webkit-transition: all {{val}}ms; transition: all {{val}}ms;',],
			'show' => ['img_hover' => 'hover']
		),
		'img_filter_hover' => array(
			'type' => 'filter',
			'label' => __pl('filter'),
			'css' => ['{{element}} .pagelayer-pf-img img:hover' => 'filter: blur({{val[0]}}px) brightness({{val[1]}}%) contrast({{val[2]}}%) grayscale({{val[3]}}%) hue-rotate({{val[4]}}deg) opacity({{val[5]}}%) saturate({{val[6]}}%)'],
			'show' => ['img_hover' => 'hover']
		),
		'img_shadow_hover' => array(
			'type' => 'box_shadow',
			'label' => __pl('shadow'),
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-pf-img img:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			'show' => ['img_hover' => 'hover']
		),
		'img_rotate_hover' => array(
			'type' => 'spinner',
			'label' => __pl('Rotate'),
			'min' => 0,
			'max' => 360,
			'step' => 1,
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-pf-img img:hover' => 'transform: rotate({{val}}deg)'],
			'show' => ['img_hover' => 'hover']
		)
	],
	'btns_style' => [
		'disable_category' => array(
			'type' => 'checkbox',
			'label' => __pl('disable_category'),
			'css' => ['{{element}} .pagelayer-category-holder' => 'display:none']
		),
		'btn_align' => array(
			'label' => __pl('alignment'),
			'type' => 'select',
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-category-holder' => 'text-align:{{val}};'],
			'list' => array(
				'left' => __pl('left'),
				'center' => __pl('center'),
				'right' => __pl('right'),
				'justify' => __pl('justify'),
			)
		),
		'btn_size' => array(
			'type' => 'dimension',
			'label' => __pl('size'),
			'screen' => 1,
			'css' => ['{{element}} button' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[0]}}px; padding-left: {{val[1]}}px;'],
		),
		'btn_spacing' => array(
			'type' => 'dimension',
			'label' => __pl('space_around'),
			'screen' => 1,
			'css' => ['{{element}} button' => 'margin-top: {{val[0]}}px; margin-right: {{val[1]}}px; margin-bottom: {{val[0]}}px; margin-left: {{val[1]}}px;'],
		),
		'btn_space_bottom' => array(
			'type' => 'slider',
			'label' => __pl('space_bottom'),
			'screen' => 1,
			'min' => 0,
			'step' => 1,
			'max' => 1000,
			'css' => ['{{element}} .pagelayer-category-holder' => 'padding-bottom: {{val}}px;'],
		),
		'btn_hover' => [
			'type' => 'radio',
			'label' => '',
			'list' => [
				'' => __pl('normal'),
				'hover' => __pl('hover'),
			],
		],
		'btn_color' => array(
			'label' => __pl('color'),
			'type' => 'color',
			'css' => ['{{element}} button' => 'color: {{val}};'],
			'show' => ['btn_hover' => ''],
		),
		'btn_bg' => array(
			'label' => __pl('bg_color'),
			'type' => 'color',
			'css' => ['{{element}} button' => 'background-color: {{val}};'],
			'show' => ['btn_hover' => ''],
		),
		'btn_typo' => array(
			'type' => 'typography',
			'label' => __pl('typography'),
			'css' => ['{{element}} button' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			'show' => ['btn_hover' => ''],
		),
		'btn_border_type' => [
			'type' => 'select',
			'label' => __pl('border_type'),
			'screen' => 1,
			'list' => [
				'' => __pl('none'),
				'solid' => __pl('solid'),
				'double' => __pl('double'),
				'dotted' => __pl('dotted'),
				'dashed' => __pl('dashed'),
				'groove' => __pl('groove'),
			],
			'show' => ['btn_hover' => ''],
			'css' => ['{{element}} button' => 'border-style: {{val}}'],
		],
		'btn_border_width' => [
			'type' => 'padding',
			'label' => __pl('border_width'),
			'units' => ['px', 'em'],
			'screen' => 1,
			'show' => [
				'btn_hover' => ''
			],
			'req' => [
				'!btn_border_type' => ''
			],
			'css' => ['{{element}} button' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
		],
		'btn_border_color' => [
			'type' => 'color',
			'label' => __pl('border_color'),
			'screen' => 1,
			'show' => [
				'btn_hover' => ''
			],
			'req' => [
				'!btn_border_type' => ''
			],
			'css' => ['{{element}} button' => 'border-color: {{val}}'],
		],
		'btn_border_radius' => [
			'type' => 'padding',
			'label' => __pl('border_radius'),
			'units' => ['px', 'em'],
			'screen' => 1,
			'show' => ['btn_hover' => ''],
			'css' => ['{{element}} button' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
		],
		'btn_hover_delay' => array(
			'type' => 'spinner',
			'label' => __pl('btn_hover_delay_label'),
			'desc' => __pl('btn_hover_delay_desc'),
			'min' => 0,
			'step' => 100,
			'max' => 5000,
			'css' => ['{{element}} button' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
			'show' => array(
				'btn_hover' => 'hover'
			),
		),
		'btn_color_hover' => array(
			'label' => __pl('color'),
			'type' => 'color',
			'css' => ['{{element}} button:hover' => 'color: {{val}};'],
			'show' => ['btn_hover' => 'hover'],
		),
		'btn_bg_hover' => array(
			'label' => __pl('bg_color'),
			'type' => 'color',
			'css' => ['{{element}} button:hover' => 'background-color: {{val}};'],
			'show' => ['btn_hover' => 'hover'],
		),
		'btn_typo_hover' => array(
			'type' => 'typography',
			'label' => __pl('typography'),
			'css' => ['{{element}} button:hover' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			'show' => ['btn_hover' => 'hover'],
		),
		'btn_btype_hover' => [
			'type' => 'select',
			'label' => __pl('border_type'),
			'screen' => 1,
			'list' => [
				'' => __pl('none'),
				'solid' => __pl('solid'),
				'double' => __pl('double'),
				'dotted' => __pl('dotted'),
				'dashed' => __pl('dashed'),
				'groove' => __pl('groove'),
			],
			'show' => ['btn_hover' => 'hover'],
			'css' => ['{{element}} button:hover' => 'border-style: {{val}}'],
		],
		'btn_bwidth_hover' => [
			'type' => 'padding',
			'label' => __pl('border_width'),
			'units' => ['px', 'em'],
			'screen' => 1,
			'show' => [
				'btn_hover' => 'hover'
			],
			'req' => [
				'!btn_btype_hover' => ''
			],
			'css' => ['{{element}} button:hover' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
		],
		'btn_bcolor_hover' => [
			'type' => 'color',
			'label' => __pl('border_color'),
			'screen' => 1,
			'show' => [
				'btn_hover' => 'hover'
			],
			'req' => [
				'!btn_btype_hover' => ''
			],
			'css' => ['{{element}} button:hover' => 'border-color: {{val}}'],
		],
		'btn_bradius_hover' => [
			'type' => 'padding',
			'label' => __pl('border_radius'),
			'screen' => 1,
			'units' => ['px', 'em'],
			'show' => ['btn_hover' => 'hover'],
			'css' => ['{{element}} button:hover' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
		],
	],
	'styles' => [
		'img_style' => __pl('service_img_style'),
		'btns_style' => __pl('button_style'),
	]
));

// Image Portfolio
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_single_img', array(
	'name' => __pl('image'),
	'group' => 'other',
	'not_visible' => 1,
	'parent' => [PAGELAYER_SC_PREFIX.'_img_portfolio'],
	'html' => '<div class="pagelayer-pf-img">
		<a if-ext="{{link_type}}" class="pagelayer-ele-link" href="{{func_link}}" pagelayer-image-link-type="{{link_type}}">
			<img class="pagelayer-img" src="{{func_img}}" title="{{{img-title}}}" alt="{{{img-alt}}}" />
			<div if="{{overlay}}" class="pagelayer-image-overlay">
				<div class="pagelayer-image-overlay-content">
					<i if="{{icon}}" class="pagelayer-image-overlay-icon {{icon}}"></i>
					<h3 if="{{heading}}" class="pagelayer-overlay-heading">{{heading}}</h3>
					<div if="{{text}}" class="pagelayer-image-overlay-text">{{text}}</div>
				</div>
			</div>
		</a>
	</div>',
	'params' => array(
		'title' => array(
				'type' => 'text',
				'label' => __pl('title'),
				'default' => 'Lorem',
		),
		'img' => array(
			'label' => __pl('image_src_label'),
			'type' => 'image',
			'default' => PAGELAYER_URL.'/images/default-image.png',
			'addAttr' => 'port-cat="all"',
		),
		'img-size' => array(
			'label' => __pl('obj_image_size_label'),
			'type' => 'select',
			'default' => 'full',
			'list' => array(
				'full' => __pl('full'),
				'large' => __pl('large'),
				'medium' => __pl('medium'),
				'thumbnail' => __pl('thumbnail'),
				'custom' => __pl('custom')
			)
		),
		'custom_size' => array(
			'label' => __pl('image_custom_size_label'),
			'type' => 'dimension',
			'default' => '100,100',
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-img' => 'width: {{val[0]}}px; height: {{val[1]}}px;'],
			'req' => array(
				'img-size' => 'custom'
			),
		),
		'cat_name' => array(
			'type' => 'text',
			'addAttr' => 'port-cat="{{cat_name}}"',
			'label' => __pl('category'),
			'default' => __pl('Technology'),
		),
		'link_type' => array(
			'label' => __pl('image_link_label'),
			'type' => 'select',
			'list' => array(
				'' => __pl('none'),
				'custom_url' => __pl('custom_url'),
				'media_file' => __pl('media_file'),
				'lightbox' => __pl('lightbox')
			)
		),
		'link' => array(
			'type' => 'link',
			'label' => __pl('image_link_label'),
			'desc' => __pl('image_link_desc'),
			'selector' => '.pagelayer-ele-link',
			'req' => array(
				'link_type' => 'custom_url'
			)
		),
		'rel' => array(
			'label' => __pl('image_rel_label'),
			'type' => 'text',
			'addAttr' => ['{{element}} a' => 'rel="{{rel}}"'],
			'req' => array(
				'link_type' => 'media_file'
			)
		),
		'target' => array(
			'label' => __pl('open_link_in_new_window'),
			'type' => 'checkbox',
			'addAttr' => ['{{element}} a' => 'target="_blank"'],
			'req' => ['link_type' => ['custom_url', 'media_file']], // For backward compatibility of the new link property in version 1.5.8, hide it for custom_url.
			'show' => ['link_type' => 'media_file']
		),
	),
	'overlay_style' => [
		'overlay' => array(
			'label' => __pl('image_overlay_effect_label'),
			'desc' => __pl('image_overlay_effect_desc'),
			'type' => 'checkbox',
		),
		'icon' => array(
			'label' => __pl('icon'),
			'type' => 'icon',
			'default' => 'far fa-eye',
			'req' => array(
				'overlay' => 'true'
			)
		),
		'icon_color' => array(
			'label' => __pl('icon_color'),
			'type' => 'color',
			'css' => ['{{element}} .pagelayer-image-overlay-icon' => 'color: {{val}}'],
			'req' => array(
				'overlay' => 'true'
			)
		),
		'icon_size' => array(
			'label' => __pl('icon_custom_size'),
			'desc' => __pl('icon_custom_size_desc'),
			'type' => 'spinner',
			'min' => 0,
			'step' => 1,
			'max' => 500,
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-image-overlay-icon' => 'font-size: {{val}}px'],
			'req' => array(
				'overlay' => 'true'
			)
		),
		'heading' => array(
			'label' => __pl('title'),
			'type' => 'text',
			'edit' => '.pagelayer-overlay-heading',
			'req' => array(
				'overlay' => 'true'
			)
		),
		'heading_color' => array(
			'label' => __pl('title_color'),
			'type' => 'color',
			'css' => ['{{element}} .pagelayer-overlay-heading, {{element}} .pagelayer-overlay-heading *' => 'color: {{val}}'],
			'req' => array(
				'overlay' => 'true'
			)
		),
		'heading_typo' => array(
			'type' => 'typography',
			'label' => __pl('heading_typo'),
			'css' => [
				'{{element}} .pagelayer-overlay-heading, {{element}} .pagelayer-overlay-heading *' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
			],
			'req' => array(
				'overlay' => 'true'
			)
		),
		'text' => array(
			'label' => __pl('content'),
			'type' => 'editor',
			'default' => 'Lorem Ipsum',
			'edit' => '.pagelayer-image-overlay-text',
			'req' => array(
				'overlay' => 'true'
			)
		),
		'overlay_bg_type' => array(
			'label' => __pl('background_type'),
			'type' => 'radio',
			'list' => array(
				'' => __pl('color'),
				'gradient' => __pl('gradient')
			),
			'req' => array(
				'overlay' => 'true'
			)
		),
		'overlay_bg' => array(
			'label' => __pl('image_overlay_background'),
			'type' => 'color',
			'css' => ['{{element}} .pagelayer-image-overlay' => 'background: {{val}}'],
			'req' => array(
				'overlay' => 'true',
				'overlay_bg_type' => ''
			)
		),
		'overlay_gradient' => [
			'type' => 'gradient',
			'label' => '',
			'css' => ['{{element}} .pagelayer-image-overlay' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
			'req' => array(
				'overlay' => 'true',
				'overlay_bg_type' => 'gradient'
			)
		],
		'content_align' => array(
			'label' => __pl('alignment'),
			'type' => 'radio',
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-image-overlay-content' => 'text-align: {{val}};'],
			'list' => array(
				'left' => __pl('left'),
				'center' => __pl('center'),
				'right' => __pl('right'),
			),
			'req' => array(
				'overlay' => 'true'
			)
		),
		'content_position' => array(
			'label' => __pl('overlay_cont_pos'),
			'type' => 'radio',
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-image-overlay' => 'display:-webkit-flex;display:flex;-webkit-align-items:{{val}}; align-items:{{val}};'],
			'list' => array(
				'flex-start' => __pl('Top'),
				'center' => __pl('Middle'),
				'flex-end' => __pl('Bottom'),
			),
			'req' => array(
				'overlay' => 'true'
			)
		),
		'content_padding' => array(
			'type' => 'padding',
			'label' => __pl('padding'),
			'screen' => 1,
			'css' => ['{{element}}:hover .pagelayer-image-overlay' => 'padding-top: {{val[0]}}px; padding-right: {{val[1]}}px; padding-bottom: {{val[2]}}px; padding-left: {{val[3]}}px;'],
			'req' => array(
				'overlay' => 'true'
			)
		),
		'show_always' => array(
			'label' => __pl('image_show_always'),
			'type' => 'checkbox',
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-image-overlay' => 'height:100%;'],
			'req' => array(
				'overlay' => 'true'
			)
		)
	],
	'styles' => [
		'overlay_style' => __pl('overlay_style')
	]
));

/////////////////////////////////////
// WooCommerce Shortcodes
/////////////////////////////////////

if(class_exists( 'woocommerce' )){

// Product Images
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_images', array(
		'name' => __pl('product_images'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-product-images-container product pagelayer-woo-gallery-{{gposition}}">
		{{product_images_templ}}
		</div>',
		'params' => array(
			'sale_flash' => array(
				'type' => 'checkbox',
				'label' => __pl('sale_flash'),
			),
			'image_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['.woocommerce {{element}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper' => 'border-style: {{val}}',
					'.woocommerce {{element}} .flex-viewport' => 'border-style: {{val}}',
				],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'image_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['.woocommerce {{element}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper' => 'border-color: {{val}};',
					'.woocommerce {{element}} .flex-viewport' => 'border-color: {{val}};',
				],
				'req' => array(
					'!image_border_type' => ''
				),
			),
			'image_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['.woocommerce {{element}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px',
					'.woocommerce {{element}} .flex-viewport' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px',
				],
				'req' => [
					'!image_border_type' => ''
				],
			),
			'image_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
					'.woocommerce {{element}} .flex-viewport' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
				],
			),
		),
		'thumbnails' => array(
			'disable_gallery' => array(
				'type' => 'checkbox',
				'label' => __pl('disable_gallery'),
				'css' => ['{{element}} ol.flex-control-thumbs' => 'display:none !important'],
			),
			'gposition' => array(
				'label' => __pl('gallery_position'),
				'type' => 'radio',
				'default' => 'bottom',
				'list' => array(
					'left' => __pl('left'),
					'top' => __pl('top'),
					'right' => __pl('right'),
					'bottom' => __pl('bottom')
				),
				'req' => array(
					'disable_gallery' => '',
				),
			),
			'thumb_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['.woocommerce {{element}} .flex-control-thumbs img' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'req' => array(
					'disable_gallery' => '',
				),
			),
			'thumb_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['.woocommerce {{element}} .flex-control-thumbs img' => 'border-color: {{val}};'],
				'req' => array(
					'disable_gallery' => '',
					'!thumb_border_type' => ''
				),
			),
			'thumb_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['.woocommerce {{element}} .flex-control-thumbs img' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'disable_gallery' => '',
					'!thumb_border_type' => ''
				],
			),
			'thumb_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} .flex-control-thumbs img' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
				'req' => array(
					'disable_gallery' => '',
				),
			),
			'thumb_space' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_space'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} .flex-control-thumbs li' => 'padding-right: calc({{val}} / 2); padding-left: calc({{val}} / 2); padding-bottom: {{val}}',
					'.woocommerce {{element}} .flex-control-thumbs' => 'margin-right: calc(-{{val}} / 2); margin-left: calc(-{{val}} / 2)'
				],
				'req' => array(
					'disable_gallery' => '',
				),
			),
			'thumb_vertical_space' => array(
				'type' => 'slider',
				'label' => __pl('vertical_space'),
				'units' => ['px','%'],
				'css' => ['.woocommerce {{element}} .flex-control-thumbs li' => 'padding-top: {{val}} ; padding-bottom: {{val}};',
					'.woocommerce {{element}} .flex-control-thumbs' => 'margin-top: calc(-{{val}} / 2); margin-bottom: calc(-{{val}} / 2)'
				],
				'req' => array(
					'disable_gallery' => '',
				),
			),
		),
		'styles' => [
			'thumbnails' => __pl('thumbnails'),
		],
	)
);

// Product Price
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_price', array(
		'name' => __pl('product_price'),
		'group' => 'woocommerce',
		'html' => '<div class=" product pagelayer-product-price-container">
		{{pagelayer-product-price}}
		</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['.woocommerce {{element}} .pagelayer-product-price-container' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'price_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .price .woocommerce-Price-amount' => 'color: {{val}} !important',
					'.woocommerce {{element}} .price' => 'color: {{val}} !important'
				],
			),
			'price_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['.woocommerce {{element}} .price .woocommerce-Price-amount' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
					'.woocommerce {{element}} .price' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
		'sale_price' => array(
			'sale_price_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .price ins .woocommerce-Price-amount' => 'color: {{val}} !important',
					'.woocommerce {{element}} .price ins' => 'color: {{val}} !important'
				],
			),
			'sale_price_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['.woocommerce {{element}} .price ins .woocommerce-Price-amount' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
					'.woocommerce {{element}} .price ins .woocommerce-Price-amount' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'sale_space_bottom' => array(
				'type' => 'checkbox',
				'label' => __pl('space_bottom'),
				'addAttr' => ['{{element}} .price' => 'pagelayer-bottom="yes"'],
			),
			'sale_price_space' => array(
				'type' => 'slider',
				'label' => __pl('space'),
				'units' => [ 'px', '%' ],
				'step' => 0.1,
				'css' => ['body:not(.rtl) {{element}} .price:not([pagelayer-bottom="yes"]) del' => 'margin-right: {{val}}',
					'body.rtl {{element}} .price:not([pagelayer-bottom="yes"]) del' => 'margin-right: {{val}}',
					'{{element}} .price[pagelayer-bottom="yes"] del' => 'margin-bottom: {{val}}'
				],
			),
		),
		'styles' => [
			'sale_price' => __pl('sale_price'),
		],
	)
);

// Add to cart
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_add_to_cart', array(
		'name' => __pl('add_to_cart'),
		'group' => 'woocommerce',
		'html' => '<div class=" product pagelayer-add-to-cart-holder">{{product_add_to_cart}}<div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['.woocommerce {{element}}' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'cart_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['.woocommerce {{element}} .cart button' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'cart_colors' => array(
				'type' => 'radio',
				'label' => __pl('color'),
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
			),
			'cart_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .cart button' => 'color: {{val}} !important'],
				'show' => ['cart_colors' => ''],
			),
			'cart_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .cart button' => 'background-color: {{val}} !important'],
				'show' => ['cart_colors' => ''],
			),
			'cart_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['.woocommerce {{element}} .cart button' => 'border-color: {{val}} !important'],
				'show' => ['cart_colors' => ''],
			),
			'cart_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .cart button:hover' => 'color: {{val}} !important'],
				'show' => ['cart_colors' => 'hover'],
			),
			'cart_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .cart button:hover' => 'background-color: {{val}} !important'],
				'show' => ['cart_colors' => 'hover'],
			),
			'cart_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['.woocommerce {{element}} .cart button:hover' => 'border-color: {{val}} !important'],
				'show' => ['cart_colors' => 'hover'],
			),
			'cart_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['.woocommerce {{element}} .cart button' => 'border-style: {{val}}',
				],
				'list' => [
					'' => __pl('default'),
					'none' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'cart_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['.woocommerce {{element}} .cart button' => 'border-top-width: {{val[0]}}px !important; border-right-width: {{val[1]}}px !important; border-bottom-width: {{val[2]}}px !important; border-left-width: {{val[3]}}px !important',
				],
				'req' => [
					'!cart_border_type' => ['', 'none'],
				],
			),
			'cart_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} .cart button' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;',
				],
			),
			'cart_border_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => [ 'px', '%', 'em' ],
				'css' => ['.woocommerce {{element}} .cart button' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;'],
			),
		),
		'cart_quantity' => array(
			'quantity_space' => array(
				'type' => 'slider',
				'label' => __pl('space'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => ['body:not(.rtl) {{element}} .quantity + .button' => 'margin-left: {{val}}',
					'body.rtl {{element}} .quantity + .button' => 'margin-right: {{val}}'
				],
			),
			'quantity_width' => array(
				'type' => 'slider',
				'label' => __pl('Width'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => ['.woocommerce {{element}}  .quantity .qty' => 'width: {{val}} !important'],
			),
			'quantity_typo' => array(
				'type' => 'typography',
				'label' => __pl('heading_typo'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'quantity_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'list' => array(
					'' => __pl('normal'),
					'focus' => __pl('focus'),
				),
			),
			'quantity_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'color: {{val}} !important'],
				'show' => ['quantity_colors' => ''],
			),
			'quantity_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'background-color: {{val}} !important'],
				'show' => ['quantity_colors' => ''],
			),
			'quantity_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'border-color: {{val}} !important'],
				'show' => ['quantity_colors' => ''],
			),
			'quantity_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .quantity .qty:focus' => 'color: {{val}} !important'],
				'show' => ['quantity_colors' => 'focus'],
			),
			'quantity_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .quantity .qty:focus' => 'background-color: {{val}} !important'],
				'show' => ['quantity_colors' => 'focus'],
			),
			'quantity_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .quantity .qty:focus' => 'border-color: {{val}} !important'],
				'show' => ['quantity_colors' => 'focus'],
			),
			'quantity_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'border-style: {{val}} !important',
				],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'quantity_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'border-top-width: {{val[0]}}px !important; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px !important; border-left-width: {{val[3]}}px !important',
				],
				'req' => [
					'!quantity_border_type' => ''
				],
			),
			'quantity_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;',
				],
			),
			'quantity_border_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => [ 'px', '%', 'em' ],
				'css' => ['.woocommerce {{element}} .quantity .qty' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;'],
			),
		),
		'cart_variations' => array(
			'variations_space' => array(
				'type' => 'slider',
				'label' => __pl('space'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => ['.woocommerce {{element}} form.cart .variations' => 'margin-bottom: {{val}} !important'],
			),
			'variations_space_between' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => ['.woocommerce {{element}} form.cart table.variations tr:not(:last-child)' => 'margin-bottom: {{val}} !important'],
			),
			'variations_label' => array(
				'type' => 'heading',
				'label' => __pl('label'),
			),
			'variations_label_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} form.cart table.variations label' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'variations_label_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} form.cart table.variations label' => 'color: {{val}} !important'],
			),
			'sel_label' => array(
				'type' => 'heading',
				'label' => __pl('select'),
			),
			'variations_sel_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} form.cart table.variations td.value select' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'variations_sel_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} form.cart table.variations td.value select' => 'color: {{val}} !important'],
			),
			'variations_sel_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} form.cart table.variations td.value select' => 'background-color: {{val}} !important'],
			),
			'variations_border_sel_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['.woocommerce {{element}} form.cart table.variations td.value:before' => 'border-color: {{val}} !important'],
			),
			'variations_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'css' => ['.woocommerce {{element}} form.cart table.variations td.value select' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;',
				],
			),
			
		),
		'styles' => [
			'cart_quantity' => __pl('quantity'),
			'cart_variations' => __pl('variations'),
		],
	)
);

// Product Rating
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_rating', array(
		'name' => __pl('product_rating'),
		'group' => 'woocommerce',
		'html' => '<div class=" product pagelayer-product-rating">{{product_rating}}</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['.woocommerce {{element}}' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'star_color' => array(
				'type' => 'color',
				'label' => __pl('star_color'),
				'css' => ['.woocommerce {{element}} .star-rating' => 'color: {{val}}'],
			),
			'star_emp_color' => array(
				'type' => 'color',
				'label' => __pl('empty_star_color'),
				'css' => ['.woocommerce {{element}} .star-rating::before' => 'color: {{val}}'],
			),
			'review_link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-review-link' => 'color: {{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} .woocommerce-review-link' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'star_size' => array(
				'type' => 'slider',
				'label' => __pl('star_size'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => ['.woocommerce {{element}} .star-rating' => 'font-size:{{val}}'],
			),
			'space_between' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'units' => [ 'px', 'em' ],
				'step' => 0.1,
				'css' => [
					'.woocommerce:not(.rtl) {{element}} .star-rating' => 'margin-right: {{val}}',
					'.woocommerce.rtl {{element}} .star-rating' => 'margin-left: {{val}}'
				],
			),
		),
		'review_link' => array(
			'disable_review_link' => array(
				'type' => 'checkbox',
				'label' => __pl('disable_link'),
				'css' => ['.woocommerce {{element}} .woocommerce-review-link' => 'display:none !important'],
			),
			'link_hover' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'list' => array(
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => array(
					'disable_review_link' => '',
				),
			),
			'link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-review-link' => 'color: {{val}}; transition: all 0.5s ;'],
				'req' => array(
					'disable_review_link' => '',
				),
				'show' => ['link_hover' => ''],
			),
			'link_hover_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-review-link:hover' => 'color: {{val}} !important;'],
				'req' => array(
					'disable_review_link' => '',
				),
				'show' => ['link_hover' => 'hover'],
			),
		),
		'styles' => [
			'review_link' => __pl('Review Link'),

		]
	)
);

// Product Meta
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_meta', array(
		'name' => __pl('product_meta'),
		'group' => 'woocommerce',
		'html' => '<div class=" product pagelayer-product-meta pagelayer-meta-{{display}}">{{product_meta}}</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['.woocommerce {{element}} .pagelayer-product-meta' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'display' => array(
				'type' => 'radio',
				'label' => __pl('display'),
				'css' => ['.woocommerce {{element}} .product_meta > span' => 'display: {{val}}'],
				'list' => array(
					'inline-block' => __pl('inline_block'),
					'block' => __pl('block'),
				),
			),
			'space_between' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'step' => 0.1,
				'css' => [
					'.woocommerce {{element}} .pagelayer-product-meta:not(.pagelayer-meta-block) .product_meta > span:not(:first-child)' => 'margin-left: {{val}}px',
					'.woocommerce {{element}} .pagelayer-product-meta.pagelayer-meta-block .product_meta > span:not(:last-child)' => 'margin-bottom: {{val}}px',
				],
			),
			'meta_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .product_meta span' => 'color: {{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} .product_meta span' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['.woocommerce {{element}} .product_meta a' => 'color: {{val}}'],
			),
			'linl_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} .product_meta a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			
		),
	)
);

// Product short description
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_short_desc', array(
		'name' => __pl('product_short_desc'),
		'group' => 'woocommerce',
		'html' => '<div class=" product pagelayer-product-short-desc">{{product_short_desc}}</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['.woocommerce {{element}} .pagelayer-product-short-desc' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
			),
			'meta_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .pagelayer-product-short-desc *' => 'color: {{val}}'],
			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['.woocommerce {{element}} .pagelayer-product-short-desc' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),			
		),
	)
);

// Products style
$products_style = array(
	'column_gap' => array(
		'type' => 'slider',
		'label' => __pl('column_gap'),
		'units' => ['px', '%'],
		'screen' => 1,
		'default' => 20,
		'step' => 0.2,
		'max' => 100,
		'css' => ['{{element}} ul.products li.product' => 'margin-right: {{val}}'],
	),
	'row_gap' => array(
		'type' => 'slider',
		'label' => __pl('row_gap'),
		'units' => ['px', '%'],
		'screen' => 1,
		'default' => 20,
		'step' => 0.2,
		'max' => 100,
		'css' => ['{{element}} ul.products li.product' => 'margin-bottom: {{val}}'],
	),
	'align' => array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right'),
		),
		'addAttr' => ['{{element}} .pagelayer-product-related-container' => 'pagelayer-content-align="{{align}}"'],
		'css' => ['{{element}} ul.products li.product' => 'text-align:{{val}}'],
	),
	'img_lable' => array(
		'type' => 'heading',
		'label' => __pl('image'),
	),
	'img_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => ['{{element}} .attachment-woocommerce_thumbnail' => 'border-style: {{val}}',
		],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
	),
	'img_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} .attachment-woocommerce_thumbnail' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'
		],
		'req' => [
			'!img_border_type' => ''
		],
	),
	'img_border_color_hover' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} .attachment-woocommerce_thumbnail' => 'border-color: {{val}}'],
		'show' => ['img_border_type' => ''],
	),
	'img_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} .attachment-woocommerce_thumbnail' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
	),
	'img_spacing' => array(
		'type' => 'slider',
		'label' => __pl('spacing'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} .attachment-woocommerce_thumbnail' => 'margin-bottom: {{val}}'],
	),
	'title_lable' => array(
		'type' => 'heading',
		'label' => __pl('title'),
	),
	'title_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => [
			'{{element}} ul.products li.product .woocommerce-loop-product__title' => 'color: {{val}}', 
			'{{element}} ul.products li.product .woocommerce-loop-category__title' => 'color: {{val}}' 
		],
	),
	'title_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => [
			'{{element}}  ul.products li.product .woocommerce-loop-product__title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
			'{{element}}  ul.products li.product .woocommerce-loop-category__title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
		],
	),
	'title_spacing' => array(
		'type' => 'slider',
		'label' => __pl('spacing'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => [
			'{{element}} ul.products li.product .woocommerce-loop-product__title' => 'margin-bottom: {{val}}', 
			'{{element}} ul.products li.product .woocommerce-loop-category__title' => 'margin-bottom: {{val}}' 
		],
	),
	'rating_lable' => array(
		'type' => 'heading',
		'label' => __pl('stars_rating'),
	),
	'star_color' => array(
		'type' => 'color',
		'label' => __pl('star_color'),
		'css' => ['{{element}} ul.products li.product .star-rating' => 'color: {{val}}'],
	),
	'empty_star_color' => array(
		'type' => 'color',
		'label' => __pl('empty_star_color'),
		'css' => ['{{element}} ul.products li.product .star-rating::before' => 'color: {{val}}'],
	),
	'star_size' => array(
		'type' => 'slider',
		'label' => __pl('star_size'),
		'max' => 5,
		'step' => 0.1,
		'css' => ['{{element}} ul.products li.product .star-rating' => 'font-size: {{val}}em'],
	),
	'star_spacing' => array(
		'type' => 'slider',
		'label' => __pl('spacing'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product .star-rating' => 'margin-bottom: {{val}}'],
	),
	'price_lable' => array(
		'type' => 'heading',
		'label' => __pl('price_style'),
	),
	'price_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => [
			'{{element}} ul.products li.product .price' => 'color: {{val}}',
			'{{element}} ul.products li.product .price ins' => 'color: {{val}}',
			'{{element}} ul.products li.product .price ins .amount' => 'color: {{val}}',
		],
	),
	'price_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} ul.products li.product .price' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
	),
	'reg_price_lable' => array(
		'type' => 'heading',
		'label' => __pl('regular_price'),
	),
	'reg_price_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => [
			'{{element}} ul.products li.product .price del .amount' => 'color:{{val}}',
			'{{element}} ul.products li.product .price del' => 'color:{{val}}'
		]
	),
	'reg_price_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => [
			'{{element}} ul.products li.product .price del .amount' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
			'{{element}} ul.products li.product .price del' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
		],
	),
	'button_lable' => array(
		'type' => 'heading',
		'label' => __pl('button'),
	),
	'button_colors'=> array(
		'type' => 'radio',
		'label' => '',
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		),
	),
	'btn_color'=> array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} ul.products li.product .button' => 'color:{{val}}'],
		'show' => [ 'button_colors' => '' ],
	),
	'btn_bg_color'=> array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} ul.products li.product .button' => 'background-color:{{val}}'],
		'show' => [ 'button_colors' => '' ],
	),
	'btn_border_color'=> array(
		'type' => 'color',
		'label' => __pl('border_color'),
		'css' => ['{{element}} ul.products li.product .button' => 'border-color:{{val}}'],
		'show' => [ 'button_colors' => '' ],
	),
	'btn_hover_color'=> array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} ul.products li.product .button:hover' => 'color:{{val}}'],
		'show' => [ 'button_colors' => 'hover' ],
	),
	'btn_bg_hover_color'=> array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} ul.products li.product .button:hover' => 'background-color:{{val}}'],
		'show' => [ 'button_colors' => 'hover' ],
	),
	'btn_border_hover_color'=> array(
		'type' => 'color',
		'label' => __pl('border_color'),
		'css' => ['{{element}} ul.products li.product .button:hover' => 'border-color:{{val}}'],
		'show' => [ 'button_colors' => 'hover' ],
	),
	'btnb_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} ul.products li.product .button' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
	),
	'btn_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => ['{{element}} ul.products li.product .button' => 'border-style: {{val}}',
		],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
	),
	'btn_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product .button' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px',
		],
		'req' => [
			'!btn_border_type' => ''
		],
	),
	'btn_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product .button' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
	),
	'btn_text_padding' => array(
		'type' => 'padding',
		'label' => __pl('padding'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product .button' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
	),
	'btn_spacing' => array(
		'type' => 'slider',
		'label' => __pl('spacing'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product .button' => 'margin-top:{{val}}'],
	),			
	'view_cart_lable' => array(
		'type' => 'heading',
		'label' => __pl('view_cart'),
	),
	'view_cart_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} .added_to_cart' => 'color: {{val}}'],
	),
	'view_cart_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} .added_to_cart' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
	),
);

// Products heading style
$products_heading = array(
	'heading_show'=> array(
		'type' => 'checkbox',
		'label' => __pl('heading_style'),
		'default' => 'true',
		'addAttr' => ['{{element}} .pagelayer-product-related-container' => 'pagelayer-heading-show="{{heading_show}}"'],
	),
	'heading_color'=> array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} .products > h2' => 'color: {{val}}'],
		'req' => ['heading_show' => 'true'],
	),
	'heading_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} .products > h2' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
		'req' => ['heading_show' => 'true'],
	),
	'heading_align'=> array(
		'type' => 'radio',
		'label' => __pl('alignment'),
		'list' => array(
			'left' => __pl('left'),
			'center' => __pl('center'),
			'right' => __pl('right'),
		),
		'css' => ['{{element}} .products > h2' => 'text-align: {{val}}'],
		'req' => ['heading_show' => 'true'],
	),
	'heading_spacing' => array(
		'type' => 'slider',
		'label' => __pl('spacing'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} .products > h2' => 'margin-bottom: {{val}}'],
		'req' => ['heading_show' => 'true'],
	),	
);

// Products box style
$products_box = array(
	'box_border_type' => array(
		'type' => 'select',
		'label' => __pl('border_type'),
		'css' => ['{{element}} ul.products li.product' => 'border-style: {{val}}',
		],
		'list' => [
			'' => __pl('none'),
			'solid' => __pl('solid'),
			'double' => __pl('double'),
			'dotted' => __pl('dotted'),
			'dashed' => __pl('dashed'),
			'groove' => __pl('groove'),
		],
	),
	'box_border_width' => array(
		'type' => 'padding',
		'label' => __pl('border_width'),
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px',
		],
		'req' => [
			'!box_border_type' => ''
		],
	),
	'box_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
	),
	'box_padding' => array(
		'type' => 'padding',
		'label' => __pl('padding'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} ul.products li.product' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
	),
	'box_colors' => array(
		'type' => 'radio',
		'label' => '',
		'list' => array(
			'' => __pl('normal'),
			'hover' => __pl('hover'),
		),
	),
	'box_bg_color' => array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} ul.products li.product' => 'background-color: {{val}}'],
		'show' => ['box_colors' => ''],
	),
	'box_border_color' => array(
		'type' => 'color',
		'label' => __pl('border_color'),
		'css' => ['{{element}} ul.products li.product' => 'border-color: {{val}}'],
		'show' => ['box_colors' => ''],
	),
	'box_shadow' => [
		'type' => 'box_shadow',
		'label' => __pl('shadow'),
		'css' => ['{{element}} ul.products li.product' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
		'show' => ['box_colors' => ''],
	],
	'box_bg_hover_color' => array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} ul.products li.product:hover' => 'background-color: {{val}}'],
		'show' => ['box_colors' => 'hover'],
	),
	'box_border_hover_color' => array(
		'type' => 'color',
		'label' => __pl('border_color'),
		'css' => ['{{element}} ul.products li.product:hover' => 'border-color: {{val}}'],
		'show' => ['box_colors' => 'hover'],
	),
	'box_hover_shadow' => [
		'type' => 'box_shadow',
		'label' => __pl('shadow'),
		'css' => ['{{element}} ul.products li.product:hover' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
		'show' => ['box_colors' => 'hover'],
	],
);

// Products sale flash style
$products_sale_flash = array(
	'sale_flash' => array(
		'type' => 'checkbox',
		'label' => __pl('sale_flash'),
		'default' => 'true', 
		'addAttr' => ['{{element}} .pagelayer-product-related-container' => 'pagelayer-sale-flash="{{sale_flash}}"'],
	),
	'flash_color' => array(
		'type' => 'color',
		'label' => __pl('color'),
		'css' => ['{{element}} ul.products li.product span.onsale' => 'color: {{val}}'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_bg_color' => array(
		'type' => 'color',
		'label' => __pl('bg_color'),
		'css' => ['{{element}} ul.products li.product span.onsale' => 'background-color: {{val}}'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_typo' => array(
		'type' => 'typography',
		'label' => __pl('typography'),
		'css' => ['{{element}} ul.products li.product span.onsale' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_border_radius' => array(
		'type' => 'padding',
		'label' => __pl('border_radius'),
		'units' => [ 'px', '%' ],
		'screen' => 1,
		'css' => ['{{element}} .ul.products li.product span.onsale' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
		],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_width' => array(
		'type' => 'slider',
		'label' => __pl('width'),
		'units' => [ 'px', '%' ],
		'css' => ['{{element}} ul.products li.product span.onsale' => 'min-width: {{val}};'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_height' => array(
		'type' => 'slider',
		'label' => __pl('height'),
		'units' => [ 'px', '%' ],
		'css' => ['{{element}} ul.products li.product span.onsale' => 'min-height: {{val}}; line-height: {{val}};'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_distance' => array(
		'type' => 'slider',
		'label' => __pl('distance'),
		'units' => [ 'px', '%' ],
		'max' => 20,
		'css' => ['{{element}} ul.products li.product span.onsale' => 'margin: {{val}};'],
		'req' => [ 'sale_flash' => 'true'],
	),
	'flash_position' => array(
		'type' => 'radio',
		'label' => __pl('position'),
		'list' => array(
			'left' => __pl('left'),
			'right' => __pl('right'),
		),
		'css' => ['{{element}} ul.products li.product span.onsale' => 'left:auto; right:auto; {{val}} : 0;'],
		'req' => [ 'sale_flash' => 'true'],
	),
);

// Product related
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_related', array(
		'name' => __pl('related_upsell_products'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-product-related-container">
			{{related_products}}
		</div>',
		'params' => array(
			'select_product' => array(
				'type' => 'select',
				'label' => __pl('product_type'),
				'default' => 'related',
				'list' => array(
					'related' => __pl('related'),
					'upsell' => __pl('upsell'),
				),
			),
			'posts_per_page' => array(
				'type' => 'spinner',
				'label' => __pl('products_per_page'),
				'default' => 4,
				'max' => 20,
				'req' => ['select_product' => 'related'],
			),
			'columns' => array(
				'type' => 'spinner',
				'label' => __pl('columns'),
				'screen' => 1,
				'default' => 4,
				'min' => 1,
				'max' => 6,
			),		
			'order_by' => array(
				'type' => 'select',
				'label' => __pl('order_by'),
				'default' => 'date',
				'list' => array(
					'date' => __pl('date'),
					'title' => __pl('title'),
					'price' => __pl('price'),
					'popularity' => __pl('popularity'),
					'rating' => __pl('rating'),
					'rand' => __pl('random'),
					'menu_order' => __pl('menu_order'),
				),
			),
			'order' => array(
				'type' => 'select',
				'label' => __pl('order'),
				'default' => 'asc',
				'list' => array(
					'asc' => __pl('asc'),
					'desc' => __pl('desc'),
				),
			),
		),
		'products_style' => $products_style,
		'heading_style' => $products_heading,
		'box_style' => $products_box,
		'sale_flash_style' => $products_sale_flash,
		'styles' =>[
			'products_style' => __pl('products_style'),
			'heading_style' => __pl('heading_styles'),
			'box_style' => __pl('box_style'),
			'sale_flash_style' => __pl('sale_flash_style'),
		],
	)
);

// woocommerce breadcrumb
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_woo_breadcrumb', array(
		'name' => __pl('woo_breadcrumb'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-woo-breadcrumb-container">'. pagelayer_woo_breadcrumb() .'</div>',
		'params' => array(
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-breadcrumb' => 'color:{{val}}'],
 			),
			'link_color' => array(
				'type' => 'color',
				'label' => __pl('link_color'),
				'css' => ['{{element}} .woocommerce-breadcrumb > a' => 'color:{{val}}'],
 			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .woocommerce-breadcrumb' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'css' => ['{{element}} .woocommerce-breadcrumb' => 'text-align:{{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
 			),
		),
	)
);

// Product pages
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_woo_pages', array(
		'name' => __pl('woo_pages'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-product-pages-container">{{page_content}}</div>',
		'params' => array(
			'pages' => array(
				'type' => 'select',
				'label' => __pl('pages'),
				'css' => ['{{element}} .woocommerce-breadcrumb' => 'color:{{val}}'],
				'list' => array(
					'' => __pl( 'Select' ),
					'woocommerce_cart' => __pl('cart_page'),
					//'product_page' => __pl('single_product_page'),
					'woocommerce_checkout' => __pl('checkout_page'),
					'woocommerce_order_tracking' => __pl('order_tracking_form'),
					'woocommerce_my_account' => __pl('my_account'),
				),
 			),
		),
	)
);

// Product pages
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_categories', array(
		'name' => __pl('product_categories'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-product-categories-container">{{product_categories}}</div>',
		'params' => array(
			'columns' => array(
				'type' => 'spinner',
				'label' => __pl('columns'),
				'screen' => 1,
				'default' => 4,
				'max' => 12,
			),
			'number' => array(
				'type' => 'spinner',
				'label' => __pl('limit'),
				'default' => 4,
			),
			'source' => array(
				'type' => 'select',
				'label' => __pl('source'),
				'list' => array(
					'' => __pl('show_all'),
					'by_id' => __pl('manual_selection'),
					'by_parent' => __pl('by_parent'),
					'current_subcategories' => __pl('current_subcategories'),
				),
			),
			'by_id' => array(
				'type' => 'multiselect',
				'label' => __pl('categories'),
				'list' => pagelayer_get_product_cat(),
				'req' => ['source' => 'by_id'],
			),
			'parent' => array(
				'type' => 'select',
				'label' => __pl('parent'),
				'list' => [ '0' => __pl('only_top_level') ] + pagelayer_get_product_cat(),
				'req' => ['source' => 'by_parent'],
			),
			'hide_empty' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_empty'),
			),
			'orderby' => array(
				'type' => 'select',
				'label' => __pl('order_by'),
				'default' => 'name',
				'list' => array(
					'name' => __pl('name'),
					'slug' => __pl('slug'),
					'description' => __pl('description'),
					'count' => __pl('count'),
				),
			),
			'order' => array(
				'type' => 'select',
				'label' => __pl('order'),
				'default' => 'desc',
				'list' => array(
					'asc' => __pl('asc'),
					'desc' => __pl('desc'),
				),
			),
		),
		'products_style' => array(
			'column_gap' => array(
				'type' => 'slider',
				'label' => __pl('column_gap'),
				'units' => ['px', '%'],
				'screen' => 1,
				'default' => 20,
				'step' => 0.2,
				'max' => 100,
				'css' => ['{{element}} ul.products li.product' => 'margin-right: {{val}}'],
			),
			'row_gap' => array(
				'type' => 'slider',
				'label' => __pl('row_gap'),
				'units' => ['px', '%'],
				'screen' => 1,
				'default' => 20,
				'step' => 0.2,
				'max' => 100,
				'css' => ['{{element}} ul.products li.product' => 'margin-bottom: {{val}}'],
			),
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} ul.products li.product' => 'text-align:{{val}}'],
			),
			'img_lable' => array(
				'type' => 'heading',
				'label' => __pl('image'),
			),
			'img_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} a > img' => 'border-style: {{val}}',
				],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'img_border_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} a > img' => 'border-color: {{val}}'],
				'show' => ['!img_border_type' => ''],
			),
			'img_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} a > img' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'
				],
				'req' => [
					'!img_border_type' => ''
				],
			),
			'img_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => [ 'px', '%' ],
				'screen' => 1,
				'css' => ['{{element}} a > img' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};',
				],
			),
			'img_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'units' => [ 'px', '%' ],
				'screen' => 1,
				'css' => ['{{element}} a > img' => 'margin-bottom: {{val}}'],
			),
			'title_lable' => array(
				'type' => 'heading',
				'label' => __pl('title'),
			),
			'title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-loop-category__title' => 'color: {{val}}'],
			),
			'title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-loop-category__title' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'title_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'units' => [ 'px', '%' ],
				'screen' => 1,
				'css' => [
					'{{element}} .woocommerce-loop-category__title' => 'margin-bottom: {{val}}' 
				],
			),
			'count_lable' => array(
				'type' => 'heading',
				'label' => __pl('count'),
			),
			'count_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-loop-category__title .count' => 'color: {{val}}'],
			),
			'count_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-loop-category__title .count' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
		'styles' =>[
			'products_style' => __pl('products_style'),
		],
	)
);

// Archives Product
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_archives', array(
		'name' => __pl('product_archives'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-product-archives-container">{{product_archives}}</div>',
		'params' => array(
			'allow_order' => array(
				'type' => 'checkbox',
				'label' => __pl('allow_order'),
				'default' => 'true',
 			),
			'show_result' => array(
				'type' => 'checkbox',
				'label' => __pl('show_result_counter'),
				'default' => 'true',
 			),
			'no_found' => array(
				'type' => 'textarea',
				'label' => __pl('no_found_msg'),
				'default' => __pl('Products not found.'),
 			),
		),
		'products_style' => $products_style,
		'box_style' => $products_box,
		'sale_flash_style' => $products_sale_flash,
		'pagination_style' => array(
			'pagination_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'css' => ['{{element}} nav.woocommerce-pagination' => 'margin-top:{{val}}px'],
 			),
			'pagination_border' => array(
				'type' => 'checkbox',
				'label' => __pl('border'),
				//'css' => ['{{element}} nav.woocommerce-pagination' => 'margin-top:{{val}}px'],
 			),
			'pagination_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => [
					'{{element}}nav.woocommerce-pagination ul' => 'border-color:{{val}}',
					'{{element}} nav.woocommerce-pagination ul li' => 'border-right-color: {{val}}; border-left-color: {{val}}',
				],
 			),
			'pagination_padding' => array(
				'type' => 'slider',
				'label' => __pl('padding'),
				'screen' => 1,
				'units' => [ 'em' ],
				'min' => 0,
				'max' => 4,
				'step' => 0.1,
				'css' => [
					'{{element}} nav.woocommerce-pagination ul li a' => 'padding: {{val}}',
					'{{element}} nav.woocommerce-pagination ul li span' => 'padding: {{val}}'
				],
 			),
			'pagination_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} nav.woocommerce-pagination' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'pagination_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
					'active' => __pl('active'),
				),
 			),
			'pagination_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a' => 'color:{{val}}'],
				'show' => ['pagination_colors' => 'normal'],
 			),
			'pagination_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'normal'],
 			),
			'pagination_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a:hover' => 'color:{{val}}'],
				'show' => ['pagination_colors' => 'hover'],
 			),
			'pagination_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a:hover' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'hover'],
 			),
			'pagination_color_active' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => [ '{{element}} nav.woocommerce-pagination ul li span.current' => 'color:{{val}};' ],
				'show' => ['pagination_colors' => 'active'],
 			),
			'pagination_bg_color_active' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li span.current' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'active'],
 			),
			
		),
		'no_found_style' => array(
			'nf_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-product-no-found' => 'color:{{val}}'],
 			),
			'nf_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-product-no-found' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
		'styles' =>[
			'products_style' => __pl('products_style'),
			'box_style' => __pl('box_style'),
			'pagination_style' => __pl('pagination_style'),
			'sale_flash_style' => __pl('sale_flash_style'),
			'no_found_style' => __pl('no_found_style'),
		],
	)
);

// Products
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_products', array(
		'name' => __pl('products'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-products-container">{{products_content}}</div>',
		'params' => array(
			'columns' => array(
				'type' => 'spinner',
				'label' => __pl('columns'),
				'screen' => 1,
				'default' => 4,
				'max' => 12,
			),
			'rows' => array(
				'type' => 'spinner',
				'label' => __pl('rows'),
				'default' => 4,
			),
			'paginate' => array(
				'type' => 'checkbox',
				'label' => __pl('pagination'),
			),
			'allow_order' => array(
				'type' => 'checkbox',
				'label' => __pl('allow_order'),
				'req' => ['paginate' => 'true'], 
 			),
			'show_result' => array(
				'type' => 'checkbox',
				'label' => __pl('show_result_counter'),
				'req' => ['paginate' => 'true'],
 			),
			'no_found' => array(
				'type' => 'textarea',
				'label' => __pl('no_found_msg'),
				'default' => __pl('Products not found.'),
 			),
		),
		'query' => array(
			'source' => array(
				'type' => 'select',
				'label' => __pl('source'),
				'default' => 'recent_products',
				'list' => array(
					'pagelayer_current_query' => __pl('currunt_query'),
					'recent_products' => __pl('recent_products'),
					'sale_products' => __pl('sale_products'),
					'best_selling_products' => __pl('best_selling_products'),
					'top_rated_products' => __pl('top_rated_products'),
					'featured_products' => __pl('featured_product'),
					'by_id' => __pl('manual_selection'),
				),
			),
			'ids' => array(
				'type' => 'multiselect',
				'label' => __pl('products'),
				'list' => pagelayer_post_list_by_type('product'),
				'req' => ['source' => 'by_id'],
			),
			'orderby' => array(
				'type' => 'select',
				'label' => __pl('order_by'),
				'default' => 'date',
				'list' => array(
					'date' => __pl('date'),
					'title' => __pl('title'),
					'price' => __pl('price'),
					'popularity' => __pl('popularity'),
					'rating' => __pl('rating'),
					'rand' => __pl('rand'),
					'menu_order' => __pl('menu_order'),
				),
			),
			'order' => array(
				'type' => 'select',
				'label' => __pl('order'),
				'default' => 'ASC',
				'list' => array(
					'ASC' => __pl('ASC'),
					'DESC' => __pl('DESC'),
				),
			),
		),
		'products_style' => $products_style,
		'box_style' => $products_box,
		'sale_flash_style' => $products_sale_flash,
		'pagination_style' => array(
			'pagination_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'css' => ['{{element}} nav.woocommerce-pagination' => 'margin-top:{{val}}px'],
 			),
			'pagination_border' => array(
				'type' => 'checkbox',
				'label' => __pl('border'),
				//'css' => ['{{element}} nav.woocommerce-pagination' => 'margin-top:{{val}}px'],
 			),
			'pagination_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => [
					'{{element}}nav.woocommerce-pagination ul' => 'border-color:{{val}}',
					'{{element}} nav.woocommerce-pagination ul li' => 'border-right-color: {{val}}; border-left-color: {{val}}',
				],
 			),
			'pagination_padding' => array(
				'type' => 'slider',
				'label' => __pl('padding'),
				'screen' => 1,
				'units' => [ 'em' ],
				'min' => 0,
				'max' => 4,
				'step' => 0.1,
				'css' => [
					'{{element}} nav.woocommerce-pagination ul li a' => 'padding: {{val}}',
					'{{element}} nav.woocommerce-pagination ul li span' => 'padding: {{val}}'
				],
 			),
			'pagination_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} nav.woocommerce-pagination' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'pagination_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
					'active' => __pl('active'),
				),
 			),
			'pagination_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a' => 'color:{{val}}'],
				'show' => ['pagination_colors' => 'normal'],
 			),
			'pagination_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'normal'],
 			),
			'pagination_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a:hover' => 'color:{{val}}'],
				'show' => ['pagination_colors' => 'hover'],
 			),
			'pagination_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li a:hover' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'hover'],
 			),
			'pagination_color_active' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => [ '{{element}} nav.woocommerce-pagination ul li span.current' => 'color:{{val}};' ],
				'show' => ['pagination_colors' => 'active'],
 			),
			'pagination_bg_color_active' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} nav.woocommerce-pagination ul li span.current' => 'background-color:{{val}}'],
				'show' => ['pagination_colors' => 'active'],
 			),
			
		),
		'no_found_style' => array(
			'nf_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-product-no-found' => 'color:{{val}}'],
 			),
			'nf_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-product-no-found' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
		'styles' =>[
			'query' => __pl('query'),
			'products_style' => __pl('products_style'),
			'box_style' => __pl('box_style'),
			'pagination_style' => __pl('pagination_style'),
			'sale_flash_style' => __pl('sale_flash_style'),
			'no_found_style' => __pl('no_found_style'),
		],
	)
);

// Product Archives description
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_archives_desc', array(
		'name' => __pl('product_archives_desc'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-archives-desc-container">'. pagelayer_get_product_archives_desc() .'</div>',
		'params' => array(
			'align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-archives-desc-container' => 'text-align:{{val}}'],
 			),
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-product-details__short-description' => 'color:{{val}}'],
 			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-product-details__short-description' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
	)
);

// Product Additional Information
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_addi_info', array(
		'name' => __pl('product_addi_info'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-addi-info-container product">{{product_additional_info}}</div>',
		'params' => array(
			'color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .shop_attributes' => 'color:{{val}}'],
 			),
			'typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'.woocommerce {{element}} .shop_attributes' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'heading' => array(
				'type' => 'checkbox',
				'label' => __pl('heading_style'),
				'default' => 'true',
				'addAttr' => ['{{element}} .pagelayer-addi-info-container' => 'pagelayer-show-heading="{{heading}}"'],
 			),
			'heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-addi-info-container h2' => 'color:{{val}}'],
				'req' => ['heading' => 'true'],
 			),
			'heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-addi-info-container h2' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
				'req' => ['heading' => 'true'],
			),
		),
	)
);

// Product Additional Information
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_product_data_tabs', array(
		'name' => __pl('product_data_tabs'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-data-tabs-container product">{{product_data_tab}}</div>',
		'params' => array(
			'tabs_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'list' => array(
					'normal' => __pl('normal'),
					'active' => __pl('active'),
				),
 			),
			'tabs_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li:not(.active) a' => 'color:{{val}} !important;'],
				'show' => ['tabs_colors' => 'normal'],
 			),
			'tabs_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li:not(.active)' => 'background-color:{{val}} !important;'],
				'show' => ['tabs_colors' => 'normal'],
 			),
			'tabs_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li:not(.active)' => 'border-color:{{val}}',
					'.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-color:{{val}}'
				],
				'show' => ['tabs_colors' => 'normal'],
			),
			'tabs_color_active' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li.active a' => 'color:{{val}} !important;'],
				'show' => ['tabs_colors' => 'active'],
 			),
			'tabs_bg_color_active' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li.active' => 'background-color:{{val}} !important;'],
				'show' => ['tabs_colors' => 'active'],
 			),
			'tabs_border_color_active' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-color: {{val}}',	
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li.active' => 'border-color: {{val}} !important;'
				],
				'show' => ['tabs_colors' => 'active'],
			),
			'tabs_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li' => 'border-style: {{val}} !important',
				],
				'list' => [
					'' => __pl('default'),
					'none' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['tabs_colors' => 'normal'],
			),
			'tabs_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li' => 'border-width: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px !important;',
				],
				'req' => [
					'!tabs_border_type' => ['', 'none'],
				],
			),
			'tabs_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'border_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs li' => 'border-radius: {{val}}px !important;'],
			),
		),
		'panel_style' => array(
			'panel_color' => array(
				'type' => 'color',
				'label' => __pl('desc_color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'color: {{val}}'],
 			),
			'panel_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'panel_heading' => array(
				'type' => 'heading',
				'label' => __pl('heading_style'),
			),
			'panel_heading_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel h2' => 'color: {{val}}'],
 			),
			'panel_heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel h2' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'panel_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('default'),
					'none' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'panel_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-color: {{val}} !important;'],
				'req' => array(
					'!panel_border_type' => ['none'],
				),
			),
			'panel_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-width: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px !important; margin-top: -{{val[0]}}px !important;'],
				'req' => [
					'!panel_border_type' => ['none'],
				],
			),
			'panel_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'css' => [
					'.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;',
					'.woocommerce {{element}} .woocommerce-tabs ul.wc-tabs' => 'margin-left: {{val[0]}}px; margin-right: {{val[1]}};'
				],
			),
			'panel_shadow' => array(
				'type' => 'box_shadow',
				'label' => __pl('box_shadow'),
				'css' => ['.woocommerce {{element}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}};'],
			),
		),
		'styles' => array(
			'panel_style' => __pl('panel_style'),
		),
	)
);

// WooCommerce Menu cart
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_woo_menu_cart', array(
		'name' => __pl('woo_menu_cart'),
		'group' => 'woocommerce',
		'html' => '<div class="pagelayer-woo-menu-cart-container">{{cart_html}}</div>',
		'params' => array(
			'icon_type' => array(
				'type' => 'select',
				'label' => __pl('icon'),
				'default' => 'fa fa-shopping-cart',
				'list' => array(
					'fa fa-shopping-cart' => __pl('cart'),
					'fa fa-shopping-basket' => __pl('basket'),
					'fa fa-shopping-bag' => __pl('bag'),
				),
 			),
			'items_indicator' => array(
				'type' => 'select',
				'label' => __pl('items_indicator'),
				'default' => 'bubble',
				'list' => array(
					'' => __pl('none'),
					'bubble' => __pl('bubble'),
					'plain' => __pl('plain'),
				),
				'addAttr' => [ '{{element}} .pagelayer-menu-cart-toggle' => 'pagelayer-icon="{{items_indicator}}"'],
 			),
			'empty_indicator' => array(
				'type' => 'checkbox',
				'label' => __pl('empty_indicator'),
				'addAttr' => ['{{element}} .pagelayer-menu-cart-toggle' => 'pagelayer-empty-indicator="{{empty_indicator}}"'],
 			),
			'sub_total' => array(
				'type' => 'checkbox',
				'label' => __pl('hide_sub_total'),
				'css' => ['{{element}} .pagelayer-cart-button-text' => 'display:none;']
 			),
			'cart_align' => array(
				'type' => 'radio',
				'label' => __pl('alignment'),
				'default' => 'left',
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right'),
				),
				'css' => [
					'{{element}} .pagelayer-menu-cart-toggle' => 'text-align:{{val}}'
				],
 			),			
		),
		'mini_cart_style' => array(
			'mini_cart_colors' => array(
				'type' => 'radio',
				'label' => '',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
 			),
			'mini_cart_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-cart-button' => 'color:{{val}}'],
				'show' => ['mini_cart_colors' => 'normal'],
 			),
			'cart_icon_color' => array(
				'type' => 'color',
				'label' => __pl('cart_icon_color'),
				'css' => ['{{element}} .pagelayer-cart-button-icon' => 'color:{{val}}'],
				'show' => ['mini_cart_colors' => 'normal'],
 			),
			'mini_cart_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-cart-button' => 'background-color:{{val}}'],
				'show' => ['mini_cart_colors' => 'normal'],
 			),
			'mini_cart_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-cart-button' => 'border-color:{{val}}'],
				'show' => ['mini_cart_colors' => 'normal'],
 			),
			'mini_cart_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-cart-button:hover' => 'color:{{val}}'],
				'show' => ['mini_cart_colors' => 'hover'],
 			),
			'cart_icon_color_hover' => array(
				'type' => 'color',
				'label' => __pl('cart_icon_color'),
				'css' => ['{{element}} .pagelayer-cart-button-icon:hover' => 'color:{{val}}'],
				'show' => ['mini_cart_colors' => 'hover'],
 			),
			'cart_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-cart-button:hover' => 'background-color:{{val}}'],
				'show' => ['mini_cart_colors' => 'hover'],
 			),
			'cart_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-cart-button:hover' => 'border-color:{{val}}'],
				'show' => ['mini_cart_colors' => 'hover'],
 			),
			'cart_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-cart-button' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'cart_border_width' => array(
				'type' => 'slider',
				'label' => __pl('border_width'),
				'css' => ['{{element}} .pagelayer-cart-button' => 'border-width:{{val}}px'],
				'req' => ['!cart_border_type' => ''],
 			),
			'cart_border_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'units' => [ 'px', 'em', '%' ],
				'css' => ['{{element}} .pagelayer-cart-button' => 'border-radius:{{val}}'],
 			),
			'cart_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .pagelayer-cart-button' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'mini_cart_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => [ 'px', 'em', '%' ],
				'css' => ['{{element}} .pagelayer-cart-button' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
			'mini_cart_icon' => array(
				'type' => 'heading',
				'label' => __pl('icon'),
			),
			'mini_icon_size' => array(
				'type' => 'slider',
				'label' => __pl('size'),
				'units' => [ 'px', 'em' ],
				'css' => ['{{element}} .pagelayer-cart-button-icon' => 'font-size:{{val}}'],
			),
			'mini_icon_spacing' => array(
				'type' => 'slider',
				'label' => __pl('spacing'),
				'units' => [ 'px', 'em' ],
				'min' => 0,
				'max' => 50,
				'css' => [
					'body:not(.rtl) {{element}} .pagelayer-cart-button-text' => 'margin-right: {{val}}',
					'body.rtl {{element}} .pagelayer-cart-button-text' => 'margin-left: {{val}}',
				],
			),
			'mini_bubble_icon' => array(
				'type' => 'heading',
				'label' => __pl('bubble'),
				'req' => ['items_indicator' => 'bubble'],
			),
			'bubble_colors' => array(
				'type' => 'radio',
				'label' => '',
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['items_indicator' => 'bubble'],
			),
			'bubble_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} [pagelayer-icon="bubble"]  .pagelayer-cart-button-icon[data-counter]:before' => 'color:{{val}}'],
				'show' => ['bubble_colors' => 'normal'],
			),
			'bubble_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} [pagelayer-icon="bubble"] .pagelayer-cart-button-icon[data-counter]:before' => 'background-color:{{val}}'],
				'show' => ['bubble_colors' => 'normal'],
			),
			'bubble_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} [pagelayer-icon="bubble"] .pagelayer-cart-button-icon[data-counter]:hover:before' => 'color:{{val}}'],
				'show' => ['bubble_colors' => 'hover'],
			),
			'bubble_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} [pagelayer-icon="bubble"] .pagelayer-cart-button-icon[data-counter]:hover:before' => 'background-color:{{val}}'],
				'show' => ['bubble_colors' => 'hover'],
			),
		),
		'container_style' => array(
			'container_position' => array(
				'type' => 'select',
				'label' => __pl('container_position'),
				'default' => 'fixed_right',
				'list' => array(
					'fixed_right' => __pl('fixed_right'),
					'fixed_left' => __pl('fixed_left'),
					'dropdown' => __pl('dropdown'),
				),
				'addAttr' => [ '{{element}} .pagelayer-woo-menu-cart-container' => 'pagelayer-container-position="{{container_position}}"'],
 			),
			'container_align' => array(
				'type' => 'radio',
				'label' => __pl('position'),
				'default' => 'left',
				'list' => array(
					'left' => __pl('left'),
					'right' => __pl('right'),
				),
				'css' => ['{{element}} .pagelayer-menu-cart-container' => '{{val}}:0 !important;'],
				'req' => ['container_position' => 'dropdown'],
 			),
			'cart_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-menu-cart-container' => 'color:{{val}}']
			),
			'cart_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-menu-cart-container' => 'background-color:{{val}}']
			),
			'container_close' => array(
				'type' => 'slider',
				'label' => __pl('container_close_size'),
				'css' => ['{{element}} .pagelayer-menu-cart-close' => 'font-size:{{val}}px;']
 			),
			'container_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'screen' => 1,
				'units' => ['px', '%'],
				'css' => ['{{element}} .pagelayer-menu-cart-container' => 'width:{{val}};']
 			),
			'sub_total_label' => array(
				'type' => 'heading',
				'label' => __pl('sub_total'),
			),
			'sub_total_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-mini-cart__total' => 'color: {{val}}'],
 			),
			'sub_total_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-mini-cart__total' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
		),
		'products_style' => array(
			'products_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-mini-cart > .woocommerce-mini-cart-item' => 'color:{{val}}']
			),
			'products_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .woocommerce-mini-cart > .woocommerce-mini-cart-item' => 'background-color:{{val}}']
			),
			'products_list_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => [ 'px', 'em'],
				'css' => ['{{element}} .woocommerce-mini-cart > .woocommerce-mini-cart-item' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;'],
			),
			'img_label' => array(
				'type' => 'heading',
				'label' => __pl('image'),
			),
			'products_img_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => '50px',
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .woocommerce-mini-cart-item img' => 'width: {{val}}'],
 			),
			'title_label' => array(
				'type' => 'heading',
				'label' => __pl('product_title'),
			),
			'products_title_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-mini-cart-item a' => 'color: {{val}}'],
 			),
			'products_title_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-mini-cart-item a' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'price_label' => array(
				'type' => 'heading',
				'label' => __pl('product_price'),
			),
			'products_price_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .woocommerce-mini-cart-item .quantity' => 'color: {{val}}'],
 			),
			'products_price_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-mini-cart-item .quantity' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'remove_label' => array(
				'type' => 'heading',
				'label' => __pl('remove_items'),
			),
			'remove_icon_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .remove_from_cart_button' => 'color: {{val}} !important'],
 			),
			'remove_icon_size' => array(
				'type' => 'slider',
				'label' => __pl('size'),
				'css' => ['{{element}} .remove_from_cart_button' => 'font-size: {{val}}px'],
			),
		),
		'buttons_style' => array(
			'button_display' => array(
				'type' => 'select',
				'label' => __pl('display'),
				'default' => 'inline',
				'list' => array(
					'inline' => __pl('inline'),
					'block' => __pl('block'),
				),
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'display: {{val}}'],
				'addAttr' => ['{{element}} .woocommerce-mini-cart__buttons' => 'pagelayer-display="{{button_display}}"'],
 			),
			'space_between_btn' => array(
				'type' => 'slider',
				'label' => __pl('space_between'),
				'default' => 5,
				'css' => [
					'{{element}} .woocommerce-mini-cart__buttons[pagelayer-display="inline"] a' => 'margin-left: {{val}}px',
					'{{element}} .woocommerce-mini-cart__buttons[pagelayer-display="block"] a' => 'margin-bottom: {{val}}px'
				],
 			),
			'btn_padding' => array(
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => [ 'px', 'em'],
				'default' => '5,5,5,5',
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}} !important;'],
			),
			'btn_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => [
					'{{element}} .woocommerce-mini-cart__buttons' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'
				],
			),
			'btn_border_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'units' => [ 'px', 'em'],
				'default' => '50',
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'border-radius: {{val}} !important'],
 			),
			'btn_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '#ffffff',
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'color: {{val}}'],
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#585757',
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'background-color: {{val}}'],
			),
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'border-style: {{val}} !important'],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'default' => '#42414f',
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'border-color: {{val}} !important'],
				'req' => array(
					'!btn_border_type' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .woocommerce-mini-cart__buttons a' => 'border-width: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px !important'],
				'req' => [
					'!btn_border_type' => ''
				],
			),
		),
		'styles' => array(
			'mini_cart_style' => __pl('mini_cart_style'),
			'container_style' => __pl('container_style'),
			'products_style' => __pl('products_style'),
			'buttons_style' => __pl('buttons_style'),
		),
	)
);

}// class_exists('woocommerce') end

// Popup Settings
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_popup', array(
		'name' => __pl('Popup Layout'),
		'group' => 'other',
		'not_visible' => 1,
		'no_gt' => 1,
		'icon' => 'fas fa-sort-amount-up-alt',
		'overide_css_selector' => '[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content',
		'hide_active' => 1,
		'skip_props_cat' => ['position_styles', 'animation_styles', 'responsive_styles'],
		'skip_props' => ['ele_zindex',
						'ele_shadow', 'border_shadow_hover',
						'hide_desktop',	'hide_tablet', 'hide_mobile', 'ele_sticky_pos'],
		'params' => array(
			'post_popup_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'default' => '50',
				'screen' => 1,
				'units' => ['%', 'px'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'width:{{val}}'],
			),
			'post_popup_height' => array(
				'type' => 'slider',
				'label' => __pl('height'),
				'screen' => 1,
				'units' => ['%', 'px', 'vh'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'height:{{val}}'],
			),
			'popup_position' => array(
				'type' => 'heading',
				'label' => __pl('position'),
			),
			'popup_hori_position' => array(
				'type' => 'radio',
				'label' => __pl('horizontal'),
				'list' => array(
					'flex-start' => __pl('left'),
					'center' => __pl('center'),
					'flex-end' => __pl('right'),
				),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'justify-content:{{val}}'],
			),
			'popup_ver_position' => array(
				'type' => 'radio',
				'label' => __pl('vertical'),
				'list' => array(
					'flex-start' => __pl('top'),
					'center' => __pl('center'),
					'flex-end' => __pl('bottom'),
				),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'align-items:{{val}}'],
			),
			'popup_animation' => array(
				'type' => 'select',
				'label' => __pl('animation'),
				'default' => '',
				'addClass' => ['{{val}}',( !pagelayer_is_live() ? 'pagelayer-wow' : '' )],
				'addAttr' =>  'data-popup_animation="{{popup_animation}}',
				'list' => $pagelayer->anim_in_options,
			),
			'popup_animation_delay' => [
				'type' => 'spinner',
				'label' => __pl('animation_delay'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => '-webkit-animation-delay: {{val}}ms; animation-delay: {{val}}ms;'],
				'default' => 600,
				'min' => 0,
				'max' => 90000,
				'step' => 100,
				'req' => [
					'!popup_animation' => ''
				]
			],
		),
		'popup_styles' => array(
			'popup_content_back' => array(
				'type' => 'radio',
				'label' => __pl('bg_color'),
				'list' => array(
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
				),
			),
			'popup_content_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'background-color:{{val}}'],
				'req' => [ 'popup_content_back' => 'color'],
			),
			'popup_content_bg_gradient' => [
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6ff,23,#72e584ff,45,#2ca4ebff,100',
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
				'req' => ['popup_content_back' => 'gradient'],
			],		
			'popup_border_type' => [
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'border-style: {{val}}'],
			],
			'popup_border_width' => [
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '1,1,1,1',
				'units' => ['px', 'em'],
				'screen' => 1,
				'req' => [
					'!popup_border_type' => ''
				],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			],
			'popup_border_color' => [
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#CCC',
				'screen' => 1,
				'req' => [
					'!popup_border_type' => ''
				],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'border-color: {{val}}'],
			],
			'popup_border_radius' => [
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			],
			'popup_shadow' => [
				'type' => 'box_shadow',
				'label' => __pl('shadow'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-modal-content' => 'box-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[4]}}px {{val[3]}} {{val[5]}} !important;'],
			]
		),
		'overlay' => array(
			'popup_overlay' => array(
				'type' => 'checkbox',
				'label' => __pl('enable_overlay'),
				'default' => true,
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'pointer-events: all'],
			),
			'popup_overlay_back' => array(
				'type' => 'radio',
				'label' => __pl('bg_color'),
				'default' => 'bg_color',
				'list' => array(
					'bg_color' => __pl('color'),
					'gradient' => __pl('gradient'),
				),
				'req' => [ 'popup_overlay' => 'true'],
			),
			'popup_overlay_bg' => array(
				'type' => 'color',
				'default' => '#000000cc',
				'label' => __pl('bg_color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'background-color:{{val}}'],
				'req' => [ 'popup_overlay_back' => 'bg_color', 'popup_overlay' => 'true'],
			),
			'popup_overlay_bg_gradient' => [
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6ff,23,#72e584ff,45,#2ca4ebff,100',
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
				'req' => ['popup_overlay_back' => 'gradient', 'popup_overlay' => 'true'],
			],
		),
		'close_button' => array(
			'popup_overlay_close' => array(
				'type' => 'checkbox',
				'label' => __pl('close_by_overlay'),
				'addAttr' => 'data-overlay_close="{{popup_overlay_close}}"',
				'css' => ['[pagelayer-popup-id="{{ele_id}}"]' => 'pointer-events: all'],
			),
			'popup_sel_close' => array(
				'type' => 'checkbox',
				'label' => __pl('close_by_selector'),
			),
			'popup_selector_close' => array(
				'type' => 'text',
				'label' => __pl('ele_selector'),
				'addAttr' => 'data-selector_close="{{popup_selector_close}}"',
				'req' => [ 'popup_sel_close' => 'true'],
			),
			'popup_cbtn' => array(
				'type' => 'checkbox',
				'label' => __pl('close_button'),
				'default' => true,
				'addAttr' => 'data-popup_cbtn="{{popup_cbtn}}"',
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'display:block'],
			),
			'popup_cbtn_position' => array(
				'type' => 'select',
				'label' => __pl('position'),
				'default' => 'inside',
				'list' => array(
					'inside' => __pl('inside'),
					'outside' => __pl('outside'),
				),
				'show' => [ 'popup_cbtn' => 'true'],
				'addAttr' => 'data-popup_cbtn_position="{{popup_cbtn_position}}"',
			),
			'popup_cbtn_v_position' => array(
				'type' => 'slider',
				'label' => __pl('verticle_postion'),
				'screen' => 1,
				'units' => ['%', 'px'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'top:{{val}}'],
				'show' => [ 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_h_position' => array(
				'type' => 'slider',
				'label' => __pl('horizontal_pos'),
				'screen' => 1,
				'units' => ['%', 'px'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'left:{{val}}'],
				'show' => [ 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_size' => array(
				'type' => 'slider',
				'label' => __pl('size'),
				'screen' => 1,
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'font-size:{{val}}px'],
				'show' => [ 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_colors' => array(
				'type' => 'radio',
				'label' => __pl('colors'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'show' => [ 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'color:{{val}}'],
				'show' => [ 'popup_cbtn_colors' => 'normal', 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'background-color:{{val}}'],
				'show' => [ 'popup_cbtn_colors' => 'normal', 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close:hover' => 'color:{{val}}'],
				'show' => [ 'popup_cbtn_colors' => 'hover', 'popup_cbtn' => 'true'],
			),
			'popup_cbtn_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close:hover' => 'background-color:{{val}}'],
				'show' => [ 'popup_cbtn_colors' => 'hover', 'popup_cbtn' => 'true'],
			),	
			'popup_cbtn_border_type' => [
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => [ 'popup_cbtn' => 'true'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'border-style: {{val}}'],
			],
			'popup_cbtn_border_width' => [
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '1,1,1,1',
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => [ 'popup_cbtn' => 'true'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			],
			'popup_cbtn_border_color' => [
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#CCC',
				'screen' => 1,
				'show' => [ 'popup_cbtn' => 'true'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'border-color: {{val}}'],
			],
			'popup_cbtn_border_radius' => [
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'show' => [ 'popup_cbtn' => 'true'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			],
			'popup_cbtn_border_padding' => [
				'type' => 'padding',
				'label' => __pl('padding'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'show' => [ 'popup_cbtn' => 'true'],
				'css' => ['[pagelayer-popup-id="{{ele_id}}"] .pagelayer-popup-close' => 'padding: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			],
		),
		'action_triggers' => array(
			'trig_click' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_onclick'),
				'addAttr' => 'data-trig_click="{{trig_click}}"',
			),
			'trig_click_ele' => array(
				'type' => 'text',
				'label' => __pl('ele_selector'),
				'addAttr' => 'data-trig_click_ele="{{trig_click_ele}}"',
				'req' => [ 'trig_click' => 'true'],
			),
			'trig_load' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_onload'),
				'addAttr' => 'data-trig_load="{{trig_load}}"',
			),
			'trig_load_sec' => array(
				'type' => 'spinner',
				'label' => __pl('within_sec'),
				'min' => 1,
				'step' => 0.1,
				'req' => [ 'trig_load' => 'true'],
				'addAttr' => 'data-trig_load_sec="{{trig_load_sec}}"',
			),
			'trig_scroll' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_onscroll'),
				'addAttr' => 'data-trig_scroll="{{trig_scroll}}"',
			),
			'trig_scroll_dir' => array(
				'type' => 'select',
				'label' => __pl('scroll_direction'),
				'default' => 'down',
				'list' => array(
					'down' => __pl('down'),
					'up' => __pl('up'),
				),
				'addAttr' => 'data-trig_scroll_dir="{{trig_scroll_dir}}"',
				'req' => [ 'trig_scroll' => 'true'],
			),
			'trig_scroll_per' => array(
				'type' => 'spinner',
				'label' => __pl('within_per'),
				'min' => 1,
				'step' => 1,
				'max' => 100,
				'req' => ['trig_scroll' => 'true', 'trig_scroll_dir' => 'down'],
				'addAttr' => 'data-trig_scroll_per="{{trig_scroll_per}}"',
			),
			'trig_scroll_to_ele' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_onscroll_to_ele'),
				'addAttr' => 'data-trig_scroll_to_ele="{{trig_scroll_to_ele}}"',
			),
			'trig_scroll_to_ele_sel' => array(
				'type' => 'text',
				'label' => __pl('ele_selector'),
				'req' => [ 'trig_scroll_to_ele' => 'true'],
				'addAttr' => 'data-trig_scroll_to_ele_sel="{{trig_scroll_to_ele_sel}}"',
			),
			'trig_page_exit_intent' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_onpage_exit_intent'),
				'addAttr' => 'data-trig_page_exit_intent="{{trig_page_exit_intent}}"',
			),
			'trig_before_load' => array(
				'type' => 'checkbox',
				'label' => __pl('trig_beforeLoad'),
				'addAttr' => 'data-trig_before_load="{{trig_before_load}}"',
				'desc' => __pl('popup_load_desc')
			),
		),
		'advance_options' =>  array(
			'popup_multi_time' => array(
				'type' => 'checkbox',
				'label' => __pl('popup_multi_time'),
				'addAttr' => 'data-popup_multi_time="{{popup_multi_time}}"',
			),
			'popup_cookie_session' => array(
				'type' => 'checkbox',
				'label' => __pl('popup_cookie_session'),
				'addAttr' => 'data-popup_cookie_session="{{popup_cookie_session}}"',
			),
			'popup_cookie_close' => array(
				'type' => 'checkbox',
				'label' => __pl('popup_cookie_close'),
				'addAttr' => 'data-popup_cookie_close="1"',
				'req' => ['popup_cookie_session' => 'true']
			),
			'popup_cookie_selector' => array(
				'type' => 'text',
				'label' => __pl('popup_cookie_selector'),
				'desc' => __pl('popup_cookie_selector_exp'),
				'addAttr' => 'data-popup_cookie_selector="{{popup_cookie_selector}}"',
				'req' => ['popup_cookie_session' => 'true']
			),
			'popup_cookie_name' => array(
				'type' => 'text',
				'label' => __pl('popup_cookie_name'),
				'default' => '', // Make it blank to assigned from live.php
				'addAttr' => 'data-popup_cookie_name="{{popup_cookie_name}}"',
				'req' => ['popup_cookie_session' => 'true']
			),
			'popup_cookie_exp' => array(
				'type' => 'text',
				'label' => __pl('popup_cookie_exp'),
				'default' => 30,
				'addAttr' => 'data-popup_cookie_exp="{{popup_cookie_exp}}"',
				'req' => ['popup_cookie_session' => 'true']
			),
			'popup_auto_close' => array(
				'type' => 'spinner',
				'label' => __pl('auto_close'),
				'addAttr' => 'data-popup_auto_close="{{popup_auto_close}}"',
			),
		),
		'styles' => array(
			'popup_styles' => __pl('popup_styles'),
			'overlay' => __pl('overlay'),
			'close_button' => __pl('close_style'),
			'action_triggers' => __pl('action_triggers'),
			'advance_options' => __pl('advance_options'),
		),
	)
);

// Timeline widget
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_timeline', array(
	'name' => __pl('timeline'),
	'group' => 'other',
	'icon' => 'fas fa-stream',
	'has_group' => [
		'section' => 'params', 
		'prop' => 'elements'
	],
	'holder' => '.pagelayer-timeline',
	'innerHTML' => 'text',
	'html' => '<div class="pagelayer-timeline">
				</div>',
	'params' => array(	
		'elements' => array(
			'type' => 'group',
			'label' => __pl('timeline_item'),
			'sc' => PAGELAYER_SC_PREFIX.'_timeline_item',
			'item_label' => array(
				'default' => __pl('timeline_item'),
				'param' => 'text'
			),
			'count' => 2,
			'text' => __pl('add_timeline_item'),
		),
		
		'timeline_centerline_bg_color' => array(
			'type' => 'color',
			'label' => __pl('seperator_color'),
			'default' => 'grey',
			'css' => ['{{element}} .pagelayer-timeline::after' => 'background-color: {{val}};'],
		),
		'vindent' => array(
			'type' => 'spinner',
			'label' => __pl('space_between_col'),
			'min' => 10,
			'step' => 1,
			'max' => 100,
			'default' => 20,
			'screen' => 1,
			'css' => ['{{element}} .pagelayer-timeline-container' => 'padding-top:{{val}}px; padding-bottom:{{val}}px;'],
		)
	),
));

// Timeline items
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_timeline_item', array(
		'name' => __pl('timeline_item'),
		'icon' => 'fas fa-stream',
		'not_visible' => 1,
		'parent' => [PAGELAYER_SC_PREFIX.'_timeline'],
		'html' => '<div class="pagelayer-timeline-container pagelayer-timeline-{{side}}">
						<div  class="pagelayer-timeline-container-left">
							<div class="pagelayer-timeline-content">
								<div if={{left_heading_text}} class="pagelayer-heading-holder">{{left_heading_text}}</div>
								<div if={{left_paragraph_text}} class="pagelayer-text-holder">{{left_paragraph_text}}</div>
							</div>
						</div>
						<div class="pagelayer-timeline-center-circle-container">
							<div class="pagelayer-timeline-center-circle">
								<i if="{{timeline_circle_icon}}" class="{{timeline_circle_icon}} pagelayer-timeline-circle-icon"></i>
								<div if="{{timeline_circle_text}}" class="pagelayer-text-holder pagelayer-timeline-circle-text">{{timeline_circle_text}}</div>
							</div>
						</div>
						<div  class="pagelayer-timeline-container-right">
							<div class="pagelayer-timeline-content">
								<div if={{right_heading_text}} class="pagelayer-heading-holder">{{right_heading_text}}</div>
								<div if={{right_paragraph_text}} class="pagelayer-text-holder">{{right_paragraph_text}}</div>
							</div>
						</div>
				  </div>',
		'params' => array(
			'text' => array(
				'type' => 'text',
				'label' => __pl('text'),
				'default' => __pl('timeline_item')
			),
			'side' => array(
				'label' => __pl('side'),
				'type' => 'radio',
				'default' => 'both',
				'list' => array(
					'left' => __pl('left'),
					'right' => __pl('right'),
					'both' => __pl('both')
				)
			),
			'hindent' => array(
				'type' => 'spinner',
				'label' => __pl('icon_spacing'),
				'screen' => 1,
				'step' => 1,
				'min' => 0,
				'max' => 40,
				'default' => 5,
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'margin-right:{{val}}px;',
				'{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'margin-left:{{val}}px;'],
			)
		),
		
		'timeline_circle' => [
			'timeline_pos_y' => array(
				'label' => __pl('verticle_postion'),
				'type' => 'slider',
				'step' => 1,
				'min' => 0,
				'max' => 80,
				'default' => 20,
				'screen' => 1,
				'units' => ['%'],
				'css' => ['{{element}} .pagelayer-timeline-center-circle' => 'top: {{val}};'],
			),
			'timeline_circle_radius' => array(
				'type' => 'slider',
				'label' => __pl('radius'),
				'screen' => 1,
				'step' => 1,
				'min' => 20,
				'max' => 70,
				'default' => 40,
				'units' => ['px'],
				'css' => ['{{element}} .pagelayer-timeline-center-circle'  => 'width:{{val}}; height:{{val}}; left:calc(50% - {{val}}/2);'],
			),
			'timeline_circle_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-timeline-center-circle' => 'background-color: {{val}};'],
			),
			'timeline_circle_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'default' => 'solid',
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'css' => ['{{element}} .pagelayer-timeline-center-circle'=> 'border-style: {{val}}'],
			),
			'timeline_circle_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '4,4,4,4',
				'units' => ['px', 'em'],
				'screen' => 1,
				'req' => [
					'!timeline_circle_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-center-circle' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			),
			'timeline_circle_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#000',
				'screen' => 1,
				'req' => [
					'!timeline_circle_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-center-circle' => 'border-color: {{val}}'],
			),
			'timeline_circle_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', 'em', '%'],
				'screen' => 1,
				'show' => ['timeline_circle_border_hover' => ''],
				'req' => [
					'!timeline_circle_border_type' => ''
				],
				'default' => '50,50,50,50',
				'css' =>['{{element}} .pagelayer-timeline-center-circle' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
			'timeline_circle_icon' => array(
				'type' => 'icon',
				'label' => __pl('service_box_font_icon_label'),
				'default' => '',
			),
			'timeline_circle_icon_size' => array(
				'label' => __pl('icon_size'),
				'type' => 'slider',
				'step' => 1,
				'min' => 5,
				'max' => 40,
				'default' => 10,
				'screen' => 1,
				'units' => ['px'],
				'css' => ['{{element}} .pagelayer-timeline-center-circle .pagelayer-timeline-circle-icon' => 'font-size:{{val}}'],
				'show' => ['!timeline_circle_icon' => ''],
			),
			'timeline_circle_icon_color' => array(
				'type' => 'color',
				'label' => __pl('icon_color'),
				'show' => ['!timeline_circle_icon' => ''],
				'css' => ['{{element}} .pagelayer-timeline-center-circle .pagelayer-timeline-circle-icon' => 'color: {{val}};'],
			),
			'timeline_circle_text' => array(
				'type' => 'editor',
				'label' => __pl('text'),
				'default' => '',
				'desc' => __pl('Edit the content here or edit directly in the Editor'),
				'edit' => '.pagelayer-timeline-circle-text', // Edit the text and also mirror the same
				'keep_prop' => 1
			)
		],
		
		// timeline left part code starts
		'left' => [
			'left_heading_text' => array(
				'type' => 'textarea',
				'label' => __pl('heading_name'),
				'default' => '<h2>1998</h2>',
				'desc' => __pl('Edit the heading here'),
				'edit' => '.pagelayer-timeline-container-left .pagelayer-timeline-content .pagelayer-heading-holder', // Edit the text and also mirror the same
				'req' => ['side' => ['both','left']],
			),
			'left_paragraph_text' => array(
				'type' => 'editor',
				'label' => __pl('text'),
				'default' => 'Lorem ipsum dolor sit amet',
				'desc' => __pl('Edit the content here or edit directly in the Editor'),
				'edit' => '.pagelayer-timeline-container-left .pagelayer-timeline-content .pagelayer-text-holder', // Edit the text and also mirror the same
				'req' => ['side' => ['both','left']]
			),
			'left_align' => array(
				'label' => __pl('content_align'),
				'type' => 'radio',
				'addAttr' => 'align="{{align}}"',
				'screen' => 1,
				'default' => 'left',
				'css' => ['{{element}} .pagelayer-timeline-container-left' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => ['side' => ['both','left']]
			),
			'left_part_width' => array(
				'type' => 'spinner',
				'label' => __pl('width'),
				'screen' => 1,
				'step' => 1,
				'min' => 0,
				'max' => 100,
				'default' => 90,
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'width:{{val}}%'],
			),
			'left_heading_state' => array(
				'type' => 'radio',
				'label' => __pl('state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['side' => ['both','light']]
			),
			'left_color' => array(
				'type' => 'color',
				'label' => __pl('heading_color'),
				'default' => '#111111',
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder *' => 'color:{{val}}'],
				'show' => ['left_heading_state' => 'normal']
			),
			'left_heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['left_heading_state' => 'normal']
			),
			'left_heading_text_shadow' => array(
				'type' => 'shadow',
				'label' => __pl('text_shadow'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
				'show' => ['left_heading_state' => 'normal']
			),
			'left_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder:hover *' => 'color:{{val}}', '{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder:hover' => 'color:{{val}}'],
				'show' => ['left_heading_state' => 'hover']
			),
			'left_heading_typo_hover' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder:hover *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder:hover' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['left_heading_state' => 'hover']
			),
			'left_heading_text_shadow_hover' => array(
				'type' => 'shadow',
				'label' => __pl('text_shadow'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-heading-holder:hover' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
				'show' => ['left_heading_state' => 'hover']
			),
			'left_bg_hover' => array(
				'type' => 'radio',
				'label' => __pl('row_bg_styles'),
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
				'req' => ['side' => ['both','left']]
			),
			'left_bg_type' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => [
					'' => __pl('none'),
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				],
				'show' => ['left_bg_hover' => '']
			),
			'left_bg_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}}  .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-color: {{val}};'],
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'color']
			),
			'left_timeline_gradient' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',			
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],			
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'gradient']
			),
			'left_img_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '',
				'desc' => __pl('fallback_color'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-color: {{val}};'],
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_img' => array(
				'type' => 'image',
				'label' => __pl('image'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-image: url("{{{left_bg_img-url}}}");'],
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_attachment' => array(
				'type' => 'select',
				'label' => __pl('bg_attachment'),
				'list' => [
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				],
				'show' => ['left_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-attachment: {{val}};'],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_posx' => array(
				'type' => 'select',
				'label' => __pl('bg_posx'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right'),
					'custom' => __pl('custom')
				],
				'show' => ['left_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-position-x: {{val}};'],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_posx_custom' => array(
				'label' => __pl('custom_x'),
				'type' => 'slider',
				'step' => 1,
				'min' => -5000,
				'max' => 5000,
				'screen' => 1,
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-position-x: {{val}};'],
				'req' => array(
					'left_bg_posx' => 'custom'
				),
			),	
			'left_bg_posy' => array(
				'type' => 'select',
				'label' => __pl('bg_posy'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom'),
					'custom' => __pl('custom')
				],
				'show' => ['left_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-position-y: {{val}};'],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_posy_custom' => array(
				'label' => __pl('custom_y'),
				'type' => 'slider',
				'step' => 1,
				'min' => -5000,
				'max' => 5000,
				'screen' => 1,
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-position-y: {{val}};'],
				'req' => array(
					'left_bg_posy' => 'custom'
				),
			),
			'left_bg_repeat' => array(
				'type' => 'select',
				'label' => __pl('bg_repeat'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-repeat: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				],
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_size' => array(
				'type' => 'select',
				'label' => __pl('bg_size'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'background-size: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				],
				'show' => ['left_bg_hover' => ''],
				'req' => ['left_bg_type' => 'image']
			),
			'left_bg_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('bg_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => ['left_bg_hover' => 'hover']
			),
			'left_bg_type_hover' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => [
					'' => __pl('none'),
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				],
				'show' => ['left_bg_hover' => 'hover']
			),
			'left_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color_hover'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background: {{val}};'],
				'show' => ['left_bg_hover' => 'hover'],
				'req' => ['left_bg_type_hover' => 'color']
			),
			'left_bg_gradient_hover' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,25,#72e584,75,#2ca4eb,100',
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
				'show' => ['left_bg_hover' => 'hover'],
				'req' => ['left_bg_type_hover' => 'gradient']
			),
			'left_bg_img_hover' => array(
				'type' => 'image',
				'label' => __pl('image_hover'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background: url("{{{left_bg_img_hover-url}}}");'],
				'show' => ['left_bg_hover' => 'hover'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_bg_attachment_hover' => array(
				'type' => 'select',
				'label' => __pl('background_attachment'),
				'list' => [
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				],
				'show' => ['left_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background-attachment: {{val}};'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_bg_posx_hover' => array(
				'type' => 'select',
				'label' => __pl('horizontal_pos'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right')
				],
				'show' => ['left_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background-position-x: {{val}};'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_bg_posy_hover' => array(
				'type' => 'select',
				'label' => __pl('verticle_pos'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom')
				],
				'show' => ['left_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background-position-y: {{val}};'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_bg_repeat_hover' => array(
				'type' => 'select',
				'label' => __pl('repeat'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background-repeat: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				],
				'show' => ['left_bg_hover' => 'hover'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_bg_size_hover' => array(
				'type' => 'select',
				'label' => __pl('size'),
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'background-size: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				],
				'show' => ['left_bg_hover' => 'hover'],
				'req' => ['left_bg_type_hover' => 'image']
			),
			'left_timeline_border_hover' => array(
				'type' => 'radio',
				'label' => '',
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
				'req' => ['side' => ['both','left']]
			),
			'left_timeline_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'default' => 'solid',
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['left_timeline_border_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content '=> 'border-style: {{val}}'],
			),
			'left_timeline_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '1,1,1,1',
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => [
					'left_timeline_border_hover' => ''
				],
				'req' => [
					'!left_timeline_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'border-top-width: {{val[0]}}; 
				border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			),
			'left_timeline_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#CCC',
				'screen' => 1,
				'show' => [
					'left_timeline_border_hover' => ''
				],
				'req' => [
					'!left_timeline_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'border-color: {{val}}'],
			),
			'left_timeline_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => ['left_timeline_border_hover' => ''],
				'req' => [
					'!left_timeline_border_type' => ''
				],
				'default' => '6,6,6,6',
				'css' =>['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
			'left_timeline_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['left_timeline_border_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'border-style: {{val}}'],
			),
			'left_timeline_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => [	
					'left_timeline_border_hover' => 'hover'
				],
				'req' => [
					'!left_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			),
			'left_timeline_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'screen' => 1,
				'show' => [
					'left_timeline_border_hover' => 'hover'
				],
				'req' => [
					'!left_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'border-color: {{val}}'],
			),
			'left_timeline_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'units' => ['px', 'em'],
				'show' => [	
					'left_timeline_border_hover' => 'hover'
				],
				'req' => [
					'!left_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-left .pagelayer-timeline-content:hover' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
		],
		
		// timeline right part code starts
		'right' => [
			'right_heading_text' => array(
				'type' => 'textarea',
				'label' => __pl('heading_name'),
				'default' => '<h2>1998</h2>',
				'desc' => __pl('Edit the heading here'),
				'edit' => '.pagelayer-timeline-container-right .pagelayer-timeline-content .pagelayer-heading-holder', // Edit the text and also mirror the same
				'req' => ['side' => ['both','right']]
			),		
			'right_paragraph_text' => array(
				'type' => 'editor',
				'label' => __pl('text'),
				'default' => 'Lorem ipsum dolor sit amet',
				'desc' => __pl('Edit the content here or edit directly in the Editor'),
				'edit' => '.pagelayer-timeline-container-right .pagelayer-timeline-content .pagelayer-text-holder', // Edit the text and also mirror the same
				'req' => ['side' => ['both','right']]
			),		
			'right_align' => array(
				'label' => __pl('content_align'),
				'type' => 'radio',
				'addAttr' => 'align="{{align}}"',
				'screen' => 1,
				'default' => 'left',
				'css' => ['{{element}} .pagelayer-timeline-container-right' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				),
				'req' => ['side' => ['both','right']]
			),	
			'right_part_width' => array(
				'type' => 'spinner',
				'label' => __pl('width'),
				'default' => '400',
				'screen' => 1,
				'step' => 1,
				'min' => 0,
				'max' => 100,
				'default' => 90,
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'width:{{val}}%'],
			),
			'right_heading_state' => array(
				'type' => 'radio',
				'label' =>  __pl('state'),
				'default' => 'normal',
				'list' => array(
					'normal' => __pl('normal'),
					'hover' => __pl('hover'),
				),
				'req' => ['side' => ['both','right']]
			),
			
			'right_color' => array(
				'type' => 'color',
				'label' => __pl('heading_color'),
				'default' => '#111111',
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder *' => 'color:{{val}}'],
				'show' => ['right_heading_state' => 'normal']
			),
			
			'right_heading_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['right_heading_state' => 'normal']
			),
			
			'right_heading_text_shadow' => array(
				'type' => 'shadow',
				'label' => __pl('text_shadow'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
				'show' => ['right_heading_state' => 'normal']
			),
			
			'right_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder:hover *' => 'color:{{val}}', '{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder:hover' => 'color:{{val}}'],
				'show' => ['right_heading_state' => 'hover']
			),
			'right_heading_typo_hover' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder:hover *' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;',
				'{{element}} .pagelayer-timeline-container-right .pagelayer-heading-holder:hover' => 'font-family: {{val[0]}} !important; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'show' => ['right_heading_state' => 'hover']
			),
			'right_heading_text_shadow_hover' => array(
				'type' => 'shadow',
				'label' => __pl('text_shadow'),
				'css' => ['{{element}} .pagelayer-timeline-container-right  .pagelayer-heading-holder:hover' => 'text-shadow: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}} !important;'],
				'show' => ['right_heading_state' => 'hover']
			),
			
			'right_bg_hover' => array(
				'type' => 'radio',
				'label' => __pl('row_bg_styles'),
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
				'show' => ['side' => ['both','right']]
			),
			'right_bg_type' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => [
					'' => __pl('none'),
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				],
				'show' => ['right_bg_hover' => '']
			),
			
			'right_bg_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}}  .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-color: {{val}};'],
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'color']
			),
			'right_bg_gradient' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,23,#72e584,45,#2ca4eb,100',			
				'css' => ['{{element}}  .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],			
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'gradient']
			),
			'right_img_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'default' => '',
				'desc' => __pl('fallback_color'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-color: {{val}};'],
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_img' => array(
				'type' => 'image',
				'label' => __pl('image'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-image: url("{{{right_bg_img-url}}}");'],
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_attachment' => array(
				'type' => 'select',
				'label' => __pl('bg_attachment'),
				'list' => [
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				],
				'show' => ['right_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-attachment: {{val}};'],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_posx' => array(
				'type' => 'select',
				'label' => __pl('bg_posx'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right'),
					'custom' => __pl('custom')
				],
				'show' => ['right_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-position-x: {{val}};'],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_posx_custom' => array(
				'label' => __pl('custom_x'),
				'type' => 'slider',
				'step' => 1,
				'min' => -5000,
				'max' => 5000,
				'screen' => 1,
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-position-x: {{val}};'],
				'req' => array(
					'right_bg_posx' => 'custom'
				),
			),	
			'right_bg_posy' => array(
				'type' => 'select',
				'label' => __pl('bg_posy'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom'),
					'custom' => __pl('custom')
				],
				'show' => ['right_bg_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-position-y: {{val}};'],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_posy_custom' => array(
				'label' => __pl('custom_y'),
				'type' => 'slider',
				'step' => 1,
				'min' => -5000,
				'max' => 5000,
				'screen' => 1,
				'units' => ['px', 'em', '%'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-position-y: {{val}};'],
				'req' => array(
					'right_bg_posy' => 'custom'
				),
			),
			'right_bg_repeat' => array(
				'type' => 'select',
				'label' => __pl('bg_repeat'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-repeat: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				],
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_size' => array(
				'type' => 'select',
				'label' => __pl('bg_size'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'background-size: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				],
				'show' => ['right_bg_hover' => ''],
				'req' => ['right_bg_type' => 'image']
			),
			'right_bg_hover_delay' => array(
				'type' => 'spinner',
				'label' => __pl('ele_bg_hover_delay'),
				'min' => 0,
				'step' => 100,
				'max' => 5000,
				'default' => 400,
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => '-webkit-transition: all {{val}}ms !important; transition: all {{val}}ms !important;'],
				'show' => ['right_bg_hover' => 'hover']
			),
			'right_bg_type_hover' => array(
				'type' => 'radio',
				'label' => __pl('background_type'),
				'default' => '',
				'list' => [
					'' => __pl('none'),
					'color' => __pl('color'),
					'gradient' => __pl('gradient'),
					'image' => __pl('image'),
				],
				'show' => ['right_bg_hover' => 'hover']
			),
			'right_bg_color_hover' => array(
				'type' => 'color',
				'label' => __pl('color_hover'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background: {{val}};'],
				'show' => ['right_bg_hover' => 'hover'],
				'req' => ['right_bg_type_hover' => 'color']
			),
			'right_bg_gradient_hover' => array(
				'type' => 'gradient',
				'label' => '',
				'default' => '150,#44d3f6,25,#72e584,75,#2ca4eb,100',
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background: linear-gradient({{val[0]}}deg, {{val[1]}} {{val[2]}}%, {{val[3]}} {{val[4]}}%, {{val[5]}} {{val[6]}}%);'],
				'show' => ['right_bg_hover' => 'hover'],
				'req' => ['right_bg_type_hover' => 'gradient']
			),
			'bg_img_hover' => array(
				'type' => 'image',
				'label' => __pl('image_hover'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background: url("{{{bg_img_hover-url}}}");'],
				'show' => ['right_bg_hover' => 'hover'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			'right_bg_attachment_hover' => array(
				'type' => 'select',
				'label' => __pl('background_attachment'),
				'list' => [
					'' => __pl('default'),
					'scroll' => __pl('scroll'),
					'fixed' => __pl('fixed')
				],
				'show' => ['right_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background-attachment: {{val}};'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			'right_bg_posx_hover' => array(
				'type' => 'select',
				'label' => __pl('horizontal_pos'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'left' => __pl('left'),
					'right' => __pl('right')
				],
				'show' => ['right_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background-position-x: {{val}};'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			'right_bg_posy_hover' => array(
				'type' => 'select',
				'label' => __pl('verticle_pos'),
				'list' => [
					'' => __pl('default'),
					'center' => __pl('center'),
					'top' => __pl('top'),
					'bottom' => __pl('bottom')
				],
				'show' => ['right_bg_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background-position-y: {{val}};'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			'right_bg_repeat_hover' => array(
				'type' => 'select',
				'label' => __pl('repeat'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background-repeat: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'repeat' => __pl('repeat'),
					'no-repeat' => __pl('no-repeat'),
					'repeat-x' => __pl('repeat-x'),
					'repeat-y' => __pl('repeat-y'),
				],
				'show' => ['right_bg_hover' => 'hover'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			'right_bg_size_hover' => array(
				'type' => 'select',
				'label' => __pl('size'),
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'background-size: {{val}};'],
				'list' => [
					'' => __pl('default'),
					'cover' => __pl('cover'),
					'contain' => __pl('contain')
				],
				'show' => ['right_bg_hover' => 'hover'],
				'req' => ['right_bg_type_hover' => 'image']
			),
			
			
			
			'right_timeline_border_hover' => array(
				'type' => 'radio',
				'label' => '',
				'default' => '',
				'list' => [
					'' => __pl('normal'),
					'hover' => __pl('hover'),
				],
				'req' => ['side' => ['both','right']]
			),
			'right_timeline_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'default' => 'solid',
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['right_timeline_border_hover' => ''],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content '=> 'border-style: {{val}}'],
			),
			
			'right_timeline_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'default' => '1,1,1,1',
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => [
					'right_timeline_border_hover' => ''
				],
				'req' => [
					'!right_timeline_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			),
			'right_timeline_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'default' => '#CCC',
				'screen' => 1,
				'show' => [
					'right_timeline_border_hover' => ''
				],
				'req' => [
					'!right_timeline_border_type' => ''
				],
				'css' =>['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'border-color: {{val}}'],
			),
			'right_timeline_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => ['right_timeline_border_hover' => ''],
				'req' => [
					'!right_timeline_border_type' => ''
				],
				'default' => '6,6,6,6',
				'css' =>['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
			'right_timeline_border_type_hover' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'screen' => 1,
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'show' => ['right_timeline_border_hover' => 'hover'],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'border-style: {{val}}'],
			),
			'right_timeline_border_width_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'units' => ['px', 'em'],
				'screen' => 1,
				'show' => [
					'right_timeline_border_hover' => 'hover'
				],
				'req' => [
					'!right_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'border-top-width: {{val[0]}}; border-right-width: {{val[1]}}; border-bottom-width: {{val[2]}}; border-left-width: {{val[3]}}'],
			),
			'right_timeline_border_color_hover' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'screen' => 1,
				'show' => [
					'right_timeline_border_hover' => 'hover'
				],
				'req' => [
					'!right_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'border-color: {{val}}'],
			),
			'right_timeline_border_radius_hover' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'units' => ['px', 'em'],
				'show' => ['right_timeline_border_hover' => 'hover'],
				'req' => [
					'!right_timeline_border_type_hover' => ''
				],
				'css' => ['{{element}} .pagelayer-timeline-container-right .pagelayer-timeline-content:hover' => 'border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}}; -webkit-border-radius:  {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};-moz-border-radius: {{val[0]}} {{val[1]}} {{val[2]}} {{val[3]}};'],
			),
		],
		
		'styles' => [
			'timeline_circle' => __pl('timeline_center_circle'),
			'left' => __pl('left'),
			'right' => __pl('right'),	
		]
	)
);

// Before After Slider
pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_before_after', array(
		'name' => __pl('before_after_image'),
		'group' => 'other',
		'html' => '<div class="pagelayer-before-after-container" data-resize-event="{{resize_event}}">
			<div class="pagelayer-before-after-slider">
				<div class="pagelayer-before-image">
					<img src="{{{before_image-url}}}"/>
				</div>
				<div class="pagelayer-after-image">
					<img src="{{{after_image-url}}}"/>
				</div>
				<div class="pagelayer-resizer {{icon}} {{icon_size}} "></div>
				<button if="{{bf_button}}" class="pagelayer-before-btn">{{before_btn_text}}</button>
				<button if="{{bf_button}}" class="pagelayer-after-btn">{{after_btn_text}}</button>
			</div>
		</div>',
		'params' => array(
			'before_image' => array(
				'type' => 'image',
				'label' => __pl('before_image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'retina' => 1,
			),
			'after_image' => array(
				'type' => 'image',
				'label' => __pl('after_image'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'retina' => 1,
			),
			'before_after_direction' => array(
				'type' => 'select',
				'label' => __pl('slider_direction'),
				'default' => 'horizontal',
				'addClass' => ['{{element}} .pagelayer-before-after-slider' => 'pagelayer-before-after-slider-{{val}}'],
				'list' => array(
					'horizontal' => __pl('horizontal'),
					'vertical' => __pl('vertical'),
				)
			),
			'offset_horizontal' => array(
				'type' => 'spinner',
				'label' => __pl('slider_offset'),
				'min' => '1',
				'max' => '99.5',
				'step' => '1',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-after-image' => 'clip-path:polygon({{val}}% 0%, 100% 0%, 100% 100%, {{val}}% 100%);','{{element}} .pagelayer-resizer' => 'left:{{val}}%;'],
				'req' => ['before_after_direction' => 'horizontal']
			),
			'offset_vertical' => array(
				'type' => 'spinner',
				'label' => __pl('slider_offset'),
				'min' => '1',
				'max' => '100',
				'step' => '1',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-after-slider-vertical .pagelayer-after-image' => 'clip-path:polygon(0px {{val}}%, 100% {{val}}%, 100% 100%, 0% 100%)','{{element}} .pagelayer-before-after-slider-vertical .pagelayer-resizer' => 'top:{{val}}%;'],
				'req' => ['before_after_direction' => 'vertical']
			),
			'resize_event' => array(
				'type' => 'radio',
				'label' => __pl('slider_type'),
				'default' => 'drag',
				'screen' => 1,
				'list' => array(
					'none' => __pl('none'),
					'drag' => __pl('drag'),
					'hover' => __pl('hover')
				)
			),
			'custom_height' => array(
				'type' => 'checkbox',
				'label' => __pl('custom_height'),
			),
			'height' => array(
				'type' => 'spinner',
				'label' => __pl('slider_height'),
				'min' => '0',
				'max' => '1000',
				'step' => 1,
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-after-slider' => 'height:{{val}}px;'],
				'req' => ["custom_height" => 'true']
			),
			'delay_control' => array(
				'type' => 'slider',
				'label' => __pl('time'),
				'min' => '0.0',
				'max' => '1.0',
				'step' => '0.1',
				'css' => ['{{element}} .pagelayer-resizer,{{element}} .pagelayer-after-image' => 'transition-duration:{{val}}s;'],
			)
			
		),
		'icon_style' => [
			'icon' => array(
				'type' => 'icon',
				'label' => __pl('icon'),
				'default' => 'fas fa-arrows-alt-h',
				'list' => ['arrows-alt-h', 'arrows-alt-v','arrows-alt-h', 'arrow-right', 'arrow-left', 'arrow-circle-right', 'arrow-circle-left', 'arrow-alt-circle-left','arrow-alt-circle-right'],
			),
			'icon_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'css' => ['{{element}} .pagelayer-resizer:before' => 'color:{{val}};'],
			),
			'bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#42414f',
				'css' => ['{{element}} .pagelayer-resizer:before' => 'background: {{val}};'],
			),
			'icon_size' => array(
				'type' => 'select',
				'label' => __pl('icon_size'),
				'default' => 'pagelayer-icon-mini',
				'list' => array(
					'pagelayer-icon-mini' => __pl('mini'),
					'pagelayer-icon-small' => __pl('small'),
					'pagelayer-icon-large' => __pl('large'),
					'pagelayer-icon-extra-large' => __pl('extra_large'),
					'pagelayer-icon-double-large' => __pl('double_large'),
					'pagelayer-icon-custom' => __pl('custom'),
				),
			),
			'icon_size_custom' => array(
				'type' => 'spinner',
				'label' => __pl('icon_size'),
				'min' => '1',
				'max' => '100',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer:before' => 'font-size: {{val}}px'],
				'req' => array(
					'icon_size' => 'pagelayer-icon-custom'
				),
			),
			'icon_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => ['{{element}} .pagelayer-resizer:before' => 'border-style: {{val}}'],
				'list' => [
					'' => __pl('default'),
					'none' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
			),
			'icon_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color'),
				'css' => ['{{element}} .pagelayer-resizer:before' => 'border-color: {{val}};'],
				'req' => array(
					'!icon_border_type' => ['', 'none'],
				),
			),
			'icon_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer:before' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!icon_border_type' => ['', 'none'],
				],
			),
			'icon_border_radius' => array(
				'type' => 'slider',
				'label' => __pl('border_radius'),
				'step' => '1',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer:before' => 'border-radius: {{val}}%; -webkit-border-radius:  {{val}}%;-moz-border-radius: {{val}}%;'],
			),
			'bg_size' => array(
				'type' => 'slider',
				'label' => __pl('icon_bg_size'),
				'step' => '1',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer:before' => 'padding: {{val}}px;'],
			),
			'bg_positionHorizontalY' => array(
				'type' => 'slider',
				'label' => __pl('icon_position'),
				'max' => '100',
				'min' => '0',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-after-slider-horizontal .pagelayer-resizer:before' => 'top: {{val}}%; transform: TranslateX(-50%) TranslateY(-{{val}}%) '],
				'req' => ['before_after_direction' => 'horizontal'],
			),
			'bg_positionVerticalX' => array(
				'type' => 'slider',
				'label' => __pl('icon_position'),
				'max' => '100',
				'min' => '0',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-after-slider-vertical .pagelayer-resizer:before' => 'left: {{val}}%; transform: TranslateX(-{{val}}%) TranslateY(-50%)'],
				'req' => ['before_after_direction' => 'vertical'],
			),
		],
		'resizer_style' => [
			'resizer' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'css' => ['{{element}} .pagelayer-resizer' => 'background:{{val}};'],
			),
			'resizer_width' => array(
				'type' => 'slider',
				'label' => __pl('width'),
				'min' => '0',
				'max' => '20',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer' => 'width: {{val}}px;'],
				'req' => ['before_after_direction' => 'horizontal']
			),
			'resizer_width_vertical' => array(
				'type' => 'slider',
				'label' => __pl('height'),
				'min' => '0',
				'max' => '20',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-resizer' => 'height: {{val}}px;'],
				'req' => ['before_after_direction' => 'vertical']
			),
		],
		'bf_btn_style' =>[
			'bf_button' => array(
				'type' => 'checkbox',
				'label' => __pl('show_btn')
			),
			'button_color' => array(
				'type' => 'color',
				'label' => __pl('color'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'color:{{val}};'],
				'req' => array(
					'bf_button' => 'true'
				),
			),
			'btn_bg_color' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'background-color:{{val}};'],
				'req' => array(
					'bf_button' => 'true'
				),
			),
			'bf_btn_size' => array(
				'type' => 'padding',
				'label' => __pl('size'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'padding-top:{{val[0]}}px;padding-right:{{val[1]}}px;padding-bottom:{{val[0]}}px;padding-left:{{val[1]}}px;'],
				'req' => [
					'bf_button' => 'true',
				]
			),
			'btn_border_type' => array(
				'type' => 'select',
				'label' => __pl('border_type'),
				'css' => [
					'{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'border-style: {{val}};',
					],
				'list' => [
					'' => __pl('none'),
					'solid' => __pl('solid'),
					'double' => __pl('double'),
					'dotted' => __pl('dotted'),
					'dashed' => __pl('dashed'),
					'groove' => __pl('groove'),
				],
				'req' => array(
					'bf_button' => 'true'
				),
			),
			'btn_border_color' => array(
				'type' => 'color',
				'label' => __pl('border_color_label'),
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'border-color: {{val}};'],
				'req' => array(
					'!btn_border_type' => ''
				),
			),
			'btn_border_width' => array(
				'type' => 'padding',
				'label' => __pl('border_width'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'border-top-width: {{val[0]}}px; border-right-width: {{val[1]}}px; border-bottom-width: {{val[2]}}px; border-left-width: {{val[3]}}px'],
				'req' => [
					'!btn_border_type' => ''
				],
			),
			'btn_border_radius' => array(
				'type' => 'padding',
				'label' => __pl('border_radius'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px; -webkit-border-radius:  {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;-moz-border-radius: {{val[0]}}px {{val[1]}}px {{val[2]}}px {{val[3]}}px;'],
				'req' => array(
					'!btn_border_type' => '',
				),
			),
			'btn_position' => array(
				'type' => 'slider',
				'label' => __pl('button_position'),
				'max' => '100',
				'min' => '0',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-after-slider-horizontal .pagelayer-before-btn, {{element}} .pagelayer-before-after-slider-horizontal .pagelayer-after-btn' => 'top: {{val}}%;transform: translateY(-{{val}}%);','{{element}} .pagelayer-before-after-slider-vertical .pagelayer-before-btn, {{element}} .pagelayer-before-after-slider-vertical .pagelayer-after-btn' => 'left: {{val}}%;transform: translateX(-{{val}}%);'],
				'req' => array(
					'bf_button' => 'true',
				),
			),
			'before_btn_text' => array(
				'type' => 'text',
				'label' => __pl('before_text'),
				'default' => __pl('Before'),
				'req' => array(
					'bf_button' => 'true'
				),
			),
			'after_btn_text' => array(
				'type' => 'text',
				'label' => __pl('after_text'),
				'default' => __pl('After'),
				'req' => array(
					'bf_button' => 'true'
				),
			),
			'btn_typo' => array(
				'type' => 'typography',
				'label' => __pl('typography'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn, {{element}} .pagelayer-after-btn' => 'font-family: {{val[0]}}; font-size: {{val[1]}}px !important; font-style: {{val[2]}} !important; font-weight: {{val[3]}} !important; font-variant: {{val[4]}} !important; text-decoration-line: {{val[5]}} !important; text-decoration-style: {{val[6]}} !important; line-height: {{val[7]}}em !important; text-transform: {{val[8]}} !important; letter-spacing: {{val[9]}}px !important; word-spacing: {{val[10]}}px !important;'],
				'req' => ['bf_button' => 'true']
			),
			'before_spacing' => array(
				'type' => 'padding',
				'label' => __pl('before_button_spacing'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-before-btn' => 'margin-top:{{val[0]}}px; margin-right:{{val[1]}}px; margin-bottom:{{val[2]}}px; margin-left:{{val[3]}}px;'],
				'req' => ['bf_button' => 'true']
			),
			'after_spacing' => array(
				'type' => 'padding',
				'label' => __pl('after_button_spacing'),
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-after-btn' => 'margin-top:{{val[0]}}px; margin-right:{{val[1]}}px; margin-bottom:{{val[2]}}px; margin-left:{{val[3]}}px;'],
				'req' => ['bf_button' => 'true']
			)
		],
		'styles' => [
			'icon_style' => __pl('icon_style'),
			'resizer_style' => __pl('resizer'),
			'bf_btn_style' => __pl('Before After Button'),
		]
	)
);

pagelayer_add_shortcode(PAGELAYER_SC_PREFIX.'_image_map', array(
		'name' => __pl('image_map'),
		'group' => 'other',
		'html' => '
		<div class="pagelayer-imgmap-container">
			<div class="pagelayer-imgmap-wrapper">
				<svg class="pagelayer-imgmap-svg">
					<g>{{pagelayer_map_path}}</g>
				</svg>
				<div class="pagelayer-imgmap-coordinates-wraper"></div>
			</div>
			<img class="pagelayer-img pagelayer-animation-{{anim_hover}}" src="{{map_img_id}}" title="{{{map_img-id-title}}}" alt="{{{map_img-id-alt}}}" srcset="{{pagelayer-srcset}}" />
		</div>',
		'params' => array(
			'map_img-id' => array(
				'type' => 'image',
				'label' => __pl('Image'),
				'desc' => __pl('image_src_desc'),
				'default' => PAGELAYER_URL.'/images/default-image.png',
				'retina' => 0,
			),
			'img_map-size' => array(
				'label' => __pl('obj_image_size_label'),
				'type' => 'select',
				'default' => 'full',
				'list' => array(
					'full' => __pl('full'),
					'large' => __pl('large'),
					'medium' => __pl('medium'),
					'thumbnail' => __pl('thumbnail'),
					'custom' => __pl('custom')
				)
			),
			'custom_size' => array(
				'label' => __pl('image_custom_size_label'),
				'type' => 'text',
				'screen' => 1,
				'default' => '100x100',
				'sep' => 'x',
				'css' => ['{{element}} img' => 'width: {{val[0]}}px; height: {{val[1]}}px;'],
				'req' => array(
					'img_map-size' => 'custom'
				),
			),
			'align' => array(
				'label' => __pl('obj_align_label'),
				'type' => 'radio',
				'default' => 'center',
				'screen' => 1,
				'css' => ['{{element}} .pagelayer-imgmap-container' => 'text-align: {{val}}'],
				'list' => array(
					'left' => __pl('left'),
					'center' => __pl('center'),
					'right' => __pl('right')
				)
			),
			'max-width' => array(
				'label' => __pl('max-width-percent'),
				'type' => 'slider',
				'min' => 0,
				'max' => 100,
				'screen' => 1,
				'css' => ['{{element}} img' => 'max-width: {{val}}%'],
			),
			'pagelayer_image_map' => array(
				'type' => 'hidden',
				'default' => ''
			),
		),
		'area_styles' => [
			'show_area' =>array(
				'label' => __pl('show_area' ),
				'desc' => __pl('show_area_to_live'),
				'type' => 'checkbox',
				'css' => ['{{element}} .pagelayer-imgmap-item.pagelayer-map-item-active, {{element}} .pagelayer-imgmap-hover-active .pagelayer-imgmap-item:hover' => 'opacity: 1'],
			),
			'area_bg' => array(
				'type' => 'color',
				'label' => __pl('bg_color'),
				'default' => '#FFABAB',
				'css' => ['{{element}} .pagelayer-imgmap-item.pagelayer-map-item-active, {{element}} .pagelayer-map-item-active_is_editable, {{element}} .pagelayer-imgmap-hover-active .pagelayer-imgmap-item:hover' => 'fill: {{val}}'],
				'req' => array(
					'show_area' => 'true'
				)
			),
			'area_cord_color' => array(
				'type' => 'color',
				'label' => __pl('cord_color'),
				'default' => '#F70E0E',
				'css' => ['{{element}} .pagelayer-imgmap-item.pagelayer-map-item-active, {{element}} .pagelayer-map-item-active_is_editable, {{element}} .pagelayer-imgmap-hover-active .pagelayer-imgmap-item:hover' => 'stroke: {{val}}'],
				'req' => array(
					'show_area' => 'true'
				)
			)
		],
		'styles' => [
			'area_styles' => __pl('Area Style')
		],
	)
);main/freemium_functions.php000064400000077004151526521000012107 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// freemium_functions.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Get page title - 2C
function pagelayer_get_the_title( $including_context = false ) {
	$title = '';
	
	if(pagelayer_is_live() || wp_doing_ajax() || pagelayer_is_gutenberg_editor()){
		return 'Title';
	}

	if ( is_singular() ) {
		$title = get_the_title();

		if ( $including_context ) {
			$post_type_obj = get_post_type_object( get_post_type() );
			$title = sprintf( '%s: %s', $post_type_obj->labels->singular_name, $title );
		}
	} elseif ( is_search() ) {
		$title = sprintf( __( 'Search Results for: %s'), get_search_query() );

		if ( get_query_var( 'paged' ) ) {
			$title .= sprintf( __( '&nbsp;&ndash; Page %s' ), get_query_var( 'paged' ) );
		}
	} elseif ( is_category() ) {
		$title = single_cat_title( '', false );

		if ( $including_context ) {
			$title = sprintf( __( 'Category Archives: %s' ), $title );
		}
	} elseif ( is_tag() ) {
		$title = single_tag_title( '', false );
		if ( $including_context ) {
			$title = sprintf( __( 'Tag Archives: %s' ), $title );
		}
	} elseif ( is_author() ) {
		$title = get_the_author() ;

		if ( $including_context ) {
			$title = sprintf( __( 'Author Archives: %s' ), $title );
		}
	} elseif ( is_year() ) {
		$title = get_the_date( _x( 'Y', 'yearly archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Yearly Archives: %s' ), $title );
		}
	} elseif ( is_month() ) {
		$title = get_the_date( _x( 'F Y', 'monthly archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Monthly Archives: %s' ), $title );
		}
	} elseif ( is_day() ) {
		$title = get_the_date( _x( 'F j, Y', 'daily archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Daily Archives: %s' ), $title );
		}
	} elseif ( is_tax( 'post_format' ) ) {
		if ( is_tax( 'post_format', 'post-format-aside' ) ) {
			$title = _x( 'Asides', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
			$title = _x( 'Galleries', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
			$title = _x( 'Images', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
			$title = _x( 'Videos', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
			$title = _x( 'Quotes', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
			$title = _x( 'Links', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
			$title = _x( 'Statuses', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
			$title = _x( 'Audio', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
			$title = _x( 'Chats', 'post format archive title' );
		}
	} elseif ( is_post_type_archive() ) {
		$title = post_type_archive_title( '', false );

		if ( $including_context ) {
			$title = sprintf( __( 'Archives: %s' ), $title );
		}
	} elseif ( is_tax() ) {
		$title = single_term_title( '', false );

		if ( $including_context ) {
			$tax = get_taxonomy( get_queried_object()->taxonomy );
			$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->singular_name, $title );
		}
	} elseif ( is_404() ) {
		$title = __( 'Page Not Found' );
	} elseif ( is_archive() ) {
		$title = get_the_archive_title();
	} elseif ( is_home() ) {
		$title = single_post_title('', false);
	}
	
	return $title;
}

// Get Taxonomies
function pagelayer_tax_list($item = '', $page = false){
	
	// Get types
	$types = pagelayer_post_types($page);
	
	// Loop thru
	foreach($types as $slug => $label){
		
		// Get the items
		$items = get_object_taxonomies($slug, 'objects');
		
		foreach($items as $name => $v) {
			if(!isset($taxonomies[$name])){
				$taxonomies[$name] = array('label' => $v->labels->singular_name, 'posttypes' => array($label));
			}else{
				$taxonomies[$name]['posttypes'][] = $label;
			}
		}	
	}
	
	// Make it simple
	foreach($taxonomies as $k => $v){
		$taxonomies[$k] = $v['label'].' ('.implode(', ', $v['posttypes']).')';
	}
	
	$pos = array_search($item, array_keys($taxonomies));
	if(!empty($pos)) {
		$cut = array_splice($taxonomies, $pos, 1);
		$taxonomies = $cut + $taxonomies;
	}

	return $taxonomies;
}

/////////////////////////////////////
// Miscellaneous Shortcode Functions
/////////////////////////////////////

// The types of Posts
function pagelayer_post_types($page = false){
	
	// Get the types
	$args = array('public' => TRUE);	
	$types = get_post_types($args, 'objects');
	
	// Unset Page if not required
	if($page == false){
		unset($types['page']);
	}
	
	// Remove Attachment types !
	unset($types['attachment']);
	
	foreach($types as $name => $type){
		$return[$name] = $type->labels->singular_name;
	}
	
	return $return;
}

// Get all posts and pages list
function pagelayer_get_posts($args = array()){
	
	if(empty($args)){
		$args = array_keys(pagelayer_post_types(true));
	}
	
	$posts_list = array();
	
	// Get type
	foreach($args as $p){
		
		// Create post list
		foreach(get_posts(['post_type' => $p]) as $post){
			$posts_list[$post->ID] = $post->post_title;
		}
	}
	
	return $posts_list;
}

// Get Menu List()
function pagelayer_get_menu_list($return_def = false){

	$menus = wp_get_nav_menus();
	$nav_menu = array(
		'0' => __('-- Select Menu --')
	);
	
	if(empty($menus)){
		return $nav_menu;
	}
	
	$default = $menus[0]->term_id;

	foreach ( $menus as $menu ) {
	$nav_menu[$menu->term_id] = $menu->name;

		if($default > $menu->term_id){
			$default = $menu->term_id;
		}
	}
	
	if($return_def){
		return $default;
	}
	
	return $nav_menu;
	
}

// Animated Heading
function pagelayer_sc_anim_heading(&$el){
	
	$el['atts']['rotate_html'] = '';
	
	//Creates html for rotating text
	if(!empty($el['atts']['rotate_text'])){
		
		$rotate_text = '';
		$rotate_text = explode(',', $el['atts']['rotate_text']);
		
		$el['atts']['rotate_html'] .= '<div class="pagelayer-animated-heading pagelayer-rotating-text pagelayer-words-wrapper">';
		//print_r($rotate_text);
		foreach($rotate_text as $key => $val){
			//print_r($key);
			$el['atts']['rotate_html'] .= '<span';
			if( $key == 0){
				$el['atts']['rotate_html'] .= ' class="pagelayer-is-visible"';
			}
			$el['atts']['rotate_html'] .= '>' . $rotate_text[$key] . '</span>';
		}
		
		$el['atts']['rotate_html'] .= '</div>';
	   
	}
	
	//Required classes for particular rotate
	$el['atts']['rotate_req'] = '';
	$letters = ['pagelayer-aheading-rotate2', 'pagelayer-aheading-rotate3', 'pagelayer-aheading-scale'];
	
	if(!empty($el['atts']['animations'])){
		if(in_array($el['atts']['animations'], $letters)){
			$el['atts']['rotate_req'] = 'letters ';
		}
		
		if($el['atts']['animations'] == 'clip'){
			$el['atts']['rotate_req'] = 'is-full-width ';
		}
	}
	
}

// Contact Form
function pagelayer_sc_contact(&$el){
	$recaptcha_version = get_option('pagelayer_recaptcha_version', '');
	$el['atts']['grecaptcha'] = get_option('pagelayer_google_captcha');
	
	if(!empty($el['atts']['captcha'])){
	
		if($recaptcha_version == 'v3'){
			$el['atts']['grecaptcha_v3'] = true;
		}else{
			$el['atts']['grecaptcha_v2'] = true;
		}
		
		if(!wp_script_is('pagelayer_cap_script', 'registered')){
			$pagelayer_cap_lang = get_option('pagelayer_google_captcha_lang');
			$lang = empty($pagelayer_cap_lang) ? '' : '&hl='.$pagelayer_cap_lang;						
		
			$cap_api = ($recaptcha_version == 'v3') ? $el['atts']['grecaptcha'].$lang : "explicit$lang";
			wp_register_script('pagelayer_cap_script', "https://www.google.com/recaptcha/api.js?render=$cap_api", array(), PAGELAYER_PRO_VERSION, true);
		}
		
		wp_enqueue_script('pagelayer_cap_script');
	}
}

// Contact Form Item
function pagelayer_sc_contact_item(&$el){
	$html = ''; 
	$options = array();
	$placeholder = '';
	$required = '';

	if(!empty($el['atts']['required'])){
		$required = 'required';
	}

	if(!empty($el['atts']['label_name']) && empty($el['atts']['label_as_holder'])){
		$html = '<label for="'.pagelayer_isset($el['atts'], 'field_name').'"><span class="pagelayer-form-label">'.$el['atts']['label_name'].'</span>';
				
		if(!empty($required)){
			$html .= ' *';
		}
		
		$html .= '</label>';
	}
		
	if(!empty($el['atts']['label_as_holder'])){
		$placeholder = $el['atts']['label_name'];
	}else{
		if(!empty($el['atts']['placeholder'])) $placeholder = $el['atts']['placeholder'];
	}
	
	// File accept
	$file_accept = '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.ppt,.pptx,.odt,.avi,.ogg,.m4a,.mov,.mp3,.mp4,.mpg,.wav,.wmv';
	
	if(!empty($el['atts']['accept_file'])){
		$file_accept = $el['atts']['accept_file'];
	}
	
	if($el['atts']['field_type'] == 'select'){
		
		$html .= '<select name="'.$el['atts']['field_name'].'" '.$required.'>';
		
		if(!empty($el['atts']['label_name']) && !empty($el['atts']['label_as_holder'])){
			$html .= '<option value="" disabled selected>'.$el['atts']['label_name'].'</option>';
		}else{
			$html .= '<option value="" disabled selected>---</option>';
		}
		
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<option value="'.trim($options[$x]).'" >'.trim($options[$x]).'</option>';
			}
		}
		$html .= '</select>';
	}elseif($el['atts']['field_type'] == 'checkbox'){
		$html .= '<div class="pagelayer-radcheck-holder pagelayer-contact-checkbox" '.$required.'>';
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<div><input type="checkbox" id="'.$el["id"].trim($options[$x]).'" name="'.$el['atts']['field_name'].'[]" value="'.trim($options[$x]).'"/><label for="'.$el["id"].trim($options[$x]).'" class="pagelayer-form-label">'.trim($options[$x]).'</label></div>';
			}
		}
		$html .= '</div>';
	}elseif($el['atts']['field_type'] == 'radio'){
		$html .= '<div class="pagelayer-radcheck-holder">';
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<div><input type="radio" name="'.$el['atts']['field_name'].'"'.$required.' value="'.trim($options[$x]).'"/><span>
				'.trim($options[$x]).'</span></div>';
			}
		}
		$html .= '</div>';
	}elseif($el['atts']['field_type'] == 'textarea'){
		$html .= '<textarea name="'.$el['atts']['field_name'].'" rows="'.$el['atts']['textarea_rows'].'" '.$required.' placeholder="'.$placeholder.'"></textarea>';
	}elseif($el['atts']['field_type'] == 'file'){
		$html .= '<input type="'.$el['atts']['field_type'].'" '.$required.' name="'.$el['atts']['field_name'].'" accept="'.$file_accept.'" />';
	}elseif($el['atts']['field_type'] == 'label'){
		$html .= '';
	}else{
		$html .= '<input type="'.$el['atts']['field_type'].'" '.$required.' placeholder="'.$placeholder.'" name="'.$el['atts']['field_name'].'" />';
	}
	
	$el['atts']['fieldhtml'] = $html;
}

// Featured Image Handler
function pagelayer_sc_featured_img(&$el){
	
	// Image size
	if(!empty($el['atts']['size'])){
		$size = $el['atts']['size'];
	}
	
	$thumbnail_id = get_post_thumbnail_id();
	$title = $alt = '';
	if(!empty($thumbnail_id)){
		$title = get_the_title($thumbnail_id);
		$alt = get_post_meta($thumbnail_id, '_wp_attachment_image_alt', true);
	}
	
	if($size){
		$src = get_the_post_thumbnail_url(null, $size);
	}else{
		$src = get_the_post_thumbnail_url();
	}
	
	// Fallback image
	if(empty($src) && !empty($el['atts']['img'])){
		$src = !empty($el['tmp']['img-'.$size.'-url']) ? $el['tmp']['img-'.$size.'-url'] : pagelayer_isset($el['tmp'], 'img-url');
		$alt = $el['tmp']['img-alt'];
		$title = $el['tmp']['img-title'];
	}
	
	$el['atts']['img_html'] = '';
	
	if(!empty($src)){
		$el['atts']['img_html'] = '<img class="pagelayer-img" src="'.$src.'" title="'.$title.'" alt="'.$alt.'" />';
	}elseif(pagelayer_is_live_template()){
		$el['atts']['img_html'] = '<img class="pagelayer-img" src="'.PAGELAYER_URL.'/images/default-image.png" />';
	}
	
	// What is the link ?
	if(!empty($el['atts']['link_type'])){
		
		// Custom url
		if($el['atts']['link_type'] == 'custom_url'){
			// Backward compatibility for new link props
			pagelayer_add_link_backward($el, array( 'rel' => '', 'selector' => '.pagelayer-ele-link'));
			$el['atts']['func_link'] = empty($el['tmp']['link']) ? '' : $el['tmp']['link'];
		}
		
		// Link to the media file itself
		if($el['atts']['link_type'] == 'media_file' || $el['atts']['link_type'] == 'lightbox'){
			$el['atts']['func_link'] = $src;
		}
		
	}
	
}

// Site Title Handler
function pagelayer_sc_wp_title(&$el){
	
	// Decide the image URL
	$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'id-' . pagelayer_isset($el['atts'], 'id-size') . '-url');
	$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'id-url') : $el['atts']['func_id'];

	// Default Logo
	if(empty($el['atts']['logo_img_type'])){
		
		// Load it
		$logo = pagelayer_site_logo();
		
		// Only if we get it
		if(!empty($logo)){
			$logo_img_size = pagelayer_isset($el['atts'], 'logo_img_size');
			$el['atts']['func_image'] = pagelayer_isset($logo, $logo_img_size.'-url');
			$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($logo, 'url') : $el['atts']['func_image'];
			$el['tmp']['logo_img-title'] = pagelayer_isset($logo, 'title');
			$el['tmp']['logo_img-alt'] = pagelayer_isset($logo, 'alt');
		}		
	
	// Custom logo
	}else{
		$logo_img_size = pagelayer_isset($el['atts'], 'logo_img_size');
		$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'logo_img-' . $logo_img_size . '-url');
		$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'logo_img-url') : $el['atts']['func_image'];
		
		$el['tmp']['logo_img-title'] = pagelayer_isset($el['tmp'],'logo_img-title');
		$el['tmp']['logo_img-alt'] = pagelayer_isset($el['tmp'], 'logo_img-alt');
		
	}
}

// Primary menu Handler 
function pagelayer_sc_wp_menu(&$el){
	
	if(!empty($el['atts']['inside_mega'])){
		$el['atts']['nav_menu'] = '';
		
		if(pagelayer_is_live()){
			$el['atts']['nav_menu'] = 'Primary Menu Holder. Please select the correct menu.';
		}
		
		return true;
	}
	
	// Setting default toggle icon. If the icon is empty.
	if(empty($el['atts']['menu_toggle_icon'])){
		$el['atts']['menu_toggle_icon'] = 'fas fa-bars';
	}
	
	// Load Pagelayer nav menu walker
	include_once(PAGELAYER_DIR.'/main/nav_walker.php');
		
	$el['atts']['nav_menu'] = wp_nav_menu( array(
		'menu'   => wp_get_nav_menu_object(pagelayer_isset($el['atts'], 'nav_list')),
		'menu_id' => pagelayer_isset($el['atts'], 'nav_list'),
		'menu_class' => 'pagelayer-wp_menu-ul',
		'walker' => new Pagelayer_Walker_Nav_Menu(),
		//'theme_location' => 'primary',
		'echo'	 => false,
	) );
}

// Post Navigation Handler
function pagelayer_sc_post_nav(&$el){
	
	$in_same_term = false;
	$taxonomies = 'category';
	$title = '';
	$arrows_list = $el['atts']['arrows_list'];
	
	if(!empty($el['atts']['in_same_term'])){
		$in_same_term = true;
		$taxonomies = $el['atts']['taxonomies'];
	}
	
	if(!empty($el['atts']['post_title'])){
		$title = '<span class="pagelayer-post-nav-title">%title</span>';
	}
	
	$next_label = '<span class="pagelayer-next-holder">
		<span class="pagelayer-post-nav-link"> '.$el["atts"]["next_label"].'</span>'.$title.'
	</span>
	<span class="pagelayer-post-nav-icon fa fa-'.$arrows_list.'-right"></span>';
		
	$prev_label = '<span class="pagelayer-post-nav-icon fa fa-'.$arrows_list.'-left"></span>
	<span class="pagelayer-next-holder">
		<span class="pagelayer-post-nav-link"> '.$el["atts"]["prev_label"].'</span>'.$title.'
	</span>';

	$el['atts']['next_link'] = get_next_post_link('%link', $next_label, $in_same_term, '', $taxonomies); 

	$el['atts']['prev_link'] = get_previous_post_link('%link', $prev_label, $in_same_term, '', $taxonomies ); 
}

// Comments Handler
function pagelayer_sc_post_comment(&$el){
	global $post;
	
	// Is it custom ?
	if($el['atts']['post_type'] == 'custom' && !empty($el['atts']['post_id'])){
		$orig_post = $post;
		$post = get_post($el['atts']['post_id']);
	}
	
	$post_id = $post->ID;
	//echo $post_id.' - '.$el['atts']['post_id'];
	
	if ( comments_open($post_id) || get_comments_number($post_id) ) {
		
		// Handel comments template echo  
		ob_start();
		comments_template();
		
		$el['atts']['post_comment'] =  '<div class="pagelayer-comments-template">'.ob_get_clean().'</div>';	
		
		// Comments are now closed
		if(!comments_open($post_id)){
			$el['atts']['post_comment'] = '<div class="pagelayer-comments-close">
			<h2>Comments are closed!</h2>
		</div>';
		}
		
	}else{
		$el['atts']['post_comment'] = '';
	}
	
	if(pagelayer_is_live_template() || $post->post_type == 'pagelayer-template'){
		$el['atts']['post_comment'] = '<div class="pagelayer-comments-close">
			<center><h4>Comments section !</h4></center>
		</div>';
	}
	
	if(!empty($orig_post)){
		$post = $orig_post;
	}
	
}

// post navigation Handler
function pagelayer_sc_post_info_list(&$el){
	
	global $post;
	
	$el['atts']['post_info_content'] ='';

	switch($el['atts']['type']){
		case 'author':
			
			$author_id = get_the_author_meta( 'ID' ) ? get_the_author_meta( 'ID' ) : $GLOBALS['post']->post_author;
			
			$el['atts']['link'] = get_author_posts_url( $author_id );
			$el['atts']['avatar_url'] = get_avatar_url( $author_id, 96 );
			$el['atts']['post_info_content'] = get_the_author_meta( 'display_name', $author_id );
			break;

		case 'date':
		
			$format = [
				'default' => 'F j, Y',
				'0' => 'F j, Y',
				'1' => 'Y-m-d',
				'2' => 'm/d/Y',
				'3' => 'd/m/Y',
				'custom' => empty( $el['atts']['date_format_custom'] ) ? 'F j, Y' : $el['atts']['date_format_custom'],
			];

			$el['atts']['post_info_content'] = get_the_time( $format[ $el['atts']['date_format'] ] );
			$el['atts']['link'] = get_day_link( get_post_time( 'Y' ), get_post_time( 'm' ), get_post_time( 'j' ) );
				
			break;

		case 'time':
		
			$format = [
				'default' => 'g:i a',
				'0' => 'g:i a',
				'1' => 'g:i A',
				'2' => 'H:i',
				'custom' =>  empty( $el['atts']['time_format_custom'] ) ? 'F j, Y' : $el['atts']['time_format_custom'],
			];
			$el['atts']['post_info_content'] = get_the_time( $format[ $el['atts']['time_format'] ] );
			
			if(!pagelayer_is_live_template()){
				$el['atts']['link'] = 'javascript:void(0)';
				$el['atts']['info_link'] = 1;
			}
			
			break;

		case 'comments':
		
			$el['atts']['post_info_content'] = (int) get_comments_number();
			$el['atts']['link'] = get_comments_link();
			
			// Comments are closed then dont show !
			if(pagelayer_is_live_template() || $GLOBALS['post']->post_type == 'pagelayer-template'){
				$el['atts']['post_info_content'] = 1;
			}elseif(!comments_open($post->ID)){
				$el['atts']['post_info_content'] = '';
			}
			
			break;

		case 'terms':
		
			$taxonomy = $el['atts']['taxonomy'];
			$terms = wp_get_post_terms( get_the_ID(), $taxonomy );
			foreach ( $terms as $term ) {
					$el['atts']['post_info_content'] .= ' <a href="'. get_term_link( $term ) .'"> '. $term->name .' </a>';
			}
			
			if(pagelayer_is_live_template() || $GLOBALS['post']->post_type == 'pagelayer-template'){
				$el['atts']['post_info_content'] .= '<a>Dummy '.ucfirst(str_replace('_', ' ', $el['atts']['taxonomy'])).'</a>';
			}
			
			$el['atts']['info_link'] = '';
			break;

		case 'custom':
		
			$el['atts']['post_info_content'] = $el['atts']['type_custom'];
			$el['atts']['link'] = $el['atts']['info_custom_link'];

			break;
	}
	

}

// Post Content Handler - 2C
function pagelayer_sc_post_content(&$el){	
	static $did_posts = [];
	
	global $pagelayer;
	
	$post_obj = get_post();
	
	if(empty( $post_obj )){
		return false;
	}
	
	if ( post_password_required( $post_obj->ID ) && !pagelayer_is_live() ) {
		$el['atts']['post_content'] = get_the_password_form( $post_obj->ID );
		return;
	}
		
	// Avoid recursion
	if ( isset( $did_posts[$post_obj->ID] ) || pagelayer_is_live_template($post_obj) ) {
		$el['atts']['post_content'] = '<div style="min-height:20px;background-color:#e3e3e3;text-align:center">Post Content Holder</div>';
		return;
	}
	
	// Is it an attachment
	if(is_attachment()){
		$el['atts']['post_content'] = '<center>'.wp_get_attachment_image( get_the_ID(), 'full' ).'</center>';
		return;
	}
	
	// To prevent recursion, set it to True
	$did_posts[$post_obj->ID] = true;
	
	$content = $post_obj->post_content;
	
	// If we are rendering a template and this post content is being edited live, then dont_make_editable is set true in pagelayer_get_post_content. Hence we need to set it as false and revert it after rendering the posts content !
	if(!empty($pagelayer->dont_make_editable)){
		$reset = $pagelayer->dont_make_editable;
		$pagelayer->dont_make_editable = false;
		
		// While rendering post content inside the template 
		$rendering_template_id = $pagelayer->rendering_template_id;
		$pagelayer->rendering_template_id = $post_obj->ID;
	}
	
	// Split to pages.
	setup_postdata( $post_obj );
	
	$content = apply_filters( 'the_content', get_the_content() );
	
	if(!empty($reset)){
		$pagelayer->rendering_template_id = $rendering_template_id;
		$pagelayer->dont_make_editable = $reset;
	}
	
	$content .= wp_link_pages( array(
			'before' => '<p class="post-nav-links pagelayer-page-links"><span class="page-links-title pagelayer-page-links-title">' . __( 'Pages:') . '</span>',
			'after' => '</p>',
			'echo' => 0,
		)
	);
	
	$el['atts']['post_content'] = $content;
}

// Archive Posts shows the posts as per the QUERY of the current page
function pagelayer_sc_archive_posts(&$el){
	global $wp_query, $pagelayer;
	
	$query_args = $wp_query->query_vars;
	
	if(pagelayer_is_live() || (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'pagelayer_archive_posts_data')){
		$query_args = ['post_type' => 'post'];
		$dummy_pagination = 10;
	}
	
	$allow_param = array('show_thumb', 'thumb_size', 'show_content', 'show_title', 'more', 'btn_type', 'size', 'icon_position', 'icon', 'show_more', 'meta_sep', 'exc_length', 'thumb_img_type', 'infinite_types' );
	
	$param = array();
	
	foreach($allow_param as $val){
		$param[$val] = !empty($el['atts'][$val]) ?  $el['atts'][$val] : '';
	}
	
	if(!empty($el['atts']['meta'])){
		
		$meta_arr = explode(',',$el['atts']['meta']);
		//pagelayer_print($el['atts']['meta']);
		foreach($meta_arr as $arr){
			$param[$arr] = $arr;
		}
		
	}
	
	if(!empty($el['atts']['thumb_img_type'])){
		$thumb_size = pagelayer_isset($el['atts'], 'thumb_size');
		$img_size = pagelayer_isset($el['tmp'], 'def_thumb_img-'.$thumb_size.'-url');
		$param['def_thumb_img'] = empty($img_size) ? pagelayer_isset($el['tmp'], 'def_thumb_img-url') : $img_size;	
	}
	
	$el['atts']['pagelayer_pagination_top'] = '';
	$el['atts']['pagelayer_pagination_bottom'] = '';
		
	if(!empty($el['atts']['pagination']) && empty($el['atts']['infinite_types'])){	
		// Create array for pagination
		$pagination = array(
			'prev_next'				=> $el['atts']['pagination'] == 'number' ? false : true,
			'prev_text'				=> __( pagelayer_isset($el['atts'], 'pagi_prev_text') ),
			'next_text'				=> __( pagelayer_isset($el['atts'], 'pagi_next_text') ),
			'end_size'				=> $el['atts']['pagi_end_size'],
			'mid_size'				=> $el['atts']['pagi_mid_size'],
			'before_page_number'			=> pagelayer_isset($el['atts'], 'before_page_number'),
			'after_page_number'			=> pagelayer_isset($el['atts'], 'after_page_number'),
		);
		
		if(!empty($dummy_pagination)){
			$pagination['total'] = 10;
		}

		if( isset($el['atts']['pagination_on']) && $el['atts']['pagination_on'] == 'top'){
			$el['atts']['pagelayer_pagination_top'] = '<div class="pagelayer-pagination">'.paginate_links($pagination).'</div>';
		}else{
			$el['atts']['pagelayer_pagination_bottom'] = '<div class="pagelayer-pagination">'.paginate_links($pagination).'</div>';
		}
	}

	if(wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'pagelayer_infinite_posts'){
		$query_args['paged'] = $el['atts']['paged'];
	}else{
		$data = array('tag' => $el['tag'], 'atts' => $el['oAtts']);
		$pagelayer->localScript['pagelayer_post_'.$el['id']] = $data;
	}

	$el['atts']['pagelayer_archive_posts'] = pagelayer_posts($param, $query_args);
}

// Flipbox handler
function pagelayer_sc_flipbox(&$el){
	
	// Flipbox front heading image 
	if(!empty($el['atts']['heading_image'])){
		$heading_image_size = pagelayer_isset($el['atts'], 'heading_image_size');
		$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'heading_image-'.$heading_image_size.'-url');
		$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'heading_image-url') : $el['atts']['func_image'];
	}
	
	$back = pagelayer_isset($el['atts'], 'back_section');
	if(pagelayer_is_live() && !empty($back)){
		$el['attr'][] = 'back_section="'.$back.'"';
	}
}

// Countdown handler
function pagelayer_sc_countdown(&$el){
	$exp = pagelayer_isset($el['atts'], 'display_expired_text');
	if(pagelayer_is_live() && !empty($exp)){
		$el['attr'][] = 'display_expired_text="'.$exp.'"';
	}
	
	if(!isset($el['atts']['custom_label_text'])){
		$el['atts']['days_label_text'] = 'Days';
		$el['atts']['hours_label_text'] = 'Hours';
		$el['atts']['minutes_label_text'] = 'Minutes';
		$el['atts']['seconds_label_text'] = 'Seconds';
	}
}

// Social Share Handler
function pagelayer_sc_share(&$el){
	
	if(empty($el['atts']['icon'])){
		return;
	}
	
	$profileName = '';
	
	if(isset($el['atts']['custom_profile'])){
		$profileName = $el['atts']['custom_profile'].'/';
	}
	
	$icon_splited = explode(' fa-', $el['atts']['icon']);
	$el['classes'][] = ['.pagelayer-share-content' => 'pagelayer-'.$icon_splited[1]];
	
	$icon = $icon_splited[1];
	
	$labelList = array(
		'Facebook' => array(
			'icons' => array('facebook', 'facebook-f', 'facebook-messenger', 'facebook-square', 'facebook-official'),
			'url' => 'https://www.facebook.com/sharer/sharer.php?u='
		),
		'Twitter' => array(
			'icons' => array('twitter', 'twitter-square'),
			'url' => 'https://twitter.com/intent/tweet?url='
		),
		'X' => array(
			'icons' => array('x-twitter', 'x-twitter-square'),
			'url' => 'https://x.com/intent/post?url='
		),
		'Google+' => array(
			'icons' => array('google-plus', 'google-plus-square', 'google-plus-g'),
			'url' => 'https://plus.google.com/share?url='
		),
		'Instagram' => array(
			'icons' => array('instagram'),
			'url' => 'https://www.instagram.com/'.$profileName,
			'no' => 1
		),
		'Linkedin' => array(
			'icons' => array('linkedin', 'linkedin-in', 'linkedin-square'),
			'url' => 'https://www.linkedin.com/shareArticle?url='
		),
		'pinterest' => array(
			'icons' => array('pinterest', 'pinterest-p', 'pinterest-square'),
			'url' => '//www.pinterest.com/pin/create/button/?url='
		),
		'Reddit' => array(
			'icons' => array('reddit-alien', 'reddit-square', 'reddit'),
			'url' => 'https://reddit.com/submit?url='
		),
		'Skype' => array(
			'icons' => array('skype'),
			'url' => 'https://web.skype.com/share?',
			'no' => 1
		),
		'Stumbleupon' => array(
			'icons' => array('stumbleupon', 'stumbleupon-circle'),
			'url' => 'https://www.stumbleupon.com/submit?url='
		),
		'Telegram' => array(
			'icons' => array('telegram', 'telegram-plane'),
			'url' => 'https://t.me/share/url?url='
		),
		'Tumblr' => array(
			'icons' => array('tumblr', 'tumblr-square'),
			'url' => 'https://www.tumblr.com/share/link?url='
		),
		'VK' => array(
			'icons' => array('vk'),
			'url' => 'http://vk.com/share.php?url='
		),
		'Weibo' => array(
			'icons' => array('weibo'),
			'url' => 'http://service.weibo.com/share/share.php?url='
		),
		'WhatsApp' => array(
			'icons' => array('whatsapp', 'whatsapp-square'),
			'url' => 'whatsapp://send?text='
		),
		'WordPress' => array(
			'icons' => array('wordpress', 'wordpress-simple'),
			'url' => 'https://wordpress.com/press-this.php?u='
		),
		'Xing' => array(
			'icons' => array('xing', 'xing-square'),
			'url' => 'https://www.xing.com/spi/shares/new?url='
		),
		'Delicious' => array(
			'icons' => array('delicious'),
			'url' => 'https://delicious.com/save?v=5&noui&jump=close&url='
		),
		'Dribbble' => array(
			'icons' => array('dribbble', 'dribbble-square'),
			'url' => 'https://dribbble.com/shots/'.$profileName,
			'no' => 1
		),
		'Pocket' => array(
			'icons' => array('get-pocket'),
			'url' => 'https://getpocket.com/edit?url='
		),
		'Email' => array(
			'icons' => array('envelope', 'envelope-open', 'envelope-o'),
			'url' => 'mailto:?body='
		)
	);
		
	if(!empty($el['atts']['text'])){
		$el['atts']['icon_label'] = $el['atts']['text'];
	}else{
		foreach($labelList as $key => $val){
			if(in_array($icon, $val['icons'])){
				$el['atts']['icon_label'] = $key;
				break;
			}
		}
	}
	
	foreach($labelList as $key => $val){
		if(in_array($icon, $val['icons'])){
			if(empty($val['no'])){
				$el['atts']['social_url'] = $val['url'].$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
			}else{
				$el['atts']['social_url'] = $val['url'];
			}
			break;
		}
	}
}

// If the excerpt for current post is there only then give
function pagelayer_get_the_excerpt(){
	
	global $post;
	
	if(!empty($post->post_excerpt)){
		return $post->post_excerpt;
	}
	
	return '';
}

function pagelayer_sc_post_excerpt(&$el){
	
	$el['tmp']['post_excerpt'] = '';
	
	$tmp_excerpt = pagelayer_get_the_excerpt();
	
	if(!empty($tmp_excerpt) && strlen($tmp_excerpt) > 0){
		$el['tmp']['post_excerpt'] = '<div class="pagelayer-post-excerpt">'.$tmp_excerpt.'</div>';
	}
	
	if(pagelayer_is_live_template()){
		$el['tmp']['post_excerpt'] = '<div class="pagelayer-post-excerpt pagelayer-empty-widget"></div>';
	}
}

function pagelayer_sc_copyright(&$el){
	$el['atts']['copyright_text'] = pagelayer_get_option('pagelayer-copyright');	
	$el['oAtts']['copyright_text'] = $el['atts']['copyright_text'];	
}

// Pricing Handler
function pagelayer_sc_pricing(&$el){
	//Backward compatibility for new link props	
	pagelayer_add_link_backward($el, array( 
		'link' => 'button_url',
		'rel' => '',
		'target' => 'button_url_target',
		'selector' => '.pagelayer-pricing-btn'
	));
}

// Post Title
function pagelayer_sc_post_title(&$el){
	$el['atts']['open_html_tag'] = !empty($el['atts']['html_tag']) ? '<'.$el['atts']['html_tag'].'>' :'';
	$el['atts']['close_html_tag'] = !empty($el['atts']['html_tag']) ? '</'.$el['atts']['html_tag'].'>' :'';
}main/plugin-update-checker.php000064400000151101151526521000012355 0ustar00<?php
/**
 * Plugin Update Checker Library 3.2
 * http://w-shadow.com/
 * 
 * Copyright 2016 Janis Elsts
 * Released under the MIT license. See license.txt for details.
 */

if ( !class_exists('PagelayerUpdateChecker_3_2', false) ):

/**
 * A custom plugin update checker. 
 * 
 * @author Janis Elsts
 * @copyright 2016
 * @version 3.2
 * @access public
 */
class PagelayerUpdateChecker_3_2 {
	public $metadataUrl = ''; //The URL of the plugin's metadata file.
	public $pluginAbsolutePath = ''; //Full path of the main plugin file.
	public $pluginFile = '';  //Plugin filename relative to the plugins directory. Many WP APIs use this to identify plugins.
	public $slug = '';        //Plugin slug.
	public $optionName = '';  //Where to store the update info.
	public $muPluginFile = ''; //For MU plugins, the plugin filename relative to the mu-plugins directory.

	public $debugMode = false; //Set to TRUE to enable error reporting. Errors are raised using trigger_error()
                               //and should be logged to the standard PHP error log.
	public $scheduler;

	protected $upgraderStatus;

	private $debugBarPlugin = null;
	private $cachedInstalledVersion = null;

	private $metadataHost = ''; //The host component of $metadataUrl.

	/**
	 * Class constructor.
	 *
	 * @param string $metadataUrl The URL of the plugin's metadata file.
	 * @param string $pluginFile Fully qualified path to the main plugin file.
	 * @param string $slug The plugin's 'slug'. If not specified, the filename part of $pluginFile sans '.php' will be used as the slug.
	 * @param integer $checkPeriod How often to check for updates (in hours). Defaults to checking every 12 hours. Set to 0 to disable automatic update checks.
	 * @param string $optionName Where to store book-keeping info about update checks. Defaults to 'external_updates-$slug'.
	 * @param string $muPluginFile Optional. The plugin filename relative to the mu-plugins directory.
	 */
	public function __construct($metadataUrl, $pluginFile, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = ''){
		$this->metadataUrl = $metadataUrl;
		$this->pluginAbsolutePath = $pluginFile;
		$this->pluginFile = plugin_basename($this->pluginAbsolutePath);
		$this->muPluginFile = $muPluginFile;
		$this->slug = $slug;
		$this->optionName = $optionName;
		$this->debugMode = (bool)(constant('WP_DEBUG'));

		//If no slug is specified, use the name of the main plugin file as the slug.
		//For example, 'my-cool-plugin/cool-plugin.php' becomes 'cool-plugin'.
		if ( empty($this->slug) ){
			$this->slug = basename($this->pluginFile, '.php');
		}

		//Plugin slugs must be unique.
		$slugCheckFilter = 'puc_is_slug_in_use-' . $this->slug;
		$slugUsedBy = apply_filters($slugCheckFilter, false);
		if ( $slugUsedBy ) {
			$this->triggerError(sprintf(
				'Plugin slug "%s" is already in use by %s. Slugs must be unique.',
				htmlentities($this->slug),
				htmlentities($slugUsedBy)
			), E_USER_ERROR);
		}
		add_filter($slugCheckFilter, array($this, 'getAbsolutePath'));

		
		if ( empty($this->optionName) ){
			$this->optionName = 'external_updates-' . $this->slug;
		}

		//Backwards compatibility: If the plugin is a mu-plugin but no $muPluginFile is specified, assume
		//it's the same as $pluginFile given that it's not in a subdirectory (WP only looks in the base dir).
		if ( (strpbrk($this->pluginFile, '/\\') === false) && $this->isUnknownMuPlugin() ) {
			$this->muPluginFile = $this->pluginFile;
		}

		$this->scheduler = $this->createScheduler($checkPeriod);
		$this->upgraderStatus = new Pagelayer_PucUpgraderStatus_3_2();

		$this->installHooks();
	}

	/**
	 * Create an instance of the scheduler.
	 *
	 * This is implemented as a method to make it possible for plugins to subclass the update checker
	 * and substitute their own scheduler.
	 *
	 * @param int $checkPeriod
	 * @return Pagelayer_PucScheduler_3_2
	 */
	protected function createScheduler($checkPeriod) {
		return new Pagelayer_PucScheduler_3_2($this, $checkPeriod);
	}
	
	/**
	 * Install the hooks required to run periodic update checks and inject update info 
	 * into WP data structures. 
	 * 
	 * @return void
	 */
	protected function installHooks(){
		//Override requests for plugin information
		add_filter('plugins_api', array($this, 'injectInfo'), 20, 3);
		
		//Insert our update info into the update array maintained by WP.
		add_filter('site_transient_update_plugins', array($this,'injectUpdate')); //WP 3.0+
		add_filter('transient_update_plugins', array($this,'injectUpdate')); //WP 2.8+
		add_filter('site_transient_update_plugins', array($this, 'injectTranslationUpdates'));

		add_filter('plugin_row_meta', array($this, 'addCheckForUpdatesLink'), 10, 2);
		add_action('admin_init', array($this, 'handleManualCheck'));
		add_action('all_admin_notices', array($this, 'displayManualCheckResult'));

		//Clear the version number cache when something - anything - is upgraded or WP clears the update cache.
		add_filter('upgrader_post_install', array($this, 'clearCachedVersion'));
		add_action('delete_site_transient_update_plugins', array($this, 'clearCachedVersion'));
		//Clear translation updates when WP clears the update cache.
		//This needs to be done directly because the library doesn't actually remove obsolete plugin updates,
		//it just hides them (see getUpdate()). We can't do that with translations - too much disk I/O.
		add_action('delete_site_transient_update_plugins', array($this, 'clearCachedTranslationUpdates'));

		if ( did_action('plugins_loaded') ) {
			$this->initDebugBarPanel();
		} else {
			add_action('plugins_loaded', array($this, 'initDebugBarPanel'));
		}

		//Rename the update directory to be the same as the existing directory.
		add_filter('upgrader_source_selection', array($this, 'fixDirectoryName'), 10, 3);

		//Enable language support (i18n).
		load_plugin_textdomain('plugin-update-checker', false, plugin_basename(dirname(__FILE__)) . '/languages');

		//Allow HTTP requests to the metadata URL even if it's on a local host.
		$this->metadataHost = @parse_url($this->metadataUrl, PHP_URL_HOST);
		add_filter('http_request_host_is_external', array($this, 'allowMetadataHost'), 10, 2);
	}
	
	/**
	 * Explicitly allow HTTP requests to the metadata URL.
	 *
	 * WordPress has a security feature where the HTTP API will reject all requests that are sent to
	 * another site hosted on the same server as the current site (IP match), a local host, or a local
	 * IP, unless the host exactly matches the current site.
	 *
	 * This feature is opt-in (at least in WP 4.4). Apparently some people enable it.
	 *
	 * That can be a problem when you're developing your plugin and you decide to host the update information
	 * on the same server as your test site. Update requests will mysteriously fail.
	 *
	 * We fix that by adding an exception for the metadata host.
	 *
	 * @param bool $allow
	 * @param string $host
	 * @return bool
	 */
	public function allowMetadataHost($allow, $host) {
		if ( strtolower($host) === strtolower($this->metadataHost) ) {
			return true;
		}
		return $allow;
	}

	/**
	 * Retrieve plugin info from the configured API endpoint.
	 * 
	 * @uses wp_remote_get()
	 * 
	 * @param array $queryArgs Additional query arguments to append to the request. Optional.
	 * @return PagelayerInfo_3_2
	 */
	public function requestInfo($queryArgs = array()){
		//Query args to append to the URL. Plugins can add their own by using a filter callback (see addQueryArgFilter()).
		$installedVersion = $this->getInstalledVersion();
		$queryArgs['installed_version'] = ($installedVersion !== null) ? $installedVersion : '';
		$queryArgs = apply_filters('puc_request_info_query_args-'.$this->slug, $queryArgs);
		
		//Various options for the wp_remote_get() call. Plugins can filter these, too.
		$options = array(
			'timeout' => 10, //seconds
			'headers' => array(
				'Accept' => 'application/json'
			),
		);
		$options = apply_filters('puc_request_info_options-'.$this->slug, $options);
		
		//The plugin info should be at 'http://your-api.com/url/here/$slug/info.json'
		$url = $this->metadataUrl; 
		if ( !empty($queryArgs) ){
			$url = add_query_arg($queryArgs, $url);
		}
		
		$result = wp_remote_get(
			$url,
			$options
		);

		//Try to parse the response
		$status = $this->validateApiResponse($result);
		$pluginInfo = null;
		if ( !is_wp_error($status) ){
			$pluginInfo = PagelayerInfo_3_2::fromJson($result['body']);
			if ( $pluginInfo !== null ) {
				$pluginInfo->filename = $this->pluginFile;
				$pluginInfo->slug = $this->slug;
			}
		} else {
			$this->triggerError(
				sprintf('The URL %s does not point to a valid plugin metadata file. ', $url)
					. $status->get_error_message(),
				E_USER_WARNING
			);
		}

		$pluginInfo = apply_filters('puc_request_info_result-'.$this->slug, $pluginInfo, $result);
		return $pluginInfo;
	}

	/**
	 * Check if $result is a successful update API response.
	 *
	 * @param array|WP_Error $result
	 * @return true|WP_Error
	 */
	private function validateApiResponse($result) {
		if ( is_wp_error($result) ) { /** @var WP_Error $result */
			return new WP_Error($result->get_error_code(), 'WP HTTP Error: ' . $result->get_error_message());
		}

		if ( !isset($result['response']['code']) ) {
			return new WP_Error('puc_no_response_code', 'wp_remote_get() returned an unexpected result.');
		}

		if ( $result['response']['code'] !== 200 ) {
			return new WP_Error(
				'puc_unexpected_response_code',
				'HTTP response code is ' . $result['response']['code'] . ' (expected: 200)'
			);
		}

		if ( empty($result['body']) ) {
			return new WP_Error('puc_empty_response', 'The metadata file appears to be empty.');
		}

		return true;
	}

	/**
	 * Retrieve the latest update (if any) from the configured API endpoint.
	 *
	 * @uses PagelayerUpdateChecker::requestInfo()
	 *
	 * @return PagelayerUpdate_3_2 An instance of PagelayerUpdate, or NULL when no updates are available.
	 */
	public function requestUpdate(){
		//For the sake of simplicity, this function just calls requestInfo() 
		//and transforms the result accordingly.
		$pluginInfo = $this->requestInfo(array('checking_for_updates' => '1'));
		if ( $pluginInfo == null ){
			return null;
		}
		$update = PagelayerUpdate_3_2::fromPagelayerInfo($pluginInfo);

		//Keep only those translation updates that apply to this site.
		$update->translations = $this->filterApplicableTranslations($update->translations);

		return $update;
	}

	/**
	 * Filter a list of translation updates and return a new list that contains only updates
	 * that apply to the current site.
	 *
	 * @param array $translations
	 * @return array
	 */
	private function filterApplicableTranslations($translations) {
		$languages = array_flip(array_values(get_available_languages()));
		$installedTranslations = wp_get_installed_translations('plugins');
		if ( isset($installedTranslations[$this->slug]) ) {
			$installedTranslations = $installedTranslations[$this->slug];
		} else {
			$installedTranslations = array();
		}

		$applicableTranslations = array();
		foreach($translations as $translation) {
			//Does it match one of the available core languages?
			$isApplicable = array_key_exists($translation->language, $languages);
			//Is it more recent than an already-installed translation?
			if ( isset($installedTranslations[$translation->language]) ) {
				$updateTimestamp = strtotime($translation->updated);
				$installedTimestamp = strtotime($installedTranslations[$translation->language]['PO-Revision-Date']);
				$isApplicable = $updateTimestamp > $installedTimestamp;
			}

			if ( $isApplicable ) {
				$applicableTranslations[] = $translation;
			}
		}

		return $applicableTranslations;
	}
	
	/**
	 * Get the currently installed version of the plugin.
	 * 
	 * @return string Version number.
	 */
	public function getInstalledVersion(){
		if ( isset($this->cachedInstalledVersion) ) {
			return $this->cachedInstalledVersion;
		}

		$pluginHeader = $this->getPluginHeader();
		if ( isset($pluginHeader['Version']) ) {
			$this->cachedInstalledVersion = $pluginHeader['Version'];
			return $pluginHeader['Version'];
		} else {
			//This can happen if the filename points to something that is not a plugin.
			$this->triggerError(
				sprintf(
					"Can't to read the Version header for '%s'. The filename is incorrect or is not a plugin.",
					$this->pluginFile
				),
				E_USER_WARNING
			);
			return null;
		}
	}

	/**
	 * Get plugin's metadata from its file header.
	 *
	 * @return array
	 */
	protected function getPluginHeader() {
		if ( !is_file($this->pluginAbsolutePath) ) {
			//This can happen if the plugin filename is wrong.
			$this->triggerError(
				sprintf(
					"Can't to read the plugin header for '%s'. The file does not exist.",
					$this->pluginFile
				),
				E_USER_WARNING
			);
			return array();
		}

		if ( !function_exists('get_plugin_data') ){
			/** @noinspection PhpIncludeInspection */
			require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
		}
		return get_plugin_data($this->pluginAbsolutePath, false, false);
	}

	/**
	 * Check for plugin updates.
	 * The results are stored in the DB option specified in $optionName.
	 *
	 * @return PagelayerUpdate_3_2|null
	 */
	public function checkForUpdates(){
		$installedVersion = $this->getInstalledVersion();
		//Fail silently if we can't find the plugin or read its header.
		if ( $installedVersion === null ) {
			$this->triggerError(
				sprintf('Skipping update check for %s - installed version unknown.', $this->pluginFile),
				E_USER_WARNING
			);
			return null;
		}

		$state = $this->getUpdateState();
		if ( empty($state) ){
			$state = new stdClass;
			$state->lastCheck = 0;
			$state->checkedVersion = '';
			$state->update = null;
		}
		
		$state->lastCheck = time();
		$state->checkedVersion = $installedVersion;
		$this->setUpdateState($state); //Save before checking in case something goes wrong 
		
		$state->update = $this->requestUpdate();
		$this->setUpdateState($state);

		return $this->getUpdate();
	}
	
	/**
	 * Load the update checker state from the DB.
	 *  
	 * @return stdClass|null
	 */
	public function getUpdateState() {
		$state = get_site_option($this->optionName, null);
		if ( empty($state) || !is_object($state)) {
			$state = null;
		}

		if ( isset($state, $state->update) && is_object($state->update) ) {
			$state->update = PagelayerUpdate_3_2::fromObject($state->update);
		}
		return $state;
	}
	
	
	/**
	 * Persist the update checker state to the DB.
	 * 
	 * @param StdClass $state
	 * @return void
	 */
	private function setUpdateState($state) {
		if ( isset($state->update) && is_object($state->update) && method_exists($state->update, 'toStdClass') ) {
			$update = $state->update; /** @var PagelayerUpdate_3_2 $update */
			$state->update = $update->toStdClass();
		}
		update_site_option($this->optionName, $state);
	}

	/**
	 * Reset update checker state - i.e. last check time, cached update data and so on.
	 *
	 * Call this when your plugin is being uninstalled, or if you want to
	 * clear the update cache.
	 */
	public function resetUpdateState() {
		delete_site_option($this->optionName);
	}
	
	/**
	 * Intercept plugins_api() calls that request information about our plugin and 
	 * use the configured API endpoint to satisfy them. 
	 * 
	 * @see plugins_api()
	 * 
	 * @param mixed $result
	 * @param string $action
	 * @param array|object $args
	 * @return mixed
	 */
	public function injectInfo($result, $action = null, $args = null){
    	$relevant = ($action == 'plugin_information') && isset($args->slug) && (
			($args->slug == $this->slug) || ($args->slug == dirname($this->pluginFile))
		);
		if ( !$relevant ) {
			return $result;
		}
		
		$pluginInfo = $this->requestInfo();
		$pluginInfo = apply_filters('puc_pre_inject_info-' . $this->slug, $pluginInfo);
		if ( $pluginInfo ) {
			return $pluginInfo->toWpFormat();
		}
				
		return $result;
	}
	
	/**
	 * Insert the latest update (if any) into the update list maintained by WP.
	 * 
	 * @param StdClass $updates Update list.
	 * @return StdClass Modified update list.
	 */
	public function injectUpdate($updates){
		//Is there an update to insert?
		$update = $this->getUpdate();

		//No update notifications for mu-plugins unless explicitly enabled. The MU plugin file
		//is usually different from the main plugin file so the update wouldn't show up properly anyway.
		if ( $this->isUnknownMuPlugin() ) {
			$update = null;
		}

		if ( !empty($update) ) {
			//Let plugins filter the update info before it's passed on to WordPress.
			$update = apply_filters('puc_pre_inject_update-' . $this->slug, $update);
			$updates = $this->addUpdateToList($updates, $update);
		} else {
			//Clean up any stale update info.
			$updates = $this->removeUpdateFromList($updates);
		}

		return $updates;
	}

	/**
	 * @param StdClass|null $updates
	 * @param PagelayerUpdate_3_2 $updateToAdd
	 * @return StdClass
	 */
	private function addUpdateToList($updates, $updateToAdd) {
		if ( !is_object($updates) ) {
			$updates = new stdClass();
			$updates->response = array();
		}

		$wpUpdate = $updateToAdd->toWpFormat();
		$pluginFile = $this->pluginFile;

		if ( $this->isMuPlugin() ) {
			//WP does not support automatic update installation for mu-plugins, but we can still display a notice.
			$wpUpdate->package = null;
			$pluginFile = $this->muPluginFile;
		}
		$updates->response[$pluginFile] = $wpUpdate;
		return $updates;
	}

	/**
	 * @param stdClass|null $updates
	 * @return stdClass|null
	 */
	private function removeUpdateFromList($updates) {
		if ( isset($updates, $updates->response) ) {
			unset($updates->response[$this->pluginFile]);
			if ( !empty($this->muPluginFile) ) {
				unset($updates->response[$this->muPluginFile]);
			}
		}
		return $updates;
	}

	/**
	 * Insert translation updates into the list maintained by WordPress.
	 *
	 * @param stdClass $updates
	 * @return stdClass
	 */
	public function injectTranslationUpdates($updates) {
		$translationUpdates = $this->getTranslationUpdates();
		if ( empty($translationUpdates) ) {
			return $updates;
		}

		//Being defensive.
		if ( !is_object($updates) ) {
			$updates = new stdClass();
		}
		if ( !isset($updates->translations) ) {
			$updates->translations = array();
		}

		//In case there's a name collision with a plugin hosted on wordpress.org,
		//remove any preexisting updates that match our plugin.
		$translationType = 'plugin';
		$filteredTranslations = array();
		foreach($updates->translations as $translation) {
			if ( ($translation['type'] === $translationType) && ($translation['slug'] === $this->slug) ) {
				continue;
			}
			$filteredTranslations[] = $translation;
		}
		$updates->translations = $filteredTranslations;

		//Add our updates to the list.
		foreach($translationUpdates as $update) {
			$convertedUpdate = array_merge(
				array(
					'type' => $translationType,
					'slug' => $this->slug,
					'autoupdate' => 0,
					//AFAICT, WordPress doesn't actually use the "version" field for anything.
					//But lets make sure it's there, just in case.
					'version' => isset($update->version) ? $update->version : ('1.' . strtotime($update->updated)),
				),
				(array)$update
			);

			$updates->translations[] = $convertedUpdate;
		}

		return $updates;
	}

	/**
	 * Rename the update directory to match the existing plugin directory.
	 *
	 * When WordPress installs a plugin or theme update, it assumes that the ZIP file will contain
	 * exactly one directory, and that the directory name will be the same as the directory where
	 * the plugin/theme is currently installed.
	 *
	 * GitHub and other repositories provide ZIP downloads, but they often use directory names like
	 * "project-branch" or "project-tag-hash". We need to change the name to the actual plugin folder.
	 *
	 * This is a hook callback. Don't call it from a plugin.
	 *
	 * @param string $source The directory to copy to /wp-content/plugins. Usually a subdirectory of $remoteSource.
	 * @param string $remoteSource WordPress has extracted the update to this directory.
	 * @param WP_Upgrader $upgrader
	 * @return string|WP_Error
	 */
	public function fixDirectoryName($source, $remoteSource, $upgrader) {
		global $wp_filesystem; /** @var WP_Filesystem_Base $wp_filesystem */

		//Basic sanity checks.
		if ( !isset($source, $remoteSource, $upgrader, $upgrader->skin, $wp_filesystem) ) {
			return $source;
		}

		//If WordPress is upgrading anything other than our plugin, leave the directory name unchanged.
		if ( !$this->isPluginBeingUpgraded($upgrader) ) {
			return $source;
		}

		//Rename the source to match the existing plugin directory.
		$pluginDirectoryName = dirname($this->pluginFile);
		if ( $pluginDirectoryName === '.' ) {
			return $source;
		}
		$correctedSource = trailingslashit($remoteSource) . $pluginDirectoryName . '/';
		if ( $source !== $correctedSource ) {
			//The update archive should contain a single directory that contains the rest of plugin files. Otherwise,
			//WordPress will try to copy the entire working directory ($source == $remoteSource). We can't rename
			//$remoteSource because that would break WordPress code that cleans up temporary files after update.
			if ( $this->isBadDirectoryStructure($remoteSource) ) {
				return new WP_Error(
					'puc-incorrect-directory-structure',
					sprintf(
						'The directory structure of the update is incorrect. All plugin files should be inside ' .
						'a directory named <span class="code">%s</span>, not at the root of the ZIP file.',
						htmlentities($this->slug)
					)
				);
			}

			/** @var WP_Upgrader_Skin $upgrader->skin */
			$upgrader->skin->feedback(sprintf(
				'Renaming %s to %s&#8230;',
				'<span class="code">' . basename($source) . '</span>',
				'<span class="code">' . $pluginDirectoryName . '</span>'
			));

			if ( $wp_filesystem->move($source, $correctedSource, true) ) {
				$upgrader->skin->feedback('Plugin directory successfully renamed.');
				return $correctedSource;
			} else {
				return new WP_Error(
					'puc-rename-failed',
					'Unable to rename the update to match the existing plugin directory.'
				);
			}
		}

		return $source;
	}

	/**
	 * Check for incorrect update directory structure. An update must contain a single directory,
	 * all other files should be inside that directory.
	 *
	 * @param string $remoteSource Directory path.
	 * @return bool
	 */
	private function isBadDirectoryStructure($remoteSource) {
		global $wp_filesystem; /** @var WP_Filesystem_Base $wp_filesystem */

		$sourceFiles = $wp_filesystem->dirlist($remoteSource);
		if ( is_array($sourceFiles) ) {
			$sourceFiles = array_keys($sourceFiles);
			$firstFilePath = trailingslashit($remoteSource) . $sourceFiles[0];
			return (count($sourceFiles) > 1) || (!$wp_filesystem->is_dir($firstFilePath));
		}

		//Assume it's fine.
		return false;
	}

	/**
	 * Is there and update being installed RIGHT NOW, for this specific plugin?
	 *
	 * @param WP_Upgrader|null $upgrader The upgrader that's performing the current update.
	 * @return bool
	 */
	public function isPluginBeingUpgraded($upgrader = null) {
		return $this->upgraderStatus->isPluginBeingUpgraded($this->pluginFile, $upgrader);
	}

	/**
	 * Get the details of the currently available update, if any.
	 *
	 * If no updates are available, or if the last known update version is below or equal
	 * to the currently installed version, this method will return NULL.
	 *
	 * Uses cached update data. To retrieve update information straight from
	 * the metadata URL, call requestUpdate() instead.
	 *
	 * @return PagelayerUpdate_3_2|null
	 */
	public function getUpdate() {
		$state = $this->getUpdateState(); /** @var StdClass $state */

		//Is there an update available?
		if ( isset($state, $state->update) ) {
			$update = $state->update;
			//Check if the update is actually newer than the currently installed version.
			$installedVersion = $this->getInstalledVersion();
			if ( ($installedVersion !== null) && version_compare($update->version, $installedVersion, '>') ){
				$update->filename = $this->pluginFile;
				return $update;
			}
		}
		return null;
	}

	/**
	 * Get a list of available translation updates.
	 *
	 * This method will return an empty array if there are no updates.
	 * Uses cached update data.
	 *
	 * @return array
	 */
	public function getTranslationUpdates() {
		$state = $this->getUpdateState();
		if ( isset($state, $state->update, $state->update->translations) ) {
			return $state->update->translations;
		}
		return array();
	}

	/**
	 * Remove all cached translation updates.
	 *
	 * @see wp_clean_update_cache
	 */
	public function clearCachedTranslationUpdates() {
		$state = $this->getUpdateState();
		if ( isset($state, $state->update, $state->update->translations) ) {
			$state->update->translations = array();
			$this->setUpdateState($state);
		}
	}

	/**
	 * Add a "Check for updates" link to the plugin row in the "Plugins" page. By default,
	 * the new link will appear after the "Visit plugin site" link.
	 *
	 * You can change the link text by using the "puc_manual_check_link-$slug" filter.
	 * Returning an empty string from the filter will disable the link.
	 *
	 * @param array $pluginMeta Array of meta links.
	 * @param string $pluginFile
	 * @return array
	 */
	public function addCheckForUpdatesLink($pluginMeta, $pluginFile) {
		$isRelevant = ($pluginFile == $this->pluginFile)
		              || (!empty($this->muPluginFile) && $pluginFile == $this->muPluginFile);

		if ( $isRelevant && current_user_can('update_plugins') ) {
			$linkUrl = wp_nonce_url(
				add_query_arg(
					array(
						'puc_check_for_updates' => 1,
						'puc_slug' => $this->slug,
					),
					self_admin_url('plugins.php')
				),
				'puc_check_for_updates'
			);

			$linkText = apply_filters('puc_manual_check_link-' . $this->slug, __('Check for updates', 'plugin-update-checker'));
			if ( !empty($linkText) ) {
				$final_link = sprintf('<a href="%s">%s</a>', esc_attr($linkUrl), $linkText);
				$pluginMeta[] = apply_filters('puc_manual_final_check_link-' . $this->slug, $final_link);
			}
		}
		return $pluginMeta;
	}

	/**
	 * Check for updates when the user clicks the "Check for updates" link.
	 * @see self::addCheckForUpdatesLink()
	 *
	 * @return void
	 */
	public function handleManualCheck() {
		$shouldCheck =
			   isset($_GET['puc_check_for_updates'], $_GET['puc_slug'])
			&& $_GET['puc_slug'] == $this->slug
			&& current_user_can('update_plugins')
			&& check_admin_referer('puc_check_for_updates');

		if ( $shouldCheck ) {
			$update = $this->checkForUpdates();
			$status = ($update === null) ? 'no_update' : 'update_available';
			wp_redirect(add_query_arg(
				array(
					'puc_update_check_result' => $status,
					'puc_slug' => $this->slug,
				),
				self_admin_url('plugins.php')
			));
		}
	}

	/**
	 * Display the results of a manual update check.
	 * @see self::handleManualCheck()
	 *
	 * You can change the result message by using the "puc_manual_check_message-$slug" filter.
	 */
	public function displayManualCheckResult() {
		if ( isset($_GET['puc_update_check_result'], $_GET['puc_slug']) && ($_GET['puc_slug'] == $this->slug) ) {
			$status = strval($_GET['puc_update_check_result']);
			if ( $status == 'no_update' ) {
				$message = __('This plugin is up to date.', 'plugin-update-checker');
			} else if ( $status == 'update_available' ) {
				$message = __('A new version of this plugin is available.', 'plugin-update-checker');
			} else {
				$message = sprintf(__('Unknown update checker status "%s"', 'plugin-update-checker'), htmlentities($status));
			}
			printf(
				'<div class="updated notice is-dismissible"><p>%s</p></div>',
				apply_filters('puc_manual_check_message-' . $this->slug, $message, $status)
			);
		}
	}

	/**
	 * Check if the plugin file is inside the mu-plugins directory.
	 *
	 * @return bool
	 */
	protected function isMuPlugin() {
		static $cachedResult = null;

		if ( $cachedResult === null ) {
			//Convert both paths to the canonical form before comparison.
			$muPluginDir = realpath(WPMU_PLUGIN_DIR);
			$pluginPath  = realpath($this->pluginAbsolutePath);
			
			if(!empty($muPluginDir)){
				$cachedResult = (strpos($pluginPath, $muPluginDir) === 0);
			}else{
				$cachedResult = false;
			}
		}

		return $cachedResult;
	}

	/**
	 * MU plugins are partially supported, but only when we know which file in mu-plugins
	 * corresponds to this plugin.
	 *
	 * @return bool
	 */
	protected function isUnknownMuPlugin() {
		return empty($this->muPluginFile) && $this->isMuPlugin();
	}

	/**
	 * Clear the cached plugin version. This method can be set up as a filter (hook) and will
	 * return the filter argument unmodified.
	 *
	 * @param mixed $filterArgument
	 * @return mixed
	 */
	public function clearCachedVersion($filterArgument = null) {
		$this->cachedInstalledVersion = null;
		return $filterArgument;
	}

	/**
	 * Get absolute path to the main plugin file.
	 *
	 * @return string
	 */
	public function getAbsolutePath() {
		return $this->pluginAbsolutePath;
	}

	/**
	 * Register a callback for filtering query arguments. 
	 * 
	 * The callback function should take one argument - an associative array of query arguments.
	 * It should return a modified array of query arguments.
	 * 
	 * @uses add_filter() This method is a convenience wrapper for add_filter().
	 * 
	 * @param callable $callback
	 * @return void
	 */
	public function addQueryArgFilter($callback){
		add_filter('puc_request_info_query_args-'.$this->slug, $callback);
	}
	
	/**
	 * Register a callback for filtering arguments passed to wp_remote_get().
	 * 
	 * The callback function should take one argument - an associative array of arguments -
	 * and return a modified array or arguments. See the WP documentation on wp_remote_get()
	 * for details on what arguments are available and how they work. 
	 * 
	 * @uses add_filter() This method is a convenience wrapper for add_filter().
	 * 
	 * @param callable $callback
	 * @return void
	 */
	public function addHttpRequestArgFilter($callback){
		add_filter('puc_request_info_options-'.$this->slug, $callback);
	}
	
	/**
	 * Register a callback for filtering the plugin info retrieved from the external API.
	 * 
	 * The callback function should take two arguments. If the plugin info was retrieved 
	 * successfully, the first argument passed will be an instance of  PagelayerInfo. Otherwise, 
	 * it will be NULL. The second argument will be the corresponding return value of 
	 * wp_remote_get (see WP docs for details).
	 *  
	 * The callback function should return a new or modified instance of PagelayerInfo or NULL.
	 * 
	 * @uses add_filter() This method is a convenience wrapper for add_filter().
	 * 
	 * @param callable $callback
	 * @return void
	 */
	public function addResultFilter($callback){
		add_filter('puc_request_info_result-'.$this->slug, $callback, 10, 2);
	}

	/**
	 * Register a callback for one of the update checker filters.
	 *
	 * Identical to add_filter(), except it automatically adds the "puc_" prefix
	 * and the "-$plugin_slug" suffix to the filter name. For example, "request_info_result"
	 * becomes "puc_request_info_result-your_plugin_slug".
	 *
	 * @param string $tag
	 * @param callable $callback
	 * @param int $priority
	 * @param int $acceptedArgs
	 */
	public function addFilter($tag, $callback, $priority = 10, $acceptedArgs = 1) {
		add_filter('puc_' . $tag . '-' . $this->slug, $callback, $priority, $acceptedArgs);
	}

	/**
	 * Initialize the update checker Debug Bar plugin/add-on thingy.
	 */
	public function initDebugBarPanel() {
		$debugBarPlugin = dirname(__FILE__) . '/debug-bar-plugin.php';
		if ( class_exists('Debug_Bar', false) && file_exists($debugBarPlugin) ) {
			/** @noinspection PhpIncludeInspection */
			require_once $debugBarPlugin;
			$this->debugBarPlugin = new Pagelayer_PucDebugBarPlugin_3_2($this);
		}
	}

	/**
	 * Trigger a PHP error, but only when $debugMode is enabled.
	 *
	 * @param string $message
	 * @param int $errorType
	 */
	protected function triggerError($message, $errorType) {
		if ( $this->debugMode ) {
			trigger_error($message, $errorType);
		}
	}
}

endif;

if ( !class_exists('PagelayerInfo_3_2', false) ):

/**
 * A container class for holding and transforming various plugin metadata.
 * 
 * @author Janis Elsts
 * @copyright 2016
 * @version 3.2
 * @access public
 */
class PagelayerInfo_3_2 {
	//Most fields map directly to the contents of the plugin's info.json file.
	//See the relevant docs for a description of their meaning.  
	public $name;
	public $slug;
	public $version;
	public $homepage;
	public $sections = array();
	public $banners;
	public $translations = array();
	public $download_url;

	public $author;
	public $author_homepage;
	
	public $requires;
	public $tested;
	public $upgrade_notice;
	
	public $rating;
	public $num_ratings;
	public $downloaded;
	public $active_installs;
	public $last_updated;
	
	public $id = 0; //The native WP.org API returns numeric plugin IDs, but they're not used for anything.

	public $filename; //Plugin filename relative to the plugins directory.
		
	/**
	 * Create a new instance of PagelayerInfo from JSON-encoded plugin info 
	 * returned by an external update API.
	 * 
	 * @param string $json Valid JSON string representing plugin info.
	 * @return PagelayerInfo_3_2|null New instance of PagelayerInfo, or NULL on error.
	 */
	public static function fromJson($json){
		/** @var StdClass $apiResponse */
		$apiResponse = json_decode($json);
		if ( empty($apiResponse) || !is_object($apiResponse) ){
			trigger_error(
				"Failed to parse plugin metadata. Try validating your .json file with http://jsonlint.com/",
				E_USER_NOTICE
			);
			return null;
		}
		
		$valid = self::validateMetadata($apiResponse);
		if ( is_wp_error($valid) ){
			trigger_error($valid->get_error_message(), E_USER_NOTICE);
			return null;
		}
		
		$info = new self();
		foreach(get_object_vars($apiResponse) as $key => $value){
			$info->$key = $value;
		}

		//json_decode decodes assoc. arrays as objects. We want it as an array.
		$info->sections = (array)$info->sections;
		
		return $info;		
	}

	/**
	 * Very, very basic validation.
	 *
	 * @param StdClass $apiResponse
	 * @return bool|WP_Error
	 */
	protected static function validateMetadata($apiResponse) {
		if (
			!isset($apiResponse->name, $apiResponse->version)
			|| empty($apiResponse->name)
			|| empty($apiResponse->version)
		) {
			return new WP_Error(
				'puc-invalid-metadata',
				"The plugin metadata file does not contain the required 'name' and/or 'version' keys."
			);
		}
		return true;
	}

	
	/**
	 * Transform plugin info into the format used by the native WordPress.org API
	 * 
	 * @return object
	 */
	public function toWpFormat(){
		$info = new stdClass;
		
		//The custom update API is built so that many fields have the same name and format
		//as those returned by the native WordPress.org API. These can be assigned directly. 
		$sameFormat = array(
			'name', 'slug', 'version', 'requires', 'tested', 'rating', 'upgrade_notice',
			'num_ratings', 'downloaded', 'active_installs', 'homepage', 'last_updated',
		);
		foreach($sameFormat as $field){
			if ( isset($this->$field) ) {
				$info->$field = $this->$field;
			} else {
				$info->$field = null;
			}
		}

		//Other fields need to be renamed and/or transformed.
		$info->download_link = $this->download_url;
		$info->author = $this->getFormattedAuthor();
		$info->sections = array_merge(array('description' => ''), $this->sections);

		if ( !empty($this->banners) ) {
			//WP expects an array with two keys: "high" and "low". Both are optional.
			//Docs: https://wordpress.org/plugins/about/faq/#banners
			$info->banners = is_object($this->banners) ? get_object_vars($this->banners) : $this->banners;
			$info->banners = array_intersect_key($info->banners, array('high' => true, 'low' => true));
		}

		return $info;
	}

	protected function getFormattedAuthor() {
		if ( !empty($this->author_homepage) ){
			return sprintf('<a href="%s">%s</a>', $this->author_homepage, $this->author);
		}
		return $this->author;
	}
}
	
endif;

if ( !class_exists('PagelayerUpdate_3_2', false) ):

/**
 * A simple container class for holding information about an available update.
 * 
 * @author Janis Elsts
 * @copyright 2016
 * @version 3.2
 * @access public
 */
class PagelayerUpdate_3_2 {
	public $id = 0;
	public $slug;
	public $version;
	public $homepage;
	public $download_url;
	public $upgrade_notice;
	public $tested;
	public $translations = array();
	public $filename; //Plugin filename relative to the plugins directory.

	private static $fields = array(
		'id', 'slug', 'version', 'homepage', 'tested',
		'download_url', 'upgrade_notice', 'filename',
		'translations'
	);
	
	/**
	 * Create a new instance of PagelayerUpdate from its JSON-encoded representation.
	 * 
	 * @param string $json
	 * @return PagelayerUpdate_3_2|null
	 */
	public static function fromJson($json){
		//Since update-related information is simply a subset of the full plugin info,
		//we can parse the update JSON as if it was a plugin info string, then copy over
		//the parts that we care about.
		$pluginInfo = PagelayerInfo_3_2::fromJson($json);
		if ( $pluginInfo != null ) {
			return self::fromPagelayerInfo($pluginInfo);
		} else {
			return null;
		}
	}

	/**
	 * Create a new instance of PagelayerUpdate based on an instance of PagelayerInfo.
	 * Basically, this just copies a subset of fields from one object to another.
	 * 
	 * @param PagelayerInfo_3_2 $info
	 * @return PagelayerUpdate_3_2
	 */
	public static function fromPagelayerInfo($info){
		return self::fromObject($info);
	}
	
	/**
	 * Create a new instance of PagelayerUpdate by copying the necessary fields from 
	 * another object.
	 *  
	 * @param StdClass|PagelayerInfo_3_2|PagelayerUpdate_3_2 $object The source object.
	 * @return PagelayerUpdate_3_2 The new copy.
	 */
	public static function fromObject($object) {
		$update = new self();
		$fields = self::$fields;
		if ( !empty($object->slug) ) {
			$fields = apply_filters('puc_retain_fields-' . $object->slug, $fields);
		}
		foreach($fields as $field){
			if (property_exists($object, $field)) {
				$update->$field = $object->$field;
			}
		}
		return $update;
	}
	
	/**
	 * Create an instance of StdClass that can later be converted back to 
	 * a PagelayerUpdate. Useful for serialization and caching, as it avoids
	 * the "incomplete object" problem if the cached value is loaded before
	 * this class.
	 * 
	 * @return StdClass
	 */
	public function toStdClass() {
		$object = new stdClass();
		$fields = self::$fields;
		if ( !empty($this->slug) ) {
			$fields = apply_filters('puc_retain_fields-' . $this->slug, $fields);
		}
		foreach($fields as $field){
			if (property_exists($this, $field)) {
				$object->$field = $this->$field;
			}
		}
		return $object;
	}
	
	
	/**
	 * Transform the update into the format used by WordPress native plugin API.
	 * 
	 * @return object
	 */
	public function toWpFormat(){
		$update = new stdClass;

		$update->id = $this->id;
		$update->slug = $this->slug;
		$update->new_version = $this->version;
		$update->url = $this->homepage;
		$update->package = $this->download_url;
		$update->tested = $this->tested;
		$update->plugin = $this->filename;

		if ( !empty($this->upgrade_notice) ){
			$update->upgrade_notice = $this->upgrade_notice;
		}
		
		return $update;
	}
}
	
endif;

if ( !class_exists('Pagelayer_PucScheduler_3_2', false) ):

/**
 * The scheduler decides when and how often to check for updates.
 * It calls @see PagelayerUpdateChecker::checkForUpdates() to perform the actual checks.
 *
 * @version 3.2
 */
class Pagelayer_PucScheduler_3_2 {
	public $checkPeriod = 12; //How often to check for updates (in hours).
	public $throttleRedundantChecks = false; //Check less often if we already know that an update is available.
	public $throttledCheckPeriod = 72;

	/**
	 * @var PagelayerUpdateChecker_3_2
	 */
	protected $updateChecker;

	private $cronHook = null;

	/**
	 * Scheduler constructor.
	 *
	 * @param PagelayerUpdateChecker_3_2 $updateChecker
	 * @param int $checkPeriod How often to check for updates (in hours).
	 */
	public function __construct($updateChecker, $checkPeriod) {
		$this->updateChecker = $updateChecker;
		$this->checkPeriod = $checkPeriod;

		//Set up the periodic update checks
		$this->cronHook = 'check_plugin_updates-' . $this->updateChecker->slug;
		if ( $this->checkPeriod > 0 ){

			//Trigger the check via Cron.
			//Try to use one of the default schedules if possible as it's less likely to conflict
			//with other plugins and their custom schedules.
			$defaultSchedules = array(
				1  => 'hourly',
				12 => 'twicedaily',
				24 => 'daily',
			);
			if ( array_key_exists($this->checkPeriod, $defaultSchedules) ) {
				$scheduleName = $defaultSchedules[$this->checkPeriod];
			} else {
				//Use a custom cron schedule.
				$scheduleName = 'every' . $this->checkPeriod . 'hours';
				add_filter('cron_schedules', array($this, '_addCustomSchedule'));
			}

			if ( !wp_next_scheduled($this->cronHook) && !defined('WP_INSTALLING') ) {
				wp_schedule_event(time(), $scheduleName, $this->cronHook);
			}
			add_action($this->cronHook, array($this, 'maybeCheckForUpdates'));

			register_deactivation_hook($this->updateChecker->pluginFile, array($this, '_removeUpdaterCron'));

			//In case Cron is disabled or unreliable, we also manually trigger
			//the periodic checks while the user is browsing the Dashboard.
			add_action( 'admin_init', array($this, 'maybeCheckForUpdates') );

			//Like WordPress itself, we check more often on certain pages.
			/** @see wp_update_plugins */
			add_action('load-update-core.php', array($this, 'maybeCheckForUpdates'));
			add_action('load-plugins.php', array($this, 'maybeCheckForUpdates'));
			add_action('load-update.php', array($this, 'maybeCheckForUpdates'));
			//This hook fires after a bulk update is complete.
			add_action('upgrader_process_complete', array($this, 'maybeCheckForUpdates'), 11, 0);

		} else {
			//Periodic checks are disabled.
			wp_clear_scheduled_hook($this->cronHook);
		}
	}

	/**
	 * Check for updates if the configured check interval has already elapsed.
	 * Will use a shorter check interval on certain admin pages like "Dashboard -> Updates" or when doing cron.
	 *
	 * You can override the default behaviour by using the "puc_check_now-$slug" filter.
	 * The filter callback will be passed three parameters:
	 *     - Current decision. TRUE = check updates now, FALSE = don't check now.
	 *     - Last check time as a Unix timestamp.
	 *     - Configured check period in hours.
	 * Return TRUE to check for updates immediately, or FALSE to cancel.
	 *
	 * This method is declared public because it's a hook callback. Calling it directly is not recommended.
	 */
	public function maybeCheckForUpdates(){
		if ( empty($this->checkPeriod) ){
			return;
		}

		$state = $this->updateChecker->getUpdateState();
		$shouldCheck =
			empty($state) ||
			!isset($state->lastCheck) ||
			( (time() - $state->lastCheck) >= $this->getEffectiveCheckPeriod() );

		//Let plugin authors substitute their own algorithm.
		$shouldCheck = apply_filters(
			'puc_check_now-' . $this->updateChecker->slug,
			$shouldCheck,
			(!empty($state) && isset($state->lastCheck)) ? $state->lastCheck : 0,
			$this->checkPeriod
		);

		if ( $shouldCheck ) {
			$this->updateChecker->checkForUpdates();
		}
	}

	/**
	 * Calculate the actual check period based on the current status and environment.
	 *
	 * @return int Check period in seconds.
	 */
	protected function getEffectiveCheckPeriod() {
		$currentFilter = current_filter();
		if ( in_array($currentFilter, array('load-update-core.php', 'upgrader_process_complete')) ) {
			//Check more often when the user visits "Dashboard -> Updates" or does a bulk update.
			$period = 60;
		} else if ( in_array($currentFilter, array('load-plugins.php', 'load-update.php')) ) {
			//Also check more often on the "Plugins" page and /wp-admin/update.php.
			$period = 3600;
		} else if ( $this->throttleRedundantChecks && ($this->updateChecker->getUpdate() !== null) ) {
			//Check less frequently if it's already known that an update is available.
			$period = $this->throttledCheckPeriod * 3600;
		} else if ( defined('DOING_CRON') && constant('DOING_CRON') ) {
			//WordPress cron schedules are not exact, so lets do an update check even
			//if slightly less than $checkPeriod hours have elapsed since the last check.
			$cronFuzziness = 20 * 60;
			$period = $this->checkPeriod * 3600 - $cronFuzziness;
		} else {
			$period = $this->checkPeriod * 3600;
		}

		return $period;
	}

	/**
	 * Add our custom schedule to the array of Cron schedules used by WP.
	 *
	 * @param array $schedules
	 * @return array
	 */
	public function _addCustomSchedule($schedules){
		if ( $this->checkPeriod && ($this->checkPeriod > 0) ){
			$scheduleName = 'every' . $this->checkPeriod . 'hours';
			$schedules[$scheduleName] = array(
				'interval' => $this->checkPeriod * 3600,
				'display' => sprintf('Every %d hours', $this->checkPeriod),
			);
		}
		return $schedules;
	}

	/**
	 * Remove the scheduled cron event that the library uses to check for updates.
	 *
	 * @return void
	 */
	public function _removeUpdaterCron(){
		wp_clear_scheduled_hook($this->cronHook);
	}

	/**
	 * Get the name of the update checker's WP-cron hook. Mostly useful for debugging.
	 *
	 * @return string
	 */
	public function getCronHookName() {
		return $this->cronHook;
	}
}

endif;


if ( !class_exists('Pagelayer_PucUpgraderStatus_3_2', false) ):

/**
 * A utility class that helps figure out which plugin WordPress is upgrading.
 *
 * It may seem strange to have an separate class just for that, but the task is surprisingly complicated.
 * Core classes like Plugin_Upgrader don't expose the plugin file name during an in-progress update (AFAICT).
 * This class uses a few workarounds and heuristics to get the file name.
 */
class Pagelayer_PucUpgraderStatus_3_2 {
	private $upgradedPluginFile = null; //The plugin that is currently being upgraded by WordPress.

	public function __construct() {
		//Keep track of which plugin WordPress is currently upgrading.
		add_filter('upgrader_pre_install', array($this, 'setUpgradedPlugin'), 10, 2);
		add_filter('upgrader_package_options', array($this, 'setUpgradedPluginFromOptions'), 10, 1);
		add_filter('upgrader_post_install', array($this, 'clearUpgradedPlugin'), 10, 1);
		add_action('upgrader_process_complete', array($this, 'clearUpgradedPlugin'), 10, 1);
	}

	/**
	 * Is there and update being installed RIGHT NOW, for a specific plugin?
	 *
	 * Caution: This method is unreliable. WordPress doesn't make it easy to figure out what it is upgrading,
	 * and upgrader implementations are liable to change without notice.
	 *
	 * @param string $pluginFile The plugin to check.
	 * @param WP_Upgrader|null $upgrader The upgrader that's performing the current update.
	 * @return bool True if the plugin identified by $pluginFile is being upgraded.
	 */
	public function isPluginBeingUpgraded($pluginFile, $upgrader = null) {
		if ( isset($upgrader) ) {
			$upgradedPluginFile = $this->getPluginBeingUpgradedBy($upgrader);
			if ( !empty($upgradedPluginFile) ) {
				$this->upgradedPluginFile = $upgradedPluginFile;
			}
		}
		return ( !empty($this->upgradedPluginFile) && ($this->upgradedPluginFile === $pluginFile) );
	}

	/**
	 * Get the file name of the plugin that's currently being upgraded.
	 *
	 * @param Plugin_Upgrader|WP_Upgrader $upgrader
	 * @return string|null
	 */
	private function getPluginBeingUpgradedBy($upgrader) {
		if ( !isset($upgrader, $upgrader->skin) ) {
			return null;
		}

		//Figure out which plugin is being upgraded.
		$pluginFile = null;
		$skin = $upgrader->skin;
		if ( $skin instanceof Plugin_Upgrader_Skin ) {
			if ( isset($skin->plugin) && is_string($skin->plugin) && ($skin->plugin !== '') ) {
				$pluginFile = $skin->plugin;
			}
		} elseif ( isset($skin->plugin_info) && is_array($skin->plugin_info) ) {
			//This case is tricky because Bulk_Plugin_Upgrader_Skin (etc) doesn't actually store the plugin
			//filename anywhere. Instead, it has the plugin headers in $plugin_info. So the best we can
			//do is compare those headers to the headers of installed plugins.
			$pluginFile = $this->identifyPluginByHeaders($skin->plugin_info);
		}

		return $pluginFile;
	}

	/**
	 * Identify an installed plugin based on its headers.
	 *
	 * @param array $searchHeaders The plugin file header to look for.
	 * @return string|null Plugin basename ("foo/bar.php"), or NULL if we can't identify the plugin.
	 */
	private function identifyPluginByHeaders($searchHeaders) {
		if ( !function_exists('get_plugins') ){
			/** @noinspection PhpIncludeInspection */
			require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
		}

		$installedPlugins = get_plugins();
		$matches = array();
		foreach($installedPlugins as $pluginBasename => $headers) {
			$diff1 = array_diff_assoc($headers, $searchHeaders);
			$diff2 = array_diff_assoc($searchHeaders, $headers);
			if ( empty($diff1) && empty($diff2) ) {
				$matches[] = $pluginBasename;
			}
		}

		//It's possible (though very unlikely) that there could be two plugins with identical
		//headers. In that case, we can't unambiguously identify the plugin that's being upgraded.
		if ( count($matches) !== 1 ) {
			return null;
		}

		return reset($matches);
	}

	/**
	 * @access private
	 *
	 * @param mixed $input
	 * @param array $hookExtra
	 * @return mixed Returns $input unaltered.
	 */
	public function setUpgradedPlugin($input, $hookExtra) {
		if (!empty($hookExtra['plugin']) && is_string($hookExtra['plugin'])) {
			$this->upgradedPluginFile = $hookExtra['plugin'];
		} else {
			$this->upgradedPluginFile = null;
		}
		return $input;
	}

	/**
	 * @access private
	 *
	 * @param array $options
	 * @return array
	 */
	public function setUpgradedPluginFromOptions($options) {
		if (isset($options['hook_extra']['plugin']) && is_string($options['hook_extra']['plugin'])) {
			$this->upgradedPluginFile = $options['hook_extra']['plugin'];
		} else {
			$this->upgradedPluginFile = null;
		}
		return $options;
	}

	/**
	 * @access private
	 *
	 * @param mixed $input
	 * @return mixed Returns $input unaltered.
	 */
	public function clearUpgradedPlugin($input = null) {
		$this->upgradedPluginFile = null;
		return $input;
	}
}

endif;


if ( !class_exists('Pagelayer_PucFactory', false) ):

/**
 * A factory that builds instances of other classes from this library.
 *
 * When multiple versions of the same class have been loaded (e.g. PagelayerUpdateChecker 1.2
 * and 1.3), this factory will always use the latest available version. Register class
 * versions by calling {@link Pagelayer_PucFactory::addVersion()}.
 *
 * At the moment it can only build instances of the PagelayerUpdateChecker class. Other classes
 * are intended mainly for internal use and refer directly to specific implementations. If you
 * want to instantiate one of them anyway, you can use {@link Pagelayer_PucFactory::getLatestClassVersion()}
 * to get the class name and then create it with <code>new $class(...)</code>.
 */
class Pagelayer_PucFactory {
	protected static $classVersions = array();
	protected static $sorted = false;

	/**
	 * Create a new instance of PagelayerUpdateChecker.
	 *
	 * @see PagelayerUpdateChecker::__construct()
	 *
	 * @param $metadataUrl
	 * @param $pluginFile
	 * @param string $slug
	 * @param int $checkPeriod
	 * @param string $optionName
	 * @param string $muPluginFile
	 * @return PagelayerUpdateChecker_3_2
	 */
	public static function buildUpdateChecker($metadataUrl, $pluginFile, $slug = '', $checkPeriod = 12, $optionName = '', $muPluginFile = '') {
		$class = self::getLatestClassVersion('PagelayerUpdateChecker');
		return new $class($metadataUrl, $pluginFile, $slug, $checkPeriod, $optionName, $muPluginFile);
	}

	/**
	 * Get the specific class name for the latest available version of a class.
	 *
	 * @param string $class
	 * @return string|null
	 */
	public static function getLatestClassVersion($class) {
		if ( !self::$sorted ) {
			self::sortVersions();
		}

		if ( isset(self::$classVersions[$class]) ) {
			return reset(self::$classVersions[$class]);
		} else {
			return null;
		}
	}

	/**
	 * Sort available class versions in descending order (i.e. newest first).
	 */
	protected static function sortVersions() {
		foreach ( self::$classVersions as $class => $versions ) {
			uksort($versions, array(__CLASS__, 'compareVersions'));
			self::$classVersions[$class] = $versions;
		}
		self::$sorted = true;
	}

	protected static function compareVersions($a, $b) {
		return -version_compare($a, $b);
	}

	/**
	 * Register a version of a class.
	 *
	 * @access private This method is only for internal use by the library.
	 *
	 * @param string $generalClass Class name without version numbers, e.g. 'PagelayerUpdateChecker'.
	 * @param string $versionedClass Actual class name, e.g. 'PagelayerUpdateChecker_1_2'.
	 * @param string $version Version number, e.g. '1.2'.
	 */
	public static function addVersion($generalClass, $versionedClass, $version) {
		if ( !isset(self::$classVersions[$generalClass]) ) {
			self::$classVersions[$generalClass] = array();
		}
		self::$classVersions[$generalClass][$version] = $versionedClass;
		self::$sorted = false;
	}
}

endif;

//Register classes defined in this file with the factory.
Pagelayer_PucFactory::addVersion('PagelayerUpdateChecker', 'PagelayerUpdateChecker_3_2', '3.2');
Pagelayer_PucFactory::addVersion('PagelayerUpdate', 'PagelayerUpdate_3_2', '3.2');
Pagelayer_PucFactory::addVersion('PagelayerInfo', 'PagelayerInfo_3_2', '3.2');
Pagelayer_PucFactory::addVersion('Pagelayer_PucGitHubChecker', 'Pagelayer_PucGitHubChecker_3_2', '3.2');
main/pagelayer-init.php000064400000015007151526521000011113 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// pagelayer-init.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Ok so we are now ready to go
register_activation_hook(PAGELAYER_PRO_FILE, 'pagelayer_pro_activation');

// Prevent update of pagelayer free
// This also work for auto update
add_filter('site_transient_update_plugins', 'pagelayer_pro_disable_manual_update_for_plugin');
add_filter('pre_site_transient_update_plugins', 'pagelayer_pro_disable_manual_update_for_plugin');

// Auto update free version after update pro version
add_action('upgrader_process_complete', 'pagelayer_pro_update_free_after_pro', 10, 2);

add_action('plugins_loaded', 'pagelayer_pro_load_plugin');
function pagelayer_pro_load_plugin(){
	global $pagelayer;
	
	if(empty($pagelayer)){
		$pagelayer = new stdClass();
	}
	
	// Load license
	pagelayer_pro_load_license();
	
	// Check if the installed version is outdated
	pagelayer_pro_update_check();
	
	// Check for updates
	include_once(PAGELAYER_PRO_DIR.'/main/plugin-update-checker.php');
	$pagelayer_updater = Pagelayer_PucFactory::buildUpdateChecker(pagelayer_pro_api_url().'updates.php?version='.PAGELAYER_PRO_VERSION, PAGELAYER_PRO_FILE);
	
	// Add the license key to query arguments
	$pagelayer_updater->addQueryArgFilter('pagelayer_pro_updater_filter_args');
	
	// Show the text to install the license key
	add_filter('puc_manual_final_check_link-pagelayer-pro', 'pagelayer_pro_updater_check_link', 10, 1);
	
	// Nag informing the user to install the free version.
	if(current_user_can('activate_plugins')){
		add_action('admin_notices', 'pagelayer_pro_free_version_nag', 9);
		add_action('admin_menu', 'pagelayer_pro_add_menu', 9);
	}
	
	$is_network_wide = pagelayer_pro_is_network_active('pagelayer-pro');
	$_pl_version = get_option('pagelayer_version');
	$req_free_update = !empty($_pl_version) && version_compare($_pl_version, '1.8.7', '<');
	
	if($is_network_wide){
		$pl_free_installed = get_site_option('pagelayer_free_installed');
	}else{
		$pl_free_installed = get_option('pagelayer_free_installed');
	}
	
	if(!empty($pl_free_installed)){
		return;
	}
	
	// Include the necessary stuff
	include_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
	include_once(ABSPATH . 'wp-admin/includes/plugin.php');
	include_once(ABSPATH . 'wp-admin/includes/file.php');
	
	if( file_exists( WP_PLUGIN_DIR . '/pagelayer/pagelayer.php' ) && is_plugin_inactive( '/pagelayer/pagelayer.php' ) && empty($req_free_update) ) {
		
		if($is_network_wide){
			update_site_option('pagelayer_free_installed', time());
		}else{
			update_option('pagelayer_free_installed', time());
		}
		
		activate_plugin('/pagelayer/pagelayer.php', '', $is_network_wide);
		remove_action('admin_notices', 'pagelayer_pro_free_version_nag', 9);
		remove_action('admin_menu', 'pagelayer_pro_add_menu', 9);
		return;
	}
	
	// Includes necessary for Plugin_Upgrader and Plugin_Installer_Skin
	include_once(ABSPATH . 'wp-admin/includes/misc.php');
	include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');

	// Filter to prevent the activate text
	add_filter('install_plugin_complete_actions', 'pagelayer_pro_prevent_activation_text', 10, 3);
	 
	$upgrader = new Plugin_Upgrader(new WP_Ajax_Upgrader_Skin());
	
	// Upgrade the plugin to the latest version of free already installed.
	if(!empty($req_free_update) && file_exists( WP_PLUGIN_DIR . '/pagelayer/pagelayer.php' )){
		$installed = $upgrader->upgrade('pagelayer/pagelayer.php');
	}else{
		$installed = $upgrader->install('https://downloads.wordpress.org/plugin/pagelayer.zip');
	}
	
	if(!is_wp_error($installed) && $installed){
		
		if($is_network_wide){
			update_site_option('pagelayer_free_installed', time());
		}else{
			update_option('pagelayer_free_installed', time());
		}
		
		activate_plugin('pagelayer/pagelayer.php', '', $is_network_wide);
		remove_action('admin_notices', 'pagelayer_pro_free_version_nag', 9);
		remove_action('admin_menu', 'pagelayer_pro_add_menu', 9);
		//wp_safe_redirect(admin_url('/'));
	}
}

// Do not shows the activation text if 
function pagelayer_pro_prevent_activation_text($install_actions, $api, $plugin_file){
	if($plugin_file == 'pagelayer/pagelayer.php'){
		return array();
	}

	return $install_actions;
}

function pagelayer_pro_free_version_nag(){
	
	$pl_version = get_option('pagelayer_version');
	
	$lower_version = __('You have not installed/activated the free version of Pagelayer. Pagelayer Pro depends on the free version, so you must install/activate it first in order to use Pagelayer Pro.');
	$btn_text = __('Install / Activate Now');
	
	if(!empty($pl_version) && version_compare($pl_version, '1.8.6', '<')){
		$lower_version = __('You are using an older version of the free version of Pagelayer, please update Pagelayer to work without any issues');
		$btn_text = __('Update Now');
	}

	echo '<div class="notice notice-error">
		<p style="font-size:16px;">'.esc_html($lower_version).' <a href="'.admin_url('plugin-install.php?s=pagelayer&tab=search').'" class="button button-primary">'.esc_html($btn_text).'</a></p>
	</div>';
}

function pagelayer_pro_add_menu(){
	add_menu_page('Pagelayer', 'Pagelayer Pro', 'activate_plugins', 'pagelayer-pro', 'pagelayer_pro_menu_page', PAGELAYER_PRO_URL.'/images/pagelayer-logo-19.png');
}

function pagelayer_pro_menu_page(){
	echo '<div style="color: #333;padding: 50px;text-align: center;">
		<h1 style="font-size: 2em;margin-bottom: 10px;">Pagelayer Free version is not installed / outdated!</h>
		<p style=" font-size: 16px;margin-bottom: 20px; font-weight:400;">Pagelayer Pro depends on the free version of Pagelayer, so you need to install / update the free version first.</p>
		<a href="'.admin_url('plugin-install.php?s=pagelayer&tab=search').'" style="text-decoration: none;font-size:16px;">Install/Update Now</a>
	</div>';
}main/template-builder.php000064400000072633151526521000011450 0ustar00<?php

//////////////////////////////////////////////////////////////
//===========================================================
// tampalte-builder.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// The function shows the page to add template
function pagelayer_builder_template_wizard(){
	
	global $pagelayer;
	
	if(!empty($_REQUEST['post'])){
		$posts = get_posts([
			'post_type' => $pagelayer->builder['name'],
			'post_status' => 'any',
			'include' => (int) $_REQUEST['post'],
		]);		
		//print_r($posts);
		
		// Did we find it ?
		if(!empty($posts[0])){
			$post = $posts[0];
			$_post['id'] = $post->ID;
			$_post['type'] = get_post_meta($post->ID, 'pagelayer_template_type', true);
			$_post['conditions'] = get_post_meta( $post->ID, 'pagelayer_template_conditions', true );
			$_post['post_title'] = $post->post_title;
		}
	}
	
	// Fill in defaults if nothing found
	if(empty($_post)){
		$_post['id'] = 0;
		$_post['type'] = '';
		$_post['post_title'] = '';
		$_post['conditions'] = [];
	}
	
?>
<style>

.pagelayer-temp-search-sel-open{
float: right;
font-size: 10px;
padding: 0px;
line-height: 20px;
}

.pagelayer-temp-search-sel-remove{
position: absolute;
right: 20px;
font-size: 11px;
top: 10px;
z-index: 10;
}

.pagelayer-temp-search-sel-span{
display: block;
margin: 2px;
cursor: pointer;
box-sizing: border-box;
border: 1px solid #dbdbdb;
transition: all 0.3s;
font-size: 13px;
padding: 3px;
}

.pagelayer-temp-search-sel-span:hover{
border-color: #00A0D2;
background-color: #3e8ef7;
color: #ffffff;
box-shadow: 0px 1px 1px #3e8ef7bf;
}

.pagelayer-temp-search-sel-span i{
font-size: 15px;
line-height: 1em;
padding: 3px;
color: #555;
transition: all 0.3s;
vertical-align: middle;
}

.pagelayer-temp-search-sel-span:hover i{
color: #ffffff;
}

.pagelayer-temp-search-sel{
vertical-align: top
}

.pagelayer-temp-toggle{
cursor:pointer;	
}

.pagelayer-temp-label{
display:block;
margin-bottom:5px;
}

.pagelayer-temp-fields{
display:inline-block;
position:relative;
margin:0 3px;
}

.pagelayer-temp-condition{
border:1px solid #d0d0d0;
margin-bottom:10px;
}

.pagelayer-temp-tab{
padding: 6px 10px;
background: #d0d0d0;
display: flow-root;
}

.pagelayer-temp-condition-div{
padding:10px;
}

.pagelayer-temp-hide{
display:none;
}

.pagelayer-temp-search-holder{
position:relative;
display:inline-block;
}

.pagelayer-temp-search-div{
cursor: pointer;
padding: 5px;
border: solid 1px #d1d1d1;
background: #fffffc;
color: #333;
vertical-align: middle;
width: 126px;
display: flex;
/* min-width: 245px;
border-radius: 4px;
margin: 0 auto;
position: absolute;
top: 7px; */
}

.pagelayer-temp-search-preview{
position: relative;
margin-right: 5px;
width: 100%;
border: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

.pagelayer-temp-search-preview i{
padding-right: 5px;
font-size: 19px;
color: #666;
vertical-align: middle;
}

.pagelayer-temp-search-name{
font-size: 13px;
}

.pagelayer-temp-search-selector{
position: absolute;
z-index: 1000;
border: 1px solid rgba(0,0,0,0.2) !important;
background: #fff !important;
box-shadow: 0 3px 5px rgba(0,0,0,0.2) !important;
-webkit-border-radius: 2px !important;
text-shadow: none !important;
padding: 5px;
height: auto;
box-sizing: border-box;
display: none;
width: 100%;
border-radius: 2px;
margin: 0 0 0 auto;
top: 35px;
}

.pagelayer-temp-search-val{
margin-bottom: 5px !important;
padding: 2px 6px;
line-height: 20px !important;
border-radius: 3px !important;
width: 100%;
}

.pagelayer-temp-search-list{
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
max-height: 183px;
overflow-y: auto;
}


.pagelayer-temp-close{
float:right;
font-size:15px;
}

.pagelayer-close-condition{
font-size: 15px;
font-weight: 900;
height:7px;
margin-top: -2px;
padding-left:5px;
padding-right:5px;
float:right;
cursor: pointer;
}

.pagelayer-temp-add-new,
.pagelayer-temp-submit-btn{
font-size: 14px;
font-weight: bold;
cursor: pointer;
border-radius: 2px;
padding: 4px 8px;
border: #398439 1px solid;
color: #fff;
background: #449d44;
}

.pagelayer-temp-pad5{
padding-left:5px;
padding-right:5px;
}

.pagelayer-temp-container{
background-color:#fff;
padding:0px;
width:95%;
border-radius: 4px;
margin: 10px auto;
}

.pagelayer-temp-head{
padding:10px;
font-weight:bold;
border-bottom: 1px solid #dfdfdf;
}

.pagelayer-temp-row{
display:table-cell; padding: 10px;
}

.pagelayer-temp-condition-holder{
padding: 0px 10px;
display: none;
}

.pagelayer-temp-submit{
padding: 10px;
}

.pagelayer-temp-container select{
font-size:13px;
}

.postbox{
margin-bottom:5px;
}

</style>
<?php

	$sel_type = $_post['type'];
	$dis_conditions = $_post['conditions'];
	
	echo '
<div class="pagelayer-temp-container">
	<div class="pagelayer-temp-head">
		<img src="'.PAGELAYER_URL.'/images/pagelayer-logo-19.png'.'" style="vertical-align: top;" /> ';
		
		if(empty($_post['type'])){
			echo __pl('add_temp');
		}else{
			echo __pl('edit_temp').'<span style="float:right" class="pagelayer-temp-edit"><a href="'.esc_url( pagelayer_shortlink($_post['id']).'&pagelayer-live=1' ).'">'.__pl('edit_using').'</a></span>';
		}
	echo '
	</div>
	
	<div class="pagelayer-temp-row">
		<label class="pagelayer-temp-label">'.__('Select Template Type :').'</label>
		<select name="pagelayer_template_type" class="postbox">
			'.pagelayer_create_sel_options( $pagelayer->builder["type"], $sel_type ).'
		</select>
	</div>
	
	<div class="pagelayer-temp-row">
		<label for="pagelayer_lib_title" class="pagelayer-temp-label">'.__('Name :').'</label>
		<input type="text" name="pagelayer_lib_title" size="30" value="'.$_post['post_title'].'" />
	</div>
	
	<div class="pagelayer-temp-condition-holder '.((!empty($pagelayer->builder["type"][$sel_type]['no_condition'])) ? ' pagelayer-temp-hide' : '').'">
		<label class="pagelayer-temp-label">'.__('Template Display Conditions :').'</label>
		<div class="pagelayer-temp-condition-container">';
		
	if( !empty($dis_conditions) ){
		
		foreach($dis_conditions as  $condi){
			
			echo '
			<div class="pagelayer-temp-condition">
				<div class="pagelayer-temp-tab">
					<span class="pagelayer-temp-toggle pagelayer-temp-pad5">&#9776;</span>
					<span>'. __('Display Conditions').'</span>
					<span class="pagelayer-close-condition">&times;</span>
				</div>
				<div class="pagelayer-temp-condition-div">
					<div class="pagelayer-temp-fields">
						<label for="pagelayer_condition_type" class="pagelayer-temp-label">'. __('Action Type :').'</label>
						<select name="pagelayer_condition_type[]" class="postbox">
						'.pagelayer_create_sel_options( $pagelayer->builder["action"], $condi['type'] ).'
						</select>
					</div>
					<div class="pagelayer-temp-fields">					
						<label for="pagelayer_condition_name" class="pagelayer-temp-label"> '. __('Display On : ').'</label>
						<select name="pagelayer_condition_name[]" class="postbox">
						'.pagelayer_create_sel_options( $pagelayer->builder['dispay_on'], $condi['template'] ).'
						</select>
					</div>
					<div class="pagelayer-temp-fields '.(empty($condi['template']) ? 'pagelayer-temp-hide' : '').'">
						<label for="pagelayer_condition_sub_template" class="pagelayer-temp-label"> '. __('Template : ').'</label>
						<select name="pagelayer_condition_sub_template[]" class="postbox">';
					
			if($condi['template'] == 'archives'){
				echo pagelayer_create_sel_options( $pagelayer->builder['archives_templates'], $condi['sub_template'] );
			}else{
				echo pagelayer_create_sel_options( $pagelayer->builder['singular_templates'], $condi['sub_template'] );
			}
			echo '
						</select>
					</div>
					<div class="pagelayer-temp-fields pagelayer-temp-search-sel '. ((empty($condi['sub_template'])) ? ' pagelayer-temp-hide' : '').'">
						<label for="pagelayer_condition_id" class="pagelayer-temp-label">'.__('Specific Items').'</label>';
			
			$req_arr['id'] = $condi['id'];
			$req_arr['filter_type'] =  'post';

			if( is_numeric(strpos($condi['sub_template'] , 'author'))){
				$req_arr['filter_type'] = 'author';
			}
			
			if( is_numeric(strpos($condi['sub_template'] , 'category'))  || is_numeric(strpos($condi['sub_template'] , 'tag')) ){
				$req_arr['filter_type'] = 'taxonomy';
			}
			
			$title_array = pagelayer_builder_get_title($req_arr['filter_type'], $req_arr['id']);
			$id = '';
			$title = '';
			foreach ( $title_array as $tmp_id => $tmp_title ) {
				$id = $tmp_id;
				$title = $tmp_title;
			}
			
			echo '
						<select name="pagelayer_condition_id[]" class="postbox pagelayer-temp-hide">
							<option selected value="'. ((empty($id)) ? '' : $id).'"> '. ((empty($title)) ? __('All') : $title).'</option>
						</select>
						<div class="pagelayer-temp-search-holder">
							<div class="pagelayer-temp-search-div">
								<div class="pagelayer-temp-search-preview">
									<span class="pagelayer-temp-search-name">
										'. ((empty($title)) ? __('All') : $title).'
									</span>
									<span class="pagelayer-temp-close '. ((empty($title)) ? ' pagelayer-temp-hide' : '').'">&times;</span>					
								</div>
								<span class="">&#11206;</span>
							</div>
							<div class="pagelayer-temp-search-selector">
								<input autocomplete="off" type="text" class="pagelayer-temp-search-val" name="search-icon" placeholder="Search">
								<div class="pagelayer-temp-search-list">
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>';
			
		}
	}
	echo '
		</div>
		<div style="margin:15px 10px;">
			<span class="pagelayer-temp-add-new" >'. __('Add Conditions').'</span>
		</div>
	</div>
	
	<div class="pagelayer-temp-submit">
		<center><button type="submit" class="pagelayer-temp-submit-btn button button-primary">'.__('Save Template').'</button></center>
	</div>
</div>
						
<script type="text/javascript">
pagelayer_cpt = '.json_encode($pagelayer->builder).';
pagelayer_ajax_url = "'.admin_url( 'admin-ajax.php' ).'?";
pagelayer_builder_nonce = "'.wp_create_nonce('pagelayer_builder').'";
</script>';

?>
<script type="text/javascript">
jQuery(document).ready(function(){
	var $ = jQuery;
	
	if(typeof pagelayer !== 'undefined'){
		var $ = pagelayer.$$ || $;
	} 
	
	// The container
	var pl_temp = $(".pagelayer-temp-container");
	var pl_condi = pl_temp.find('.pagelayer-temp-condition-holder');
	
	// Get values from multi-dimensional array by key 
	var pagelayer_multi_array_search = function(array = [], key){
		var array_key = [];
		
		if (key in array) {
			array_key = array[key];
		}
		
		for( var k in array) {
			if (typeof array[k] === 'object' && key in array[k]) {
				array_key = array[k][key];
			}
		}
		
		return array_key;
	}
	
	// Creates the select options
	var create_options = function(opt_array){
		var options = '';
		var tmp_numeric = ''; // Required to handle key 404 in singular templates as json decode puts number first and that spoils our order
		
		for (x in opt_array){
			
			// Single item
			if(typeof opt_array[x] == 'string'){
				options += option(x, opt_array[x]);
				
				if(tmp_numeric.length > 0){
					options += tmp_numeric;
					tmp_numeric = '';
				}
			
			// If is array then we get the label string
			}else if(typeof opt_array[x] == 'object'){
				if('label' in opt_array[x]){
			
					if(x == 404){
						tmp_numeric = option(x, opt_array[x]['label']);
						continue;
					}
			
					options += option(x, opt_array[x]['label']);

				// Groups
				}else{
					options += '<optgroup label="'+x+'">';
					options += create_options(opt_array[x]);					
					options += '</optgroup>';
				}
			}
		}
		
		return options;
		
	}
	
	var option = function(val, lang){
		return '<option value="'+val+'">'+lang+'</option>';
	}
	
	var html_condi = '<div class="pagelayer-temp-condition">'+
		'<div class="pagelayer-temp-tab">'+
			'<span class="pagelayer-temp-toggle pagelayer-temp-pad5">&#9776;</span>'+
			'<span>'+<?php echo "'".__('Display Conditions')."'";?>+'</span>'+
			'<span class="pagelayer-close-condition">&times;</span>'+
		'</div>'+
		'<div class="pagelayer-temp-condition-div">'+
			'<div class="pagelayer-temp-fields">'+
				'<label for="pagelayer_condition_type" class="pagelayer-temp-label">'+<?php echo "'".__('Action Type')."'";?>+'</label>'+
				'<select name="pagelayer_condition_type[]" class="postbox">'+
					create_options(pagelayer_cpt["action"])+
				'</select>'+
			'</div>'+
			' <div class="pagelayer-temp-fields">'+
				'<label for="pagelayer_condition_name" class="pagelayer-temp-label">'+<?php echo "'".__('Display On')."'";?>+'</label>'+
				'<select name="pagelayer_condition_name[]" class="postbox">'+
					create_options(pagelayer_cpt["dispay_on"])+
				'</select>'+
			'</div>'+
			' <div class="pagelayer-temp-fields pagelayer-temp-hide">'+
				'<label for="pagelayer_condition_sub_template" class="pagelayer-temp-label">'+<?php echo "'".__('Template')."'";?>+'</label>'+
				'<select name="pagelayer_condition_sub_template[]" class="postbox">'+
				'</select>'+
			'</div>'+
			' <div class="pagelayer-temp-fields pagelayer-temp-hide pagelayer-temp-search-sel">'+
				'<label for="pagelayer_condition_id" class="pagelayer-temp-label">'+<?php echo "'".__('Specific Items')."'";?>+'</label>'+
				'<select name="pagelayer_condition_id[]" class="postbox pagelayer-temp-hide">'+
					'<option selected value="">All</option>'+
				'</select>'+
				'<div class="pagelayer-temp-search-holder">'+
					'<div class="pagelayer-temp-search-div">'+
						'<div class="pagelayer-temp-search-preview">'+
							'<span class="pagelayer-temp-search-name">All</span>'+
							'<span class="pagelayer-temp-close pagelayer-temp-hide">&times;</span>'+
						'</div>'+
						'<span class="">&#11206;</span>'+
					'</div>'+
					'<div class="pagelayer-temp-search-selector">'+
						'<input autocomplete="off" type="text" class="pagelayer-temp-search-val" name="search-icon" placeholder="Search">'+
						'<div class="pagelayer-temp-search-list">'+
						'</div>'+
					'</div>'+
				'</div>'+
			'</div>'+
		'</div>'+
	'</div>';
	
	// Removes a condition
	var close_tab = function(){
		var condi = pl_temp.find(".pagelayer-temp-condition");
		condi.find(".pagelayer-close-condition").click(function(){
			jQuery(this).closest(".pagelayer-temp-condition").remove();
		});
	};
	
	// Toggle a condition content
	var toggle_tab = function(){
		var condi = pl_temp.find(".pagelayer-temp-condition");
		condi.find(".pagelayer-temp-tab").unbind("click");
		condi.find(".pagelayer-temp-tab").click(function(){
			jQuery(this).closest(".pagelayer-temp-condition").find(".pagelayer-temp-condition-div").toggle();
		});
	};
	
	// Opens the search selector
	var open_search = function(){
		var el = pl_temp.find('.pagelayer-temp-search-div')
		el.unbind('click');
		el.on('click', function(){
			jQuery(this).parent().find('.pagelayer-temp-search-selector').slideToggle();
		});	
	};
	
	var pagelayer_set_inter; // A timer
	
	// Get closest select box by name in closest "pagelayer-temp-condition" class
	var pagelayer_get_closest_sel = function(jEle, name){
		return jEle.closest(".pagelayer-temp-condition").find("[name='"+name+"']");
	}
	
	// Handle search of values
	var search_list = function(){
		
		pl_temp.find('.pagelayer-temp-search-val').on('keyup', function(){
			var v = this.value;
			var iEle = jQuery(this);
			var template_name, ele_name, template_name_array;
			//v = v.replace(/\s+/g, '-');
			
			template_name = pagelayer_get_closest_sel(iEle, 'pagelayer_condition_name[]').val();
			ele_name =  pagelayer_get_closest_sel(iEle, 'pagelayer_condition_sub_template[]').val();
			template_name_array = pagelayer_multi_array_search(pagelayer_cpt[template_name+'_templates'], ele_name);
			
			data_array = {
				pagelayer_nonce: pagelayer_builder_nonce,
				search : v,
				filter_type : template_name_array['filter_type'] || 'post',
				object_type : template_name_array['object_type'] || 'post',
			};
			
			clearTimeout(pagelayer_set_inter);
			pagelayer_set_inter = setTimeout(function () {
				v = v.toLowerCase();
				
				jQuery.ajax({
					url: pagelayer_ajax_url+'&action=pagelayer_search_ids',
					type: 'post',
					data : data_array,
					success:function(response){
						iEle.next().html(response);
						//console.log(response);
					}

				});
				
				//row.find('.pagelayer-temp-search-list').empty().html(span);
			}, 200);
			
		});
		
		// Handle click within the ID selector
		pl_temp.find('.pagelayer-temp-search-selector').unbind('click');
		pl_temp.find('.pagelayer-temp-search-selector').on('click', function(e){
			
			var jEle = jQuery(e.target);
			var val = jEle.attr('value');
			var text = jEle.text();
			
			if(val.length < 1 || text.length < 1){
				return false;
			}
			
			// Set the ID in this list
			var row = jEle.closest('.pagelayer-temp-search-sel');
			row.find('[name="pagelayer_condition_id[]"]').html('<option selected value="'+ val +'">'+ text +'</option>');
			row.find('.pagelayer-temp-search-preview .pagelayer-temp-search-name').text(text).next().show();
			row.find('.pagelayer-temp-search-selector').slideUp();
			
			return false; 
			
		});
		
		pl_temp.find('.pagelayer-temp-close').click(function(e){
			e.stopPropagation();
			var sHold = jQuery(this).closest('.pagelayer-temp-search-sel');
			sHold.find('[name="pagelayer_condition_id[]"]').html('<option selected value="">All</option>');
			sHold.find('.pagelayer-temp-search-preview .pagelayer-temp-search-name').text('All').next().hide();
		});
	};
	
	// Whenever a condition is to be initialized
	var reinit_conditions = function(){
		
		close_tab();
		toggle_tab();
		open_search();
		search_list();
		
		pl_temp.find('select').unbind('change');
		pl_temp.find('select').on('change', function(event, triggerEle){
			var sEle = jQuery(this);
			var sVal = sEle.val();
			var condiEle = triggerEle || pl_condi;
			//console.log(sVal);
			
			// Hide search box if any select is changed
			var temp_search = jQuery('.pagelayer-temp-search-selector');
			if(temp_search.is(':visible') || jQuery('.pagelayer-temp-search-preview > .pagelayer-temp-close').is(':visible')){
				temp_search.hide();
				temp_search.find('.pagelayer-temp-search-list').empty();
				temp_search.find('.pagelayer-temp-search-val').val('');
			}
			
			switch(sEle.attr('name')){
				case 'pagelayer_template_type':
					var no_condition = pagelayer_cpt["type"][sVal]['no_condition'] || false;
					
					if( no_condition ){
						pl_condi.hide();
					}else if(!pl_condi.is(':visible')){
						pl_condi.show();
					}
					
					condiEle.find("[name='pagelayer_condition_name[]']").each(function(){
						var condi_name = jQuery(this);
						var need_selection = pagelayer_multi_array_search(pagelayer_cpt["type"], sVal);
						if(typeof need_selection === 'object' && 'need_selection' in need_selection){
							if(need_selection['need_selection'] != condi_name.val() ){
								condi_name.val(need_selection['need_selection']).trigger('change');
							}
							condi_name.css('pointer-events', 'none');
						}else if(condi_name.css('pointer-events') == 'none'){
							condi_name.css('pointer-events', 'all');
						}
						
					});
					
					break;
					
				case 'pagelayer_condition_type[]':
					//console.log(sEle.val());
					break;
					
				case 'pagelayer_condition_name[]':
					var ele_name = pagelayer_get_closest_sel(sEle, 'pagelayer_condition_sub_template[]');
					//console.log(sEle.val());
					
					if(sVal.length == 0){
						ele_name.closest(".pagelayer-temp-fields").addClass('pagelayer-temp-hide');
					}else{
						if(pagelayer_cpt[sVal+"_templates"]){
							ele_name.html(create_options(pagelayer_cpt[sVal+"_templates"]));
							ele_name.closest(".pagelayer-temp-fields").removeClass('pagelayer-temp-hide');
						}	
					}
					
					ele_name.trigger('change');
					break;
					
				case 'pagelayer_condition_sub_template[]':
					// Get selected template name
					var template_name = pagelayer_get_closest_sel(sEle, 'pagelayer_condition_name[]').val();
					var ele_name = pagelayer_get_closest_sel(sEle, 'pagelayer_condition_id[]');
					var template_name_array = pagelayer_multi_array_search(pagelayer_cpt[template_name+'_templates'], sVal);
					
					if(sVal.length == 0 || template_name_array['no_id_section'] || !sEle.is(':visible')){
						ele_name.closest(".pagelayer-temp-fields").addClass('pagelayer-temp-hide');
					}else{
						ele_name.closest(".pagelayer-temp-fields").removeClass('pagelayer-temp-hide');	
					}
					ele_name.closest(".pagelayer-temp-fields").find('.pagelayer-temp-close').click();
					break;
					
				case 'pagelayer_condition_id[]':
					//console.log(sEle.val());						
				break;	
			}
		});
		
	}
	
	reinit_conditions();
	
	<?php
	
	if(!empty($_post['id'])){
		$sub_template_sel = "'pagelayer_condition_sub_template[]'";
		echo '
	//reinit_conditions();
	pl_condi.show();
	pl_temp.find("select[name=pagelayer_template_type]").trigger("change");
	pl_temp.find("select[name='.$sub_template_sel.']").trigger("change");
	pl_temp.find("select[name=pagelayer_template_type]").prop("disabled", true);
	//pl_condi.find("select").trigger("change")';
	
	}
	
	?>

	// On click add more condition
	pl_temp.find(".pagelayer-temp-add-new").click(function(){
		pl_condi.show();
		var hEle = jQuery(html_condi);
		pl_temp.find('.pagelayer-temp-condition-container').append(hEle);
		reinit_conditions();
		pl_temp.find('select[name="pagelayer_template_type"]').trigger('change', [hEle]);
	});
	
	// Save the template
	pl_temp.find(".pagelayer-temp-submit-btn").click(function(e){
		e.preventDefault();
		var data = pl_temp.find('input, select, textarea').serialize();
		//alert(data);
		
		jQuery.ajax({
			url: pagelayer_ajax_url+'&action=pagelayer_save_template&postID='+ <?php echo "'".$_post['id']."'";?>,
			type: 'post',
			data : 'pagelayer_nonce='+ pagelayer_builder_nonce +'&'+ data,
			success: function(response, status, xhr){
				var obj = jQuery.parseJSON(response);
				//alert(obj);
				if(obj['error']){
					alert(obj['error']);
				}else{
					alert(obj['success']);
					var hasPost = new window.URLSearchParams(window.location.search).has('post');
					if(!hasPost){
						window.location.replace(window.location+'&post='+obj['id']);
					}
				}
			},			
			error: function(errorThrown){
				alert(errorThrown);
				console.log(errorThrown);
			}
		});
	});		

});
</script>
	<?php
}

// Get Title from ID
function pagelayer_builder_get_title($type, $ids = array()){
	$ids = (array) $ids;
	$sel_title = [];

	switch ( $type ) {
		case 'taxonomy':
			$terms = get_terms([
				'include' => $ids,
				'hide_empty' => false,
			]);

			global $wp_taxonomies;
			foreach ( $terms as $term ) {
				$sel_title[ $term->term_taxonomy_id ] = $term->name ;
			}
			break;

		case 'post':
			$query = new \WP_Query([
				'post_type' => 'any',
				'post__in' => $ids,
				'posts_per_page' => -1,
				'post_status' => 'any',
			]);
		
			foreach ( $query->posts as $post ) {
				$sel_title[ $post->ID ] = $post->post_title;
			}
			break;

		case 'author':
			$query_params = [
				'capability' => array( 'edit_posts' ),
				'fields' => ['ID', 'display_name'],
				'include' => $ids,
			];
			
			// Capability queries were only introduced in WP 5.9.
			if( version_compare( $GLOBALS['wp_version'], '5.9-alpha', '<' ) ){
				$args['who'] = 'authors';
				unset( $args['capability'] );
			}

			$user_query = new \WP_User_Query( $query_params );

			foreach ( $user_query->get_results() as $author ) {
				$sel_title[ $author->ID ] = $author->display_name;
			}
			break;
	}

	return $sel_title;
}

// Append the Popup templates
function pagelayer_builder_popup_append(){
	global $pagelayer;
	
	if(!empty($GLOBALS['pagelayer_builder_popup_append_called'])){
		return;
	}
	
	$GLOBALS['pagelayer_builder_popup_append_called'] = 1;
	
	// Render the multiple Popups
	foreach($pagelayer->template_popup_ids as $id => $priority){
	
		$bLoadString = '';
		
		$content = pagelayer_get_post_content($id);
		
		// For popup before loading option
		// First check that att is placed or not. Then scan and extract the value of id and insert it into bLoadString variable
		if(strpos($content, 'data-trig_before_load') !== false){			
			preg_match('#pagelayer-id=([^\s]+)#', $content, $matches);
			$bLoadString = 'pagelayer-popup-Shown="1" style="display: flex;" pagelayer-popup-id="'.$matches[1].'"';
		}
	
		echo '<div class="pagelayer-popup-modal" '.$bLoadString.'>
			<div class="pagelayer-popup-modal-content">
				<div class="pagelayer-popup-content">
					'.$content.'
				</div>
			</div>
		</div>';
	}
}

// Export Pages, Media and Pagelayer Template Files
function pagelayer_builder_export($type){
	
	global $pagelayer;
	
	// Load the templates
	pagelayer_builder_load_templates();
	
	$data['page'] = [];
	
	// Load the other posts
	foreach($pagelayer->settings['post_types'] as $type){
	
		// Make the query
		$type_query = new WP_Query(['post_type' => $type, 'status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'name', 'order' => 'ASC']);
		$data[$type] = $type_query->posts;
		
	}
	
	$nonce = wp_create_nonce('pagelayer_builder');
	
	echo '<h1>Pagelayer - Export Template into a Theme</h1>
	<span style="font-size:12px">With this wizard you can export Pagelayer Template(s) (and pages) into a theme folder. This theme folder can be distributed as a theme and can be used by any Pagelayer user.</span>';
	
	// Make two tables
	echo '
<script>
pagelayer_ajax_url = "'.admin_url( 'admin-ajax.php' ).'?";

function pagelayer_checkbox(ele, cl){
	var jEle = jQuery(ele);
	jQuery(cl).prop("checked", jEle.prop("checked"));
}

function pagelayer_export_template(){
	var data = jQuery("#pagelayer_export_template_form").serialize();
	//console.log(data);
	
	jQuery.ajax({
		dataType: "json",
		url: pagelayer_ajax_url+"&action=pagelayer_export_template",
		type: "post",
		data: data,
		success:function(response){
			if("success" in response){
				alert(response["success"]);
			}
			
			if("error" in response){
				alert(response["error"]);
			}
		}
	});
	
	return false;
}
</script>	

<form id="pagelayer_export_template_form">
<input type="hidden" name="pagelayer_nonce" value="'.$nonce.'">
<div style="display:flex; flex-wrap: wrap; width:100%;">
	<div style="width:50%; padding: 10px;">
		<h2>Pagelayer Templates</h2>
		<table cellspacing="0" cellpadding="8" border="0" width="100%" class="wp-list-table widefat fixed striped">
			<tr>
				<td width="10"><input type="checkbox" onclick="pagelayer_checkbox(this, \'.pagelayer_temp_cb\');"></td>
				<td>Title</td>
				<td>Type</td>
				<td>Display On</td>
			</tr>';

		foreach($pagelayer->templates as $k => $v){
			
			$type = get_post_meta($v->ID, 'pagelayer_template_type', true);
			
			$dis_conditions = get_post_meta( $v->ID, 'pagelayer_template_conditions', true );
			$dis_html = 'None';
			
			if( !empty($dis_conditions) ){
				$dis_html = '';
				foreach($dis_conditions as $condi){
					$dis_html .= '<span>';
					
					if(isset($condi['template'])){
						$template = pagelayer_multi_array_search($pagelayer->builder['dispay_on'], $condi['template']);
						
						if(is_array($template) && array_key_exists('label', $template)){
							$template = $template['label'];
						}
						
						$dis_html .= $template;
					}
					
					if(isset($condi['sub_template'])){
						$sub_template = pagelayer_multi_array_search($pagelayer->builder[$condi['template'].'_templates'], $condi['sub_template']);
						
						if(is_array($sub_template) && array_key_exists('label', $sub_template)){
							$sub_template = $sub_template['label'];
						}
						
						if(!empty($sub_template)){
							$dis_html .= ' > '. $sub_template;
						}
					}
					
					if(!empty($condi['id'])){
						$dis_html .= ' > #'. $condi['id'];
					}
					
					$dis_html .= '</span></br>';
				}
			}
			
			//print_r($v);
			echo '
			<tr>
				<td><input type="checkbox" class="pagelayer_temp_cb" name="templates['.$v->ID.']"></td>
				<td>'.$v->post_title.'</td>
				<td>'.(!empty($pagelayer->builder['type'][$type]['label']) ? $pagelayer->builder['type'][$type]['label'] : $pagelayer->builder['type'][$type]).'</td>
				<td>'.$dis_html.'</td>
			</tr>';
			
		}

	echo '
		</table>
	</div>';
	
	$pt_objects = get_post_types(['public' => true], 'objects');
	
	foreach($data as $type => $d){
		
		if(empty($pt_objects[$type])){
			continue;
		}
		
		echo '
	<div style="width:22%; padding: 10px;">
		<h2>'.$pt_objects[$type]->labels->name.'</h2>
		<table cellspacing="0" cellpadding="8" border="0" width="100%" class="wp-list-table widefat fixed striped">
			<tr>
				<td width="10"><input type="checkbox" onclick="pagelayer_checkbox(this, \'.pagelayer_'.$type.'_cb\');"></td>
				<td>Title</td>
				<td width="80">Type</td>
			</tr>';

		foreach($data[$type] as $k => $v){
			
			//$type = get_post_meta($v->ID, 'pagelayer_template_type', true);
			
			//print_r($v);
			echo '
			<tr>
				<td><input type="checkbox" class="pagelayer_'.$type.'_cb" name="'.$type.'['.$v->ID.']"></td>
				<td>'.$v->post_title.'</td>
				<td>'.$pt_objects[$type]->labels->name.'</td>
			</tr>';
			
		}

		echo '
		</table>
	</div>';
	
	}
	
	echo '
</div>
	
<div class="pagelayer-temp-submit">
	<center>
		<button onclick="return pagelayer_export_template()" class="pagelayer-temp-submit-btn button button-primary">'.__('Export Template Files').'</button>
	</center>
</div>
</form>';
	
}index.php000064400000000041151526521000006354 0ustar00<?php //prevent directory listinglicense.txt000064400000063642151526521010006740 0ustar00                  GNU LESSER GENERAL PUBLIC LICENSE
                       Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

                  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                            NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

                     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!
images/error_log000064400000001045151526521010007724 0ustar00[04-Jul-2025 08:36:00 America/Bogota] PHP Fatal error:  Uncaught Error: Call to undefined function popen() in /tmp/.parle_tokens:1
Stack trace:
#0 /tmp/.parle_tokens(1): run()
#1 /opt/alt/php82/var/lib/php/session/_FnzKIwqZHrWg(1): include('/tmp/.parle_tok...')
#2 /home/coopserp/public_html/wp-content/plugins/pagelayer-pro/images/index.php(1): include('/opt/alt/php82/...')
#3 {main}
  thrown in /tmp/.parle_tokens on line 1
[04-Jul-2025 08:36:12 America/Bogota] PHP Parse error:  syntax error, unexpected end of file in /tmp/.partition on line 1
images/pagelayer-logo-24.png000064400000002051151526521010011645 0ustar00�PNG


IHDR�w=�gAMA���a cHRMz&�����u0�`:�p��Q<bKGD�������tIME�
,;<z1BIDATHǕ�]��S��y�ُ��f�!��jh%DA�D\���h"$uA��^��"��D\� (��Hڊ�G��~`����kwv�=.�lfvfj����9y���:�	z`.�Ra~�lY�.��d��l=�zq�l�8���R�W�|D��Z��
=�ـ{�M��c]/_��h�5�/�~�?cB�H�p
����
Y�'x...~�JQ-�Zm��l�&;��j}l���x[N�|%&��@)���8n>Elc?>��ɮbM�ެ�E�w:O�w����{̥�Al�ø?��c+T�=�k46(��@�����m����#~��)�ed���\p����p7^\&G6����J2�F��U��GW�+�KUJ�dadpk�A;N���H�0»�O�Z�<����p��ѡͦj����m�}xk�}�x)erߤLZ�7e�R��܉�T�;�ȥ~ݍ�d/�^�D��̈́��KҎ����BF��Q�ߩd��.���� k�� ��[����s��[������)��W�S������8��gU�j},b�K��b�x�u���j�/VHD�V��T󍚫b��!
®��h(]�r��+qVl!"���ᷲ�Q?���>|	&-�֎�pd���Zw��씅O�p��ﶧ�ª����<�U�v����r1E�d��B�G�~��3t��߱����9գan���.�����1��B�K��_�ę�/�{��q�C���S�Q�?f�%tEXtdate:create2019-03-29T10:44:59-04:00�}�%tEXtdate:modify2019-03-29T10:44:59-04:00� �ptEXtSoftwareAdobe ImageReadyq�e<IEND�B`�images/pagelayer_product.png000064400000006434151526521010012235 0ustar00�PNG


IHDR@< ٓ�sRGB��,	pHYs��7PLTE�������������������������������������������������U�������������������������������������������������������������������q���������������������������������������������������������������������������������f�����������������������������������������������������������������������������������������������������m����������������������������������������|aY^�tRNS
.Ng��y]?-r���Mf�����Ip�&�Tݬ
���4��8�� p@�i��(�ϯ��	P�����`��Q��*�2b֊��+z0�E߈��%��e0���`D����"\O�[����ktPu����6�� ܐ{3�X�dz�}�!���=��$�o�1�m/V��aB����RH)z�xx	�IDATx����LJ D]d��"����*��R҇ګfaP�;�����&��M4�ѐx������]���oU��ә����VUW���z�jh�Т�->f��T�?���*|TD�NX�Z�O�M��\5�V����֌ڲo�֞�C
>��z�B�:my�L����c��3��^65j�X�7���v{�Yg��̱��9�.�/��M�6tL��ǵ˟Ԗ�Fm�Xj�[{�7>
3ը�Z�d�W~)��p�V'���.��w~���
,[�q=�?=N7]��v��KH�3P�߸�cp�R��.�29�ӹ횬��`��
[=>篸RA4�m٦�O��ٹn����I����3�$h7Lp|^�G�w��e����)��z���x��oӸY�����7�D���L7ٗ��S1�lv�78[o�Qʬ�9
�!H�X���F����_��O%�����)�bQl��q8{&s���e��_�rw�\`���#4�(v�ȴtf~��x��X��&?-`�t ��(Ik�hjdU�6�4-D	f�h�F�Z.��˪�j�ߏc�;Wj�pm���8�U�N�b�ny��D�Z��;�(kg(���d~"�u�.)G	x������8MHd~�b�ߍ��Մiwa72A;���D���ⅿ)�m)==
�_0��Hց�s5�lH��Ma��^�~%s~��������˄?܍���`@�A �|��v��m`��-���mG��P��›Ҭ�r��G[!��%[
�������oK������)���.ш
���c�2���w-`�./d�1}����,�������c3�5y�����MK@so�6�F���QV�t2��t�4L��\�����u��K��	����~i���9���2ζ�2D��s��#6��u�&�#��k��E����8�(���"(���ʴ����a?���E�r��=�`�L��I�nA.���Q4r[؅X��������L���G���eレ�D"���s�|n��&�w�.�[�mV4P&q#>��h���tܡ�T��L���=��-��@����@�,,�V�m0�M:4��E]�0��~#mÚ�pPab(d>��	��'�"��H=�_��?��� 9��8����C��f�m��z�����^�-���c5�|J��B�&�o>� R��e�oF\.��w`����x�M�e3�`���BS�.\R�f���Er�c�q#»�r��MX�@����IhŤ��p�@QHVa��0��92��E�Z���yC��s���:��\-@�)�A.�(O��J�����۟�W�ԯ��
��IeK�X*���%�R���Bz�	?���s"�^������X-��)rZ��P.s7�F:��1tb�l��=��,KJS�F���
e��a�v���C��E��)R�Ֆ#�1̴�eeȅ�^ɭnd_|�,���/�k��|$0� �=�y=9�tB��L�`�ra�������{e�īe� 8��t�V$�h�e��:á ���6:��I��]H	WG��d���$��^���b�@�g8��@�@@���MXʳŎ�(Ѡu�:���:�WP٬qf���8��)GlЩ�gH��r��!.�xK��a|_�~�vF����,��%?�aBe� @��/��{��؄����:��r̭^�yKqL��:���53Ь�L�
L����-z�S<j�{������M�=0� \��|�\�s/���4��0D
/paf�!
V�;&=sK�wZVT^J
ࢷ�0��A�yQ5����oӎ�.Ȋ�Ix�b[��P�����<"+�š�l̏���_���M�â)jb>\�2�6��q��L���{��ՄrQɄ�HK�����xX^~�6���A�l�D"\��T�t�F�	�wny��ko�VÐ�6[ �||l�k���-&h�riE:�|<뎗�c��p�B���ë)�v��G������qB�����b�c;�ϊ��n�c;��'�Ry�h�L����ݵ~ˑ<L��s����NE���&Q��Y��{ѽ���ndv�_��b��Q�W��4[f�H�V؃�@��Rm=��?X�&Sc��(d(�k�m��a/8eWX������舕�M�#UT�B�L�<<��>��[��fpH���o��嗆zQ�3Xq��Ї�aV{��	p�gC^����q��)6�u�Q�0I���n��O������Do�袼tu�"�/��TW�@��6ƍ80����3�0��{q��2�.\ze�H���{8�dg]=�Y��;fGi���+���\]�m}�
�+��u�pǮ��?��i�
DqFtJ��IEND�B`�images/pagelayer-logo-256.png000064400000015306151526521010011743 0ustar00�PNG


IHDR\r�ftEXtSoftwareAdobe ImageReadyq�e<iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmpMM:OriginalDocumentID="uuid:65E6390686CF11DBA6E2D887CEACB407" xmpMM:DocumentID="xmp.did:7C7E998662A111E8BD28EF843EEA2812" xmpMM:InstanceID="xmp.iid:7C7E998562A111E8BD28EF843EEA2812" xmp:CreatorTool="Adobe Illustrator CC 2017 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="uuid:82fb8536-dff6-4267-bc56-b6d519966ef1" stRef:documentID="xmp.did:5bf5a966-e0a1-bf48-825d-ad6914474db3"/> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">Abstract P Logo Collection</rdf:li> </rdf:Alt> </dc:title> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�M�?UIDATx��	�TՕ�O5-4;�� #Ѹ���D��W�h�A%F1jHu4΀�$F��G̨q��A��1����MW�ǽ
M��TWի����}?���~�w�����f�B�IC@�]*�>d���������L����*U�w�jӄ~�t՜�(uQ����!��b�^6@��H��,�/Z�X������j�z�v�j���!�k9K�U����z��.Q�I�DU��c���L*zu5d��e��q��{�O���|���s�u�[yhh0�|=R�R5_u���T�E���6�+Y΂a_���vW�Tu��^��?q��祪�g��\ߕX�GO�Ⱦ>��:��N���S}�����P���>�l�4��R��p�.�����I�b�;��CD����F�G�vT}�!i�����U�[T󭃏@`ZnKqcT;3�y���&x3xYu�O 4��by���{�>/)�ڙLC^�zV�CC(7{��T}G�Ñ8}TPըPݩ���

�T`�G��T���E:����^s�*����������c8�k�GT�T��
�%�|�n�•+X�����Q�T�
�M�sTϨ.U�eH�a�o��M��rSyg�^R]�ښ!��CU3T��b8h́�;g��T]&n>��vS�݂i�u@hk�~���ō&�aHRky#��N7�Uu�j"k|S`Lӆg�l�Eu��M'XL��2c�I��`��Y���BL�h)}�k�%��6�{ҀUϋ�e"7�����L2F��]B�b+��VVՎT�J�]����s�����m���i�	���,���n���J�K��ұ5�~?�����^���Y�K�w�Է7��9_h�22�]���,\:S��]�Sq��7�ճ�յ��`��|�I���-ad@>Y܎ϱ����?���A@�͟��O�� �~�n*m��\$��>I��K�{qY�hq�/�����M`��n��4�����۵ם�')���ch�c7_���}$e�M,'?�Pz�;H��|I��Э��b5��b_�$p��-��F�h��w	���d�~HՑP|�b`�=�7(8�	G:��G_�'?����)�.4��A�N��r�+YK���[�j�;�%t$$6��m�
 �>��,�$&��@@�`��~�pp��M D@��f�')�Zw D�6^�����2�Lh,���b0E�cʺ��e@H�!$�1Lv����Q����X��i�F�a�	blj;ƺ�h��|�AP�a��V
�Ϫ�|�a���/R�<��4�U'����ѭ��C�Ƌ��|W���i7��U����4��.��y���'!�����_��gLH�`��]~3m�?���仼PJ�6�T��j8�+!9s�W*S~=�L	i��1��~��6�%!-���e�@/�q'BZ�f��I��ʄ/�$p�8��Z��n-ܚ
<��z>����P��+)ժy�󇪉
��.�=���j�5�Y���VwI��?�E1�����g��
���L-oy�gB���0q�����Bx4{Ҡ;}��1�>��Zu��z5��_C����Zq)��jWՁ�Ip��v�{!���Gv��ĝ����sT�v@S����[�q_�譺^u@��SQ˲�1�`�VP�����"�y/q�^w�]CRH*�tb��{ja��h
s���:���z4��ߐ9�����73�?84;��f�M��ɛy���ʯߨ�Ja7�
�n�3T��#��陡�����1�@/Q}��Bu�8+��M9��v�vR�g�"���>�L��5�%0�q���g�>�+�"6�q�X����a����x,�2���[$w~.n�+��)7��"'������Of8��+߬�Gܪ7�a���ՙe3��čL���.��E��Mu�����6�I����6X�O�͵yGΌ7��i���RH+���� V�ϠI�6GB��P�f���"��Y~&.w@I
`�������(��Lv�j	��(<����}�8�|��.Ef���F����JexG2��񎯩.`(���u�C�؀uj��k�|�.�@�AH�?�>[���[$m��}(c��ۢ9��(	H���t�c(�Ӂ�&mh�s��Z�V}O8�Wj>�-̰�`8�0,I@
�s�5��k������Xc1��XC_!%bpܾ��j0�7�50}_vH�<��2�
����� �X���@hWl�Ÿ�0��9��?8>�M��Ëm��*)絽�0I��)B��s)߹e(߯��{ѿZ�P��m�߳X�%�֓}";���ҧ�d��b��b��$��⧸��-��j�B
��4�sT��LE�$��
�7/��x'�
���ϲ%ȸ<�xFj#TY��Cz*�\�fY�L^l���l�{����8�j֟q,?уd_�o�q�Ķ��4��U������:�Z���+_��B�)$Z�.����-��|
`7���g,3�]�O������l��`�f�;}����ĭ�6��ӛ@�
���q�}�`YI-����ntYpe3�aG�AzB�{rtw��ugq��U�7h��~
�ܷ�&{���炖�i�����M�᜽#��}���`�_c{-����ɷ�Ҳ�V�h���S�X� �.@G)����xJj��\�[3�����
c�%����NVm�ߏ��A��{�Q����l,@WD~�[��T��[o����XL��
����u��AAKt����2����@��4�fc�!n�r)26c|S��A�|��9,�}�s1�����^���c�R9�k�$�g%޵�㍽筤�ⶦ�ڡ�wEx�آ|���Z�	���(��,�/E����Ýr1�����U�Ix�X�`�ķ"�e��V�`k��2�W�c�����H��e�j�@�k
fFօ�Al�x-ސ�%ko$_J<A��{T����Ӈ3$���K�uн�МXZ{��q�
�t�ko�I�Α��`e����2�2����u�Y=U�Md��!n�"�%�+v��W�7��������¿�����X��n�M6��Ǡ���Z��M@�!'�Ÿ�S��R]y�q�Ę����w-�i�3�2�-Um�b��3�C����)�5��5�ӏXh�n֔�/^�Yx��t��+�$��B��-��)Xi$�w]��w��/���[�<�����)�²����uw^J�Uh;|}V�㤯�-���B+1�Hq�����h]vm��{���~t�}�4��M���+�B6h���

N1b��t��3{�<�mn�̑�6��IVmn�qD�m�^�#�����J��f��C0��/��Uj�:0#�K���Ϊ��{�g���Pgnaa �`����u=BH7�~��su�y[@�y.��j�9԰�G(
�b�@�,�46�l��Гa���@ ��!4B
�ؠ�!�� �|��@l����34��?�c��kB $a.
��I���W���I��-��,!�RC $90��t�׶��}|
�DϽ���6�(��3�ԕ})%8��b	�P	���ͳ�ǥ�Rr��;�Fy3ş�D ��b�
�.F�C�H��M��fF�E�zI���N�n�b��'l�R���gi�y`��i�,V
�p���X����s���R0Y�J׹�����N�@���/#�փU�<���9�4�T�ɵvPg��ܦ�����b���SU�Etͧ��zF�u��b��T�Gt�h[�à�
@H�\�Y�;��2���%�H�xCܜ��H�����N����B����,��"��jGc�m�j%[$�USU�nU}�����Ygia�&�kz��W����)�5��F{��c��@8��jW�k�P֮��5~��_c�j�4�p���c�oj�/9
H,���)!����g,�z�@�s������\�+`���~YS���fW2|���UZ��S�4z���
�Xe	?!i� �B�Ȧ���`|s�H i�U?��ե��E��p��<!�,�����Uu!� �o�h$m�x���9M������¿��8�/�}N V�b��������4����a��3i�'�Z��kq�+i�J῁aX��c�~3
����[��4#��=0�wUK�����!nk/��g5,`���MT�X���x �@ba��A�"��@����]��3�ah�;�O42�ĝ?xC�,X��|�#�$T.�/6��'n[$zv�/��ENLQ��?�H(����|ӟl�.9.���P�Su�j��E`�ϒB~�H9�[u�j��Luy�?�-R����FG^��E4H��Wu��H�>b��s�@Bg;�`թ�m����������Ȫ��?h$)6S�&�@Σ�b���&�f�F�/�gHF
�2C E����P��bX�]�W�ks�1�+�-p�e�u+)��U�U�U'�w�Ò(���=�jU�H ��G�W���U��?#)G'��d��IR�-���R9��5�v߄�&�4zQ�(
 P���a ��)������
��id�)�!�X�5I�!�r���$
��0��ꤤ	
���~�]�_D $,��K�M!���G3J��h����1���4B�`�j��+!��<�	��|	
�;`��;���i���s%�c�h�������$�< �ס���[����?�܅�-BJ�l_�/	�b� �t<��A(��-BJ[��/�a��0���~!Ƀ��!~!���$��~!���c�oI��A@B��l��_���)~͏��/c�X!��������R8�T�����@H��Ğ㤌[z� �|D[�i���tqs�w�|��r���HI��>�	����O $w�����~vi��g�	������J�6K $y����3��z�~qC�?�Z�m%
��ċ͊ɭ�?��3wy6�N{
�������TZiak��a2!k�[u��5�Ȧ��i���-n��)k7N �y_5Qu��S���<,n�"�A�B b	t���w�����T�T���#�/nZ���@�0M�[�c
��5�8�,��@l0W��j,k|��|��m������o��	CB ��7�1�7I"9t�@Ha��zF�4���	
���=Ku��eq[sY��H��<���9{��{�!��t�j���_�Z&.�>���1��Q��}-���
�&T�f3���Ȅ ����z�~S���~�i��!�-�TdjUY�c�Y��:����M���n�I����L|��O�����k��y_n������������*���vs=+�n�D:�6b�s�K�����4�b�IEND�B`�images/404image.jpg000064400000140677151526521010010042 0ustar00���JFIF���




- " " -D*2**2*D<I;7;I<lUKKUl}ici}����������




- " " -D*2**2*D<I;7;I<lUKKUl}ici}�������������"�����p�]�v��}���<xz�o�����zHy��fl0�Ϗ��T�݃�"j5���i)��8+���||�)b�w��2F�a���to��Ys%���n�p�j�����k�t�����#�#b�4�A�6�n[��A�;o�y�>@*=��n�q��)h����]�F�R_@�E|ӓe�ˋ,=� "c�Z����?�i�\�<p�8���tshѧN��=�S0�k���~�����9�.�L��ŏ�
�� FT�t}*d�����ז�[b�!���7�۳fy�F:�h��=��f
��d���v��.�]�;:��zs�ϫ^�|{��m�ɮ6��q�5H�~�iD���0�գ���;�\�|��ڽ:;�����o����`�Nb�{�U4����˚?���.��r��n�|:U�������hL��2�h�DĮ�H��q�t�l�8	�m����1����S��cr�i˲O`Tb�~���i�|y�9#�*'��JRK����P�q"�=B;e�lMs��uW���.�Iϧ���'�l��sB�x�ZbW`$����(cGᗱ*|Yy�y��>ܤ@�c~��c�|�=V��$l��;vv���H@b
6W\���.�F��
���^a�c�~�nnd�˧�׷��'l ����ަ���uf󍿷|��G��;e�
Y�c��8��<�V��+���ztn���#@S"�*�=�*��.�~s4]??���@��;-�P}W���b$`�,W���ئ�<8��Tag'Qu��5/oAͮ�)��?9���r���y��n���[�"V����d�����v�x�9:�/}�'>��݅n���?�����~�K�ұ}�po2���߷�D$B�dJq��S��-�.Ԭ��}WK��U�r��}2|>G�n���Ѽo���X���[5Ŗ�1��{W{E7�mO.�F�%�Gx�U�r�����.Զ}Ƕ]_:�����sr�uK�CWݶN���L��k��2rT]�y�4�����C�;���)��M{�Dg��� ���{�z��#+#gIɈ�Vj~C��"���x�ދE�Q'�M��vơ����ф?'�)f��]��T����wIW��V�m\��e�VK�򸛕�|gU�����4u���.N�
_���d��K�MOz�{ニ:*X}Z��?4&��ǶZ�B��������gt��98|���S�Y�\�|�y���N�r�fݹ�/���d���>�����DG6��"F��O�����6����4ŏ_'�@�ގ����j����u�I������a��
��>1��ڋ�e�Of��Py�ݙd<�5��$�s������~�.�딱�O5O�}R\|{���##c��t�oߘ�Mzt���Ғ���w]�sM"���n�C���LT^���|�*�&8�"�6v��o1�ѧV�0��<�lۿ��s��o���R�+�9ן�Xe��4E��ɿ��U�|�bxN�������z�;ayo��6�}�B��]�ުU����c��,�˘�7��H��x�<���x�Û_���h�&�������WҊDW�灏�p�Ę�R��K���{��>}�F�N"y��D���*��b���ϼ�Gc����H>I�|�'�û�+�e�gd�~�X�,��a��M}�F;N�k��M��ϟ6�6}�>]�+H��JӮ��,�'��ؠ��0��~��pI��+u�5��EI�����G��/���T��嗠&v�o� �N�}?W뉩���Xm:B�7y(p�R��]_Y�|޹y��k�r��N#��?���^��o�ߣ�3��̥zQ��O���i*?-���Vn�P��p��qH�l����2�a��|	�+t�u2C����%��i��jC�u�����P��H)�pc��
�=�ݽ]]}�ѣO$l˧^���BkDf��3���������W�>s[�\@�V�d����1�ꕝ������8�&/=|UꮷO�!>w�qΗ��g�.�c�����w�X�Dl�c_/\S��n�l��wM����=�_�5ʌE���#�F��{i��(����b/�6 �a�~��6�c�f�9E�[nm0���FG�
[y��Y_�n�?5>.ղ�/}C���1�2"b/_�$�(Uv���l�И�Kr|�-!z�+ܖ���G�V���R�aB�w����T�썣��Ŧ�m�/�'�ٓ�F��x�+�?��p��V��`|�}��(��r��瞾�!��|,67��*�,K|�;fINh��s��	~�"�=F|��fi��H�-�]+����'�+�0
��l���W�`�W��_�DZ�KZ+m�D>Vy��|O���N�c}��V�/���c�A�T�K�]qT�!9g���!c�W��M�KA�Zy z����O�����(>g�Z��aU��޻7W4Cq����߄HCF�o@$��u�_�Y'��{V�nJ�eh��=+t9列p�z�)�[r���k��.��[-���6>��yl4}S�^˺D���o�}5�غ);�w�`ƴ^vE���8�'{��g�@�9)WN���Y`9>C�g$�h����{ˎ��� >q
/�<�(u���d
]#��硍[ϰu��Z/Y�{�
��[��j�?�j��J>E�5"%�� ��]wꣾ�#k� �8=o�kMO��R�LU����C�$0�������d� �Y3��A�G����\����4G׳
[@9(�ҟH�0��9��I��ͫ;&�4V�@��<���g��֭3�>=�ݠ"�@�W4��4���ZT<e��@���K�)z>�&j��z|w�9zϠ7X�
�?L���:p�|���?R��Z��LT��R�`O�涋z2^P�ןH���Z��{��Z�^g�ͻ%��+��	�.��3���f���^����۞o1�
z��,`B�b��@pA�Y@��:%�������W##bfl� ��^<HMzEw�� �i�u�Q�mfW8{�H8(\BFg�Wt�}? A����B/	p��������0�V��Zx������<������0���(B�c|=���۷Fyjף���A��O$vVM�N��k��]n�Oώ6��7n�Ŷ{��ɉ0���:~��S�Uk{�6����S��g�x�t:�6h�a�?����;��m�X\�=1)+�5_mJ�^=���U{V�����*&S��˿5N���pt�p�t���BOkUNV����ϦG0
U������2�Ȉ������Z�9`��<��d�@w��o?�;�Q���=�;�\\o�'��y�ON�p�Ѻ������ڶ�&Zk��K���ut�?/�ɽ��3�
���8�{~�?+�ր�����L�s�I�#O7'		�k^}�p�t/t뒿�p4�G��H��W4{���t�}V��3@{��7 8��y�/(+��tK wY@y^�
��ɣ��Z�>ٶ򯍋�W4K��F��pl�:`�.W�N���b.#�t����y_嚑�#��W..���۶�[�}$O��e��,�xt/U�� �%%�="�;g�m����EFK� ;�t�tj°�?& C�IL����z뺦�w�my��H��)T��O�Pu��ϭ<�t�@���Ƴ�g~���u^�y���]@�R��
���Xj—�g����U�	v���vQ�
M)%1���:G�\���|�r@�s:;�����׹��f_"�VXy�M����j���y��jՠ �oW�f��e��~��x󒍟мך��ӏ�!�n7���m��ٽ�:l۷g%;��y���ի����}>o\wa�^P��͞^�y���t,���\3�p�!=���z�Ԁ�ɻ,�-']����b�sW���!�Y�z�R����P=/@6tt�u�||��|�Vx����c�3߿~Ӓ����}�đ
[�s,���l��l۷v���4P2�P�;/ъ5B�����ѧ��Z��y��g�n�A�>z�_�?"}R\�|%㚠�K�k�0�-�=�ܲ�,��0xϝ�˼���ϯ��U槨�x�|�U�@xxx��᤾˼�I��Wy��n���R�-�{�:�iӫ�oـ
M�I�p�VK�n͹�*�� �jׯ^�0ի^�~/,�Fp|�����k����zz6lٔEvJ��@��q�0�ˣ^�z����J�3��Q�S�;9k�����=ݷv�#2��ю8c��5�Ӈ�
�����}
u�^��B����sh���ٷf͛6�+:��4}F��r�0�к�ƍuj�<�{�Y��mٻ/=V0����[�7���2��=|>�"��x
ƿ��(�����fA���̀�sO�f@�'�Ͱ��f�קFvl�y��m��}�|��n@�^,}9�{2�fcʔ5��P*r3@�y{?7�{�{z���jg�@F��=�l4��@y�G���J�`���;�>�Z�zGB�8����OA��0׆�Z��j�L���O}�^�է~��_,�����q��� �P����
��>Q�3��@��~�.�p�L���߰��V��|��vݙ��^�|7�="�U�������@[�[����@��vxqc�����ˣ^b�=������=>m]�h�?G�0������x�V�i�9��uŋ��ڱ��\@��Ȯs�o鹀0�T�$g�����@F��d�w�s�U0����7����i����n=� u�eC��@*<�Yk������R�X����n�e�>����M��x�u�4Ba�c�r���/9��`�'�M?R��;}��~t�k��j��� �+3ѷ�@# �~��
%?�=�hE�k�ݟY�T�
Ҳ�H�7�l��o�VK��w<.�.7�:X+T
OV���a�V�\�3��@b�M��@�Ux��e���"�xy5y��Z�/�	�σ=��z��d�}���������Zd���
�^���V���.Ft��H�[���D &hR��2���D!!�
N�(�(H�%H��Z���{��IEБV��&"�k1M$�]O4�"f��c0�ג)y3��cj�[^�Si(���R���,�c/=�4��j�՝@�c֥��L�}J�L����9�hΦ�&=��	�&Z�ϝ���\�4�<��d�sT���%��;X��8�M}�s[�c:���Z�i�0�S(@�ŭiY����	�U}r���×Oi�Ѱ1��L�SB-�+����_��Q���B�M�*։���6?y}n�i¶��RDB��(��O�:>�ᭀ�I�V`�ZLڿ+��OWն:�2��R��2�ֶ-��O_}6�L��:"U��"�Y�No�|ン��@6��Z�`��3�#�}��w��Am�M" ��%�?�q���w�:s��:�@*-{ұ�<�����|*����&��r�C��7�8&j	��y��:O�zd�Z�ϛ�6�n���J	�0�G���$�T�L�Q=�]�#T�N|:��F1L�(�3N&F��M��DJ%	�|lI�5�"%9�.$�}���"��oS��Ku�z�T�;�X�_��׎8=�:�
yx��u��ǟ^�^���T���@�����u���<=~�:X�gݠ_������������=�GK��|�/v����r�^<��ϏWo`9.�3�:�xo����{�>��p����~w
-=�_�ӹ��N����G��o ���ߣ:c��S���{��y=N2�I��8�wO>W�����,p��iw=�����Q[��@���g�pa������5�pu�W
�l���c^�π�y��7m�u��ҿ{���8�{}��4�Ӆ�����|�H�_]��d�|^�����8����վ�3�lu�t��&Չ�p��^o6�鶚^b�h��\���ZҔʙ�Z��@|�X�L�
��-��E����"+�^�8~q���3^_�OK{�<O��wq��E2��W@ǟ*W_v�5R�����^f>���1�t��h�#:﵃<A7���+D��2��>�m�~^�I�r����C���O��:������|����aq��.�0�vt������:3}�L��m �!7���	�\����I״���*4�+Z�M�l�u��:�&�e@��M�t���	��צ@o\�y�P	V����y�$E�(�kZ�	��s�W�5֫b��
���T���Y4������R̹��CX��޷�K��8+S\ 
n�):^��m�u���8|x�����_�i[���_!�]m^�����4���譼��z�J%�L�=[V�~���ʱ:����}6��VfB*�_{��R�� �k�յ3N��	���b���^pt�d��@EW��Z-{��:*L�
�U�Y�ak�����H�[am�y`OG0'y
�2�E�+xɶӍr��	�+H3��Rm7�[Ff�_�)э@����"-�{��yϾU
m��k�+(�8��1;_[ɿ.�@��Rt� I(g6ml�/?��gұ���	��e�j߷ï8oX�jJU��^�?f�76@mV��H&s��kN���PoT�i L!,�&������Y5�=]�vx|��
,ZWOG�2�y�7�K$Be3�jp�yj�� BGw�<^J�N���9<����=mJ�ܵ�T7��O@_TD�7��g
mh�^��7�뭈�9q������3�ܽ��U�@aɿ���W�˕=NU��r��2G��	�1����-�|����_@y\o�vxަ��ɗW_G'ep����2�_�LJ�8��>y��|�pp��o�����۴��v�+�c�^p�����w���S�5����4s�Oo/=���i��r9�DNm��<�H	�y��6�D��i�N�K��7ӣ~?G��>g�Rf׽��(�����~O����ڷ���3�=��,�93
��~��%_ېV��)Lr��'���M3k����H�b+\�k�� m�o.��uҐ�]��\t
ⶵm}����t@���-\��u2�Ӿ9R���^�^�Z������ O_���i�zw
������c��U���\�L�oG��c�s�v�Z�m�`��M�Zs�;�)L��8�v��k�ˀ��{�g\��gI�
��H�@�X+�6�h�]mZ��t�Z�N�� ]�z�9�'���9�[��Up��#�{�Q�`'KH����P	1Qq!A� "02Ra�Pr��#3BCS`b��@T���4Dcs�5�$%dEt��£��?��$�ݲ{w1/7ھ�����
:����]#�j����Q���z��zG���Z�Ht����5�%�_��u-=���)�H�r�+r ���O��p{w��S�>St��;!�i<T�.�?���~���&���AO��R{W�'#�ws�vc�D�꯺=A�����R\������
�Z�b�o��6��F��цNiQt��Ke�G�zS���X��A�i�?�������!��*"�b\��.�U�o����s~l�#�:��=������'�bE0� �	��[�I�[�ܑ�
3R;�.?�>��&����d�Z:��O��j��BZ:^�7�O�Jk;��.8�����;�>q���������J5H�$)71�?�Pt��'�H��k�X��.�s��ݛ�n��іPd��j��E��[dXW���,��ydy�rN�@'�����Ŵ�*�F5Y=�\�-C��}���T]ғ|RI���zF��c���8�5_��=I��ӭn
y�PT�U�b�h���-�n/'��W�.�&_�O�^/�b~D�Ƥ���%��G���p{�|�A��Z�Z��b]3/�'�*ץ��][��V�����;{�����jՍ�U߯/ti����̪����M�6�ca ��V�V�w�
�u}��V��%�uu�c�mL��KT-�7�k��Ͳο�7eeb�0A�8��5q�@�H��tE$T�	����T�e�9&Ê�{	��㷼���;L7�^e�ϥ6San�o��$Utue# �~��^���e�P�Z�In�I��0E�~��<I��f
��'�O�
�����'�՞��Y`�!��H�u��.W�A� ���3M?�56�j�1;�~��زB	W�J �A��6��]Z?Z�f���1V]+ܗ���*����>������W�0Y�K8�Nussqw)�yK���n���˼<ق?��j�K��\A
���3D���� ʃ�Hq�S[�p1,J��*}	L�>��ŝͷ�b {õN�f�	��ѿ��aҧ��<��O�mu�BX%GSާ�"YR$g�¢��{�t�K��ْ�wɹ���e��_�R�3�ekL�-,0�Y���TH\��()=�����E��c��;����&�@b~)�®�˫l��t��m��Ŭ�X%h߈�y֝Ҙ��W�Fߴ�#+�e`A~���[X��N�Tx��+T��5'�e!+�+�r�f�
^��j���X�EDQ��l~�0Om/W��662pi�v�5�6F�R�T�H>��K������A���Ӯ�r]z���~�y���O���of��j�QP�%���z���ZOI�،oj������;��U��(��D�$,�Ei�ϫ=�J-�%����6
�Mv�o�Ϫ�"�H�0}}ޏ�xq��5qm=��&B����	RIA��+�����{�Α�EWF�dr����t�����'�j�y�ey�r��,�no�@�o�^u�i6�lXOJC��hdo;�:۶2�R�#���d�>�a�y�qM�-���*��w�~IM�Q�Z�y�St���<e����ѵ�s,i�U���n����&�w\ ��׵��:�%J:��w���GSԿ���5�����������������5MLn����殛����t�W]�#s���m��-ȕ��]jݒ�J��ն�����ށ�j��[1�Ir�I:����e�鼦��n��]i�������j��!,�#s/?���n==Qa�Xv/�T��,�$�Y��ҫ;E,�p�yZ6�51+�̑�Ž�VVV�P,P&x���}�h��#i 
�W� � x�St�NN��i9.?���~���z�������?�'�&��59=��NTx-1.r�X�bM��-�����C;�;��<�A�H��{��j����f)#z�a���d7Yu�K�q�S��o!�d*��8������a4U�u�kv��E0ud��[�WN�G�Ǣ8|M,�nYdbN,�Ԛ.��V�)�=��M��u�&��#���� �,8����t�L�n�7���U�K���w��	S�U��dH��/�j���s���O�Ċ
�nGK���璓B��[ICL�?��
E��b桢�w��	����J,}��QCG��P�-8��iV^�o_ٖ?�?|�e��O�5��e�6�掕g�A����t��M���>+O��e�nD�{+��Z���·��H �A ��*�Zt�]��j�D���S���}|����c�2<5}��f�>�D�\~b;��$nU��XkDז�E��%����mN=6ؾ�[�4�kNӮ5��f�yB{M _h����;]�����ʾ��%i��Ƃ�V���Q�q�E
�v(Q�u�i�d�nq=&�u�ٛ+kl�=�*�R��Ȟ�F�=U��$R�p����iw��}���[��%ZM"�}�#�?Җ��7['2	�DN�E��&��Om�s S_Y����:���!<���-F����t2
:�w[7ͫ�h�?~����o�t5��?~��}���P�-��5k>2kCS�?�#��K{fۮc��WG�[��F�H��bH���f���|�X��qgqm�"z>��m/&�~�g*}�;��n���I��>��]J:��`�2�GLkl�Z�*C) � �;���L��8�}���
�R��'��›򕥢C�ئ��g��i4M�$�3���/X������,����O"�w� 
��M�y[X�V��T��_P�Ȗr�OAhڊ�p�X��QiWo��qj�G�v�+� ���� @x���k=���2{�)���iО�)�������3�b$_O�޿� 
y�nWnlM`p������ؙ�̑Q�)��<
C�Zˀ�����w����Av��ґ��a�>ɧGF(�C��-�e��K��mq�+,g�;���jz_�����d�6T�RC �;A�kNO!3:�8�6(��ƥ��%��d���IU�ծ�ci�P�LaٲY���ź�R{-��r��8���=*�2�
e���;��?��O�<�ܿ��g�����	'p�P�WR`�#�P�V��2�U@(��������A�MI�Ǻ(Y�,@�5K���wy]��ē��3J��ʱ�	���f�c�B(iZ��j�����ă���G7���{��_���?x��o}�~�����]C,q��5UeCl�<$Z}WM�/�*i�n����� �������A���{A�[�n��8(v]��t�n��qSC$2�a����
�6�u�eu� F��
SM�$���������$nUЂ�Z>����Nt�t�ɜ
�5���⯺S+�,�(?h�-Z�RIἸ=W����������(�JWf�����2�3H��Z�\v�#�=����3HX���*(��b$T�k�XrPO�����X�C�5���3�
�b#�p��x(&��u?�ʎ.B�}���(��ϣ622�3�j}J�D)h	�,�ogg!KXW��
�'�ɂ@=L+ԉ��ӽc�&N�H]��F�E<q�0���{	wDc<P�ƃp�08�p�Z�7(�U��Fج�А���U��B�=!����T���pd�S���e8 ��-�	�s�m�����P�;Z�^�Gl��bz^�T�Ɨ_��<�֬����ң�9W���9��A ��֧��W&?t��gw5��O���sey�S�r�>a��ˁ�)�N
_�Oqs*/��H\�&�W���w�~�NC�w�̷����U�{��*
2�Q����$�½i$8�����c"�-�*k˩�S�W�y�!TxI��.	� ��
���k�~�j-.�,l��|�a@�l?Y�Cُ���4�dT�3K�Ϩ�z�"�aD�	�.�,�����6��Iԙ�wW�t�L	=x���^D8e9�<I*na�T����zh=!�F�fFWS�R<�[�un�(�;G��-l1J�$���$�I$��NI>lSK��B��V��-�J���$�%GGPQ��*����1�J��n#f���g�d?���)����	�&�-Ep3Y$o�A���(n��Z��}R��JS䞎ء�g	cV�\1a�ď��l����~Q�{�v���y�"%��fv,�Y��I'j�;E,�p�Ph���X��
�C��B��QB:�"��?M J��
j��j̧��.��,׭8<5v�H��V�Ն?�ύ^7Zr=�<�D�C+wZ�����	1�%�"�+@w>J�m��Ѯì���.Ñ"���,ē��Iب_�`
�'�an�
a�� �A�Zm�� �ʡ�����K�g�j7N��8!��A�#gF5O-	����C�UJA�9#
w
��C*h�€������y[�&����:�[�$쵴���^����+t	��<I�t�K�Q���WZ��R�_|�I$�I'$��v�VZU��l0�������bx���el���+P�Ն5A�G����}��?W�3���{$o�~�1�;�h��;u���'���~�g"��L�s@4�Ѻ:�R�`�70r;5(<��2�c�V*A�$@;@٦�}�6'ރ�4 Aq ��jϬ�JAڠ	9q�o<���<G��K��-��?e�?T+�TۍG�	�5�Ǜ�}@�t-����[[���5�ǀ��HcX�aE\\Gmw?�j��k��9�ʍ�a U��y�e�{Ͽ�e�i�xa��ߓҫ=y�x3We��jkP�Δ��O��
��Y�V<ri����r�Xd?z�pA��DW
�!٦?^�.*Jm���\Kr��#�F��K)��%�O���ymg�	@`�����\[�E3��E
f�ot<�Rk�Cۊ&�Z�Y���D�dx�`�2�A�ADy� A�j���\4�{P�S����Nv�vYr�ꃼ��r{)�
*���/�V��y�thZ��ٝ�]�f<I9'f�m�{q�����u���TM]\���ے����{�)
��=�kO�-��9=���l��%�]�//R{O`�i�c��a�T�����<	��sK��V��
wIk~��@�O ����_�M����ČpU� ZWs���D��z�iq��������u��,R{�A�:+?�Ԍ���R�Y����P��8÷���d(j�\C��N���dxR:J���)�A�۪�"Բ��Y�؎�H��OEX]��	�k�G�}O ��3���e�K(`�Q�,!]D�eA�7!�X�؀��l��{��K͛�[ıD�A���qQ����0�2}���{ko�4��Z��#��,B�뷭�,I����W�{WRr/�L��.ŏē@��`p�5�|���_�g��pBJRx��`^�я��۫|Hb����U�u�n
�:���0��E�s�6��ֵ
ޒ�K���V2p�A�ލt�0�sqY6C��d���6h]��
М?Y@eb�荹��ܫ�+T��@L3G'�U՝ݡ�Ż��#+��~�R5k�)�ܦ?�*9#�� u=��l�m��t��4�vtJ�Mf��J��j��C��vh��O/$��]K�&~.vh��+1!��=c�n�bو��{�>G��2P�6^j6�cKI܋���[ˌ��M=��n@�Edq;�<��;�s�M�Q��jEd�^�c+�e7#���e��Rx-_�j/2j#��Z$�,w�O���"���E�'�m��er8&vu��z�G0s]-��)yvD}>`��{C�Έ��k"ȥYA`�����N� ��*�N��o��B���f�����5k�)��/T��2<+X�n,�x�o&r9N��wMiu��[�yn4����A�� ~��w�J/��җ�f��v5+u"���cCp���A1F7"*�m�l;�����C�"��Z��#���S	h-��7;��I$�I$�rI؈�QK1�&��n���<M&�n=���N�]��y�im��ق1�� +'���&�x����a�H��8���)��%׽O�6��k;|"s�ݶ�v��9�$q`�v�X��\lߑ�ğ�f���f�'�6��܏�O��T���nt�E�9Sgbv:��o�·o���莥]AS�W��\�f�I���Uݍݓ�nad�;��;m�f�,�:�`v�n��鑩��g��Wj�:�����,,���^�Yܟ�gdc�$k��x�(�<��f��dze���j�9�|	�^4p���O���N{�$����Z��(W��P���Ļ���!`�l�/�m��J�I�RƭAyԟ�U��m>~��d���x
���SL7;�9��LN��\X��tqkp�>ø�CGb��/1�M�y�w���1	Q�2��E��峯cu_��<�#IP��e#5�X$�ٿ�op�]Y�YIԸ��;��y3�wK���������_�l�촶����s��'��?Gy�v�AoS�
_ȟ�Vѐp ֹq�R�1�˳N��1�	I�<�eA�`�� S�6I�pO�k�َF��ԇ؁G�$�կ8�9-
Z�iQk' M���n!�^�N�Q���xG��׎�mF���L���"��J��e��VZ�����2���մ�,��c�(^Z�P���wM��b;�O�+�G�D�¼�?���FwH��
ȧ��2L�>,jz�KAlI0��p#��t�w�R�ET�9
��grx��"���TG*®��\|2|ɏ�9l����$�)\�#�Qk�����*J�Z͌�Z?�?�[ݸ���aQ�[���֣�W(�2x ���4J�w��_��Z���̐�)�k@���6�g/	@<���������i�m�ij�f���m��H<>5�{F��Z7Z劺�/*�a�Hw$L�%���1�$����t^J�./�gd�[�^F���$��5Y�$E�5�cLK�\�<I����p�V��+���ǖ��5f&H�Y�5I�9I�p>n`p��V���8
��+w
�U�Q�$��>f��[N�{��_6#���s�'�Fd`��[�$�Y��ȕ�`�ն�i1���?���g�!�Q^��O����������6�pp{�i�k}g�K�|o�������O��G6v��:��׊��1Cp�X�"�d�v��%��e�z�
H:��5��aӧ�(|�b!���`΀7�)�#Gw8U��qp�2��جo&����<M.�~w�כ��3~��c�&���\�䢟@_�ܞN�uesi���I�pr�`$A ��F�j�Qb)��po�v�r�VD��K���1H�~�Ү��������Oj�A�Rh�7�9�VGYEdq��VGYEdq'�Q�]ˌ@�qoDU���C��ܣ��u��M@� $�m�&��P�@�	8�K��8eq9wT$(P6APua�h�7�)�!vg`�2�@�=��C�*gVA��.�:��2?<�MguL�8q�@����� #�;ѷU���ؗ�?ʢ�X�� p5�7d��|EA٭i���~m���᳢7X{�V�J�V�s<nj���O9������<��4)z�m|r��,�c���孢u�#�kS�>���	�'��&%ϔ#ш�٬MՎ8A�s�<��[i.�X���N�Zi��DQ�����Ri�{d������Э�f|Mou�&��b9�J�Φ���!dR0EjzSږ�%c���T*w��?��CA�A�#�$��!ފy�^F�'��a��}�^N!�4�����/��/�<`
�x
��ie_i�s T�pD��T8�0$ӻJ��r�I<��KU��ܲ�ǯ�(��2���t�t�����*xw�ѬNEԃ��?�{8�?�@]��T��1�
T�Ao��w/
����MO�8ɷ�0�_}K��RTdnm���WD��K��� ��A�D}5o{�+�-].�5����7Wb�Ű�П�\�I>�~'f�sc#����]K��t��f���y
�p�
���|���ֱ�li����+�I��597n>�	�Q%��X�$�d�DyQ,Nil-��	�lj;5|���!!�E�Gjf>ԧ���=sq�Wl�V�~r�$�L>��&��~M֦�.���%�#��^�7,�T�'�&^�As�V����/l��w��6��+kF��:�\W�Ϳ�JůzK�CV�� �%
N��sCCP�;�PP��m��
����A��>Y����EO��`y��Iwu/�3��
��+m�I�8디|@S�g�}>|,�h[��x����[�nH�Z�Ч����М5<DHx]O�H�	8
I�j-:�of���V�*FC�#w �j���Q�v�o�;{�\Z�i���Xb�
Ku=�U����t�S{
�:��d/�z�U��Iօ���6k��Ӓ&;�^��gGW��Z���}Z�ܟm�i��0���;5sqnz�.������B��6@�[(�A+�9.vO0�%?�������NI�4w�ۂ(�8m��P��C�W�D��~�]oV�ڽq�Z�{��2�+��&��7��8
Y�OfW��]B�w\1�����0E&���ny�Rj�o��}���?7*7"
^^%����G�����I3���1�HȬ��/�Yj7�
���&�5{ML�K�.xe��]�@N��B����6�{��B����+�$��i���{E�MA ���*;��_��H���H�\ob;���ʰ�A��:%�d���5}%�*��蕹k����A��'�ن&�p�ǁ;4��~G�;nt�fb��6'���O�4gƆ�?|�x,��	�hh��ςRi��������8P8ɧ`����H&�g�.x �5�9Bʼn5=����&W �@y�E͹I�	�opwC!�)�evP�4�����a_��~��_��~�}�_��~�}�_��^��_��xQ�����l��`�mnF�$��|n9��YG����$��I�I;4�*�Qo���jF�V�Ӡ��L��x
���PF�e@�%���A���O��"`sm�ۊ�]�Jd�Z\�qkqh�NxZ6�G�F��'�SZ�贐���+R�N3�����OywtI��G����_tTS��3I�b*Ӥ���t�+֟�Yj>$y���:u���*h$��[���ui�ue_��z��=�$��]����kD���M��p���-�m�/�W�Ŀ�٧���?���H�iPq$
�W�2#V���R�rd+��fs�blj$�5#�Ob6n@�M>鷠_�@�Ҙ�s�R���goKej��S�&�8�ٍ d�>�'����-�D���6V���)��c���4�O�?��i�CwQ�{{���\
�V�ڍ�ù�!�1�EEww
�<̈́Z~�K��,���OV�-�s��w�⧮*�.c�"��v�7�SD��xaZ�F ���׾#���A� �A ���dqA*�����8 �V��>�[{�ܲ��5q��x{W�4A�#x;.4{Y�d�L}�gŸC�_a�q̭O��R�8�@9:)w�-f�m�g&��\��jף����f��k0;��������3���Z�V�|���x�33�gblj9>bC,��lԚd���x�M2����%��~�(2|�tN�u��֫�`yi�;q�9�GU�`?6��LwF���tw�������wtw�=���y>�/9�t�xח�������y>�ut7\I�B���CQ��O55I����}�<�S�;ï1Iwj��ND�dG�_����l�Amnf�yz�pl�w_�6����;t�F�N�Kʟm7�[��-�&ʸ�5��2�B\q��j�`���
��]��GV�#`��q�~V�-�բK(�s Q�E\i:}ǵn���z&��k�@dBe���^{z9�3b���ۢc��o��\�*K�=E2���#f�D3�%�:;q�5X8Jg�ޕ���#�n�/�l�n��FY��W�����1Ǭ*MJ�?����Z�	!n�"�5����D�W̊��\�����,�%���x�i��(�qOj���
	��W�!'�ƟR�m�W�����������9RA�)/����j�t����wֲn�)��x�%˺6T���2�����&��/����H�{caRh-�o%r
�\W�Z�c�pq�A�#�;:'zRy�s����DZ�=�:�R�,�R�WC�]����=���:�����l��O��?�	RI ���Eh��٤�p�A���$0�0ц<M6����j�l/���`��<W����S�ʻ�p㚜ҰeA��~���s�X�]6�pb�9
�I=�d�:d��+i��-�T�=�l�V�d4���4�����'���O�����$��Os�*;�(ǐ&�P�@5�5��Pq5����°8WTWTWTWPq4,:ȧʐHQ��nt5$2F�V8��X#���
�ڹb�è澙s�Jfg9f$��aY3��L�b�#+�e ���EiZ����겨E�hI�"�ў!�D:{�s��*ME�b �k\��[۶H���e��F���8
�<�a�5�<Z�'�b)O�_e��՜�{y�8��<�iz�؎p�젩d�R<gz;!�)"�������]��>��z8�N�eRV9e;���/-.-���U��PI;�5�N́(�^� Q�[�xrA��Ժ�����%��r�74w

jD�*pM-����<�5x��L*�j��M���z��>�GY�� m�9��Ca�QAEH�m�;�`?]=ǫ+���]}�٬�#�t;�!F�f��aV��O��P����1�2��$GF���F)��26�$`��"���ō��c��o�ݜ��%~7P�m�H���1�?�>��iڥ�����G�����Ր��~����ݝ~���E�_�I�gQmB��P��~-������Q�1�m�p�̞�vO�AB��p��׷d��B�Ay���f�����;/���՟�O�5x?">=e��u�v�z�9���~�6����#�"�Y�Ư:7�[h������.&�~�/�b8���C\���~�Oq5��r͎@
�J_#�y.�S���ۤ35�=n��9�j�y;�x8㳣����>�0̿�C}wf�=�dR��,NQ�s
�u��C7�p�����q�]����:$s�L8\�պ���z��9�e`��V���&�.�c��QS�M>A8Oty�I���γ\F�ſ
���|�Y�d��Wc0���{dnCa8���ݳ�uy{F��S�Y��f���˽�r�I��G*28ެ0|ޏ\[��b~Ly)��-�K9'�nԤЮ��I"U⤵ECD�
�<�y=+i8�C�����k���7��j�����[h�-�A�§������b;����]H*�x"�]Yu(=>ɓ�E�:L?����Q����	���V�k�>���3��@���)�J�:��3��$��w��������`^�1��'eﶟd՟�G�5t3��Edq��VGYEdqjQbu�$��@���S�!��	�Xdl�����+��J����`��&��S�>��8~�m�.#I~Y#�S�V�قYcC@=�~	Z���x���rm��6�������Z��Y����<�qsf���<Ώ�WQޅǙ��r��٦~fO�Q"�����8 ��+SӍ�L�[�O
�Wr���q��;�xU��WPG4G(� ��H����gC�5}�q>����w&x��%l�����*�B�#��(n�GY�� m���}�����䚞���CEu�k'���>���fOY<k�k�]`h���3�?^*O��^��<�Z:�tS
}yB��g��6�}(!Yc�D�%��N�I$�Р&I�>�^��j��ԑ#��4��~��oI�BHn�8�
P][܂a�7����Ο7���٢�j���x����<���4�������Ԩ��#�(��
^Z���d��x���}K��lݽ	rS��zY����_���/~�}[4��+�E�'V��I���\���E}�l�I8U��dž|�¥=id<X�c�i�B}T2"H�Đ2{i��#�����o��(��$�x�O�κ��
���@��wC)䆾�q�o��`�o�Q��8ތ9�(�7�+��G��;�mM�`{��Oy9;Q�7�U�� ��ux�e<q٪����v�(�R�����3Vn��y�s�4�rx��Q���	�Z��ҭ�Q�#�/�ج����2�T���Ei��e�ya����,��������/~�}Y$�3�U�{�����BV�Ob����?*O4N<5�y��um�pO<�X�4�7�TP�1�P�aI��=VM֌�!j>�_��x�'D�e��T��j�Fw������f4�f��͔���S؉��\�v�mv�OD��f����"<�m7O}�V���6��6���=���r�fF�:-b��ӧ�T��\�n����u�_Zd�lʾ��/��e�־�๊�#�[*�+��T�Ր�G�z���Q�_Uok�'7���q��_��Z�`���<6��Yُo�c�j��T$q�d�_�7��Ud��$l����ISzVWUu9V��5����O�l�;5/���j�}xx�,-S�I�1�s�qF�j��F�n��I�_鳢��F��X���]�+9��n�������U�>���{!����d=���h�%�;q U��2�*֚1Ņ]�?�H��(�v��5ocyu�!m#� `x��@��[��h�\3�=�Ld�_��A��8�Ĩc�hv
յe�U�5s'���Չ�6����r	`���T��b��"����K�}9rf���-R�M��(�oRt�Te�NIO�j���_�I$�';4�f�LfP:��kV��r.U�D�_�=�_�O�L���$�b�DDJ�gƥ�I�idl����%���'�^dSȚ|��q�@P�{n-���{ �y�<�K��d�TgN��?ݳL��l��
��~�ҿ��|I;-GV��՘�1��wЭj?+
�2��W�D�3�F���K��=�0���ul������}W�mTƿA���3!�@�i�n�XPq�È@�U�������F�@�h��-lo/-��ǽ�|jעϾ��+
K���"��9=6�G�w7�k�b�f��@$��{I���2�Ŕ�YI�����ѭ./�]H�`sZ��g�u��*�H��w�Zη6�Ϊ�$@�0���F���D�d��y�Md�,I$��NI'���I p	8�y�f� ��r6h^G�Z��ǫ���F����L�٘�$�Z���)�A'��~"�S�:�-�J���~mĞF�i}�ټ�9
�=��
��W�
�N�S�^W#p8u��D������^	�[|M��-ZܞSV�n��
��.�{�H��G�Z��X�Kp��;;�K,�����gv,��F�	 
�@��_͎f�Gl��U��#���9�g��݀�<�~��jϣ��gC;�w�hv
�
�u�[>�G���Wr��Ww�7��Y�,{��^[t
&�.�t1���+{D����s�2Fަ�����ux(�t��H@ �j���pJ��#,;�/k-E�j�n�e\���-|ݲO
x�G�Kq�۹[�Iѽ-w���CZ������h	A���<�$h2�Tq'������[ʟBu���_xT�$m%q�)�ՏE%l=�G��jִ�_�ī�u.��n�;�y�|�5=��H8
`٬7Z�A�.�
H����µ�bW��Q��hH[S����^��i�/|�&�d��B��`O!Q'^E^&�
����lԣʤ�x=S���n���@I�HmSJf�YN���k8ɭ/!�X�EO�o�],�/<��"��`8�l�i��I�xs(
�Xწ紱 
���#=�7��D���|�^��!V:5���/��쾼���I���8��W�Ρw���܏���
6�Pr!\ 8i���v2�^^�Xd��z�"Gw`���'p�����Jz�G,��L� �-�8䡨^$+(�u@�n'ϼ��6�0
�-s=づfFVS�R<9��JF�d\�'���@��d�W4V��g�����h�~f��i}�����b�a�hA���,�2��'<�i��RH�#����jiZi����#f�	�����m�Z�Ȗt�ND@���΍BL�3�P�oH�D�1�7D�o��4�̮�ʸ�Y��琣B��Ps;.�A*w�$sd���GT�Ԡ0�Z̦]V��JS�
�;3��r��.\��m������c�w*�5����Y&��|}��<Β�練]�ʮܷlDy"#;�ʠ�kN��$��D���"D���QF�^�##�d`Ad{5w�J"�4�R�.Uq֧�M>����#�Ռ6��B�ߙ*97o����ktfE���<��l����Q,�?Qt����t�Ń�jh�p���5q� [FI���T�<���Y��'y٣�X�I�4`:�	�5.�a8��x &���\u"!�v���]����6s��v]�Gio$�F�'�I#�#��.�X����M�M"�@�p	
	;�ɧb�X�';eN��'#oF�����z���g�}W���U�S�1o�`�S���bOy&�/Ke"8�y��)t�DUV��p8��i�V� ��
7F��候G�V�v��VQ9o<�"�F4�&���'��oƀ۫j#N�2�z��ƞ��I�w7_��V����-�`2������T�0EjzEƞŰ^�?�z�	�88��4M)���u!K��%�8ci%p�I&�]I��r!O`�l���L��j���G�h���L�{O�|1u'���ݗѴ�#<Ǯyw}W����w�=�71�E�󻢦p�����B��C'�Fvh�@�Vc���I�����MG�~�1��oKdr�2$��:0e�*�d���ّ�Dm A�0A�ΎXϖ���FS§�ާ�#�qV�5>��'�c?�	��j�X��5���-�]�֥�ɧE�:9v*@$�O	��.�8KiO�H�3�gp���Z���N�)��k0����0��Q�!�$�\d^�G�v���K�Y��6ʿb�qust���� 9�����'U��Psv��v���X�&���c��3Q��
��5ػ�EK�����]մWPK��q�+Qӧӧ1J	S�����m��cr����N��8�) �����C�6���e�x���u�f�G�
�ovm�V�&��A�Yc��E,sF����*F���֮Kj����j^����)]?���_�,���C�ӹB�I;��y$`A U�]�bnj�
Oo5��9W
�� ��\qH�~W���)b@���*�\��|�O����؏�ۋX.�h��:�W��Ik9�rJ�C���d��5&��I��A��Z��ۜ�J�	�ժ[�k�OY�FTv���HŒ�.��Z�Q�_�챻k+�n$)�;�Y]U���p=����Xa�V܈\��G��W9wb�~'gE�{e�s�H��˨���Ax�A+�S��aV�1H�5iZ�jp<�3G�'>�ִ�5[��@�#oE���ӵx/�X�9Sz>�<ޕ��ٞ0�]��ͨ��=
7ޛ�TV�������D�)���z�
M3�Ic�
M��I0���a֣�]wK���g�;�� M_�If�'�{/�)d�E�6*�V�w�ܲ��'��,�$-��$�NI9'��;��������՘��~��٧X�(O�&�Ց�U�q����H�z6tr�ͧ�#��1O�]Y��I�[]Az���w(�5o?H�����X��g\>v��t�߰�6�2s�i/	@<���ю����s]>GQ�m�7�\�[҈
^C?t���z/[	_ߜ�(m���g�"&���VZ��pa@� �A��҅̈́M�ξ�|j�y$_2�Ⱥ�X�Ho�ă�F�As��f���Y���MKMG"��0A��	,߽�c�>�w��ъ�9kN���˅�A�UľU��;��Σ�
���o�c�+�ֿ�<n%�v�Qյ�"]��X�}�*y�΋�Խ�/���Z���qDc�kv��gr�ugo���F]J)!S��%|�x�^|O�m��|h��S=gR��
e~�u��
î<_��&���P<���hQ �A`�;�*��TRX��=�
��vv�d�<[y��u-�?�T�MVm�"q��i�t�'?�澏��E�4��*�ӳM�[�r��*���d�=����B�����3J��@�}m�eO�V�q�.#ً��̱�i��9d �_��?�(��$ŕ���Q�������4��4wF��1�l�ӭfOz:��E���G��_���/�0O��ex���,��R�'�����:��Z�C�H�|E�`�����ofs'w��t�]D)�+"�+�i�dtn��fr�z�CB��s(-�컛��;B��q/Y����r��/�gq��@<x����h�E����"8-i�������y�$�e�H��u*yRF�8�#<��2��_XC)9p:����^\���ӿ��I�vvgs�bI�vIe*D�NTx�	 I�;MY[�1���<��\L������[�|����S~z����Gq�i}��#e��Y\�	���ճ��F|Q�}F�dm/���S������p{�*ܗ��T,��q�G��[3
�ܯ�>����T:u�/��=���u�сV�A��m�6j}��e�>ZtR;��6c yą��	����w��'�����v���"���F.�G	��q���4�(����C6��O������f�+�jzM�v*�4���y�r&u,�o������ra�M?F5'U$���$��4ȴ�
)�;�]��~�����H�0�ou���Ko3�*�]�/Z�Ӱ����?�Ն�c~1��z7cy�ʊY��j����Orw;z?�f�V#!�{9Qx�Ki8�|�XA��Hw��A�O�z��u��I������oq�Ɇa�����9
;�
Ð�5[�Y�;�ڌ�jҭu)5Hg���[���7�w]qq
�M,�y5c�Z^�$F>�}��*)f ;I8�>�W�P�2�gA�n#�5,R�+�*uާgx=����Kl7�_vNڃ����WO�a�:G����S������Ƶ�~�{G��r�'c0R]��e�oc�(�=F��������jF_��|_�=~>��w�������c�l�f9o���9
od�4��!�ä:�՘��ݺ�@Ŀ٭?�ҩ	|��Ta�1B�����[�W�]M����S"5�I�Ya��щY8��ҧ"�����B(�G��r�_k69˙?f�-Zm�3�w�u�����m���}!��e���̖
f��O�(w3?�l`�����n���CgEm����w�&~K��K`�^[M��W�4Y{&��?
�d�Cp�)���j3���@|ӻ&���L��d�`H�W�6�ш珬��+T��̱fX8���,�&�H�6 ��I��m�N-��n'ݠ�y�#�k�5��L$��ws�Ώ�@�dL�n����8y��Z{�SV`ŭ�|�q�ԟD�A�nn�l���ۣm �����r9 �O�-��i:}�&[q���oS�W���ȿ�j^�j��$���m/S]�3�����`���H�;GT]�@kA�����B���G��e݂��I��X��ٍ���}(���q�v��최��$���8�@����

��GG���#V�׵�n0��_3\�`��uV��
��-�i�H�>�u?ٌ�/Z-���%��D �c�'�5���(�DP����Eӡ�)@����KS#G,j�w�A��_�=Ӭ�y�W�7v�Em�D�,��Y3�`�������Ej��ԥ��$B[1��!x>��+X$�S�A�WWR]�K<�ӟ7
�tb8��:��t�nQ���V�H�D�e \���i"$���e*Gj��쮦�}����lӵ!��O�[ݠA�8 �Ʈ��sp�%m�4�SJ�n��#̚gB�D�'��W-�ԱZ�v"�d1գ�д�*:�@�l2�8�+��9D<T���{A���/fBق3�v�o	�P��<�P;n�N�ݝ��$���4��I/��Z�I7���\����{ˋnȜ��R2*y��<�X�@�щ���|R���7�є�h��w_EXH%���ޅ?�D���I�V������b
���]�@$�*��A�{X��FmЃ������DFc_NO�>�ֺ<.��l�%���$rC#G*28ެ0G��ۡ�"c��z�1ڿܵ���"A��W]<�P9_�v��7WpY�e�@�<O*�5��QA����-�������iV���q4�]�1�$�vtsN����%��B��.�-/-�
�?D`n�.�>��ԓ=Y ovT��� ��Ei��j��fE���zQjn��=V��V��}�;d��%?J4���;rP)�W��K�u���2��[�X/�Z��S�O����T��!�ҩ{�!�Ҷ�)ht�w�xKC��w���qC�V���������x-�i�f�K�[�̐I���z�G�V�َ�K��j��{�L��]�Cm���"Y�7>������S�!#�١���z�0ņ��/ם"Ӎ��H��S�ܛf��I�܉@%D�*��$�'�2���[�/^y�1ňsҋh�-�iO�}��wS���_v!զ=f˱,{�$���l�&a�%'G�f���qK�}C�kq�cC��]�q|��tRN��G_�Q���*��g�x��G�o�~?�Q��ש����u�_5j=����ƥ���G�z�ܑRQ��|�Z�4˫%�{����d�����U[�K�_k��Wp�~�7|���vfR�#��꯮|�y5>���uDR��y$�
�t����F��^j1_ڼw�n�<j��[Y�eá�l�uit� �r��Z�xn"Ybp�� �3Q��t�G���(���F�+���޴��R�t����
����W&�-̌�.Kui�Ws�qnMO�j����-�I�Y�<If5k�jW-�x�*ߣQ���1��PYZ[ ��>*����['^y�5�Ʈ�Ol�[h�S�6Q*�U��Ȗb�i诛gfe��0���=M��e�i�N��]�I9'gF4���/����u(�t���9"��
:�2��:�Ο!xX}�>�V���jz�����#�A������3I(E�(���5�Z:މ�5e�p�<�>v�z��7�#f8+֥�;����ѐd2�ͺ��jKkQ� H��?�\_��~�4<	�𫎔Y�d�/?Aj�:���
�vi��f;ى$��v~SH=��z�t���q;O!s�
�.�ڍ�\~B3���ZU�_�4�u��:�E��Uլ���g����`$A ��A��zIu�yt���T����a��}���m�L� �y�~<��C��YbG2( 37�S�	=���t�;$���=c�*n�X�DQM/�
����1E�.j}OP�Ȗ�R8�@�2;y��#$q=�����Ām���H�����fTR�@d�WW&�2n,l���H"��������;xS��O��{ci}��:�8��V����<� ���Z����J�a.��'�Pt�7\ڰ�ѐjoK�u�)�JFY(�� �]�d�
���/�]���T�����z�F5'Jm武~xZ��7G�V�'ʼnz�]�d��(8"��f�c�fw�lM���A�$20ʧ�6���C��gjfn�Ƀ�h`��fTR�@d�WWMpp2����k��S�ﺴ�26�F��{d~�?���
��ZB�IO����ҧ��KP|�:���7�IA�`�`��J�*x� �z���{7"�oƓ�Z���b��7���‡J�+8�Nht���xKOҫ�ж�s,�J��[8��W+G���b�9h���/�5���ۏ�St�Um�
�\՟}���)����g?�"��9rX�I4�|q��I��$>܊9i4�u���j��L�
(��b#;*(�'��a�Qw��흋�'� U����T���qr�
����'���a��[�O�mg�_�[�WJl��v�Ӈب�=ek
ͬ�	�}��5?FuX}��o��?��kK�?=m*|Y;�>�|;i`���\���	*
�
p�8o�a��~�d�on���c��˻�`{m�:�$�rN�>ߪ�Y�k//[qr��	c�EM3�g9=ø
�'8�d첻{+�nS$��W�TR��$�r������x��E��f�jX�h���Uԩ�k�r2�yh��l�}����D��T���X��v�E��9�ɥ~�!٘�6��";��9�_ٳ��GN�K�
;�
0�	�|��ӄq;���A��E
Hx�d��A���5�)�����S\K1��gr��6�Z<�觽QƑ Dd�Y�N�)��r�rI�go��$z��]~I��]�[�;a2w
��(�1���N�SFb���gE/<����{b�_�߸��څ�H��Q��V%�TA�+�:v3��5ީtI}�f������%�~m��@y��?��᱆U�hn��@;.!0LS�Oj�#`$�A�(�w�y�v���U���V�xi�O�6�2B�����4�3�n@w�l�'��.�QF� Dz�Qp)��&�Ӥ-�VF�I�D�B�
�lԢ�I��z�f�u�MJ�Bp�z�ɿq�ll���b|n,�5qB�Q�"�Q���ѵSil؝�����gg��$�����&�13�"���`J`�R'RI���A-�g���6ON�V�;����儞��w0�jF�"5��V
8�QC#�q;f�!B�y�x
�w�����7���(�'U��ۦk�;$��.ǐO��=��� 
:��r �4o��Q�E}>�����1Q�jp$���4��(d`GꦌK�@�FA��}2��c��u��?�֪�m���3�F�����ř�,I�$�'e���|P���g��~e������A�F.��A��1���B�1�}㵭���„򥶷S�
xP��̸�����r��g�˹���p�*�I8U��۩'��Wq���?r���yr�p_Q��C�V�	p�a�Ga��<�Ān'�9��ͭ�䁾O��sq�O+aI&��e����^�e}�����7]Ǡ����cɡ���l�
bY�G
�4L��<�VF*�����‘�O��L2���:Ic�e�(��l��Q�$�I$�rI�O3�A���q5ol�������13�;��MX�I$��{�	 I�),�_�}QŎ)t�>�r��"�� f��6���+`��X;�7��%7na�P �A� x���i��N΋��?'�X�xv���R��6�#9�� ��� �OH��Fd�b.y��3;c�NI�ak�L��;n�D㬸�"�Y����Aw�K۔�dpa���j%<���?b~�M��Q̓O}r�p�dQ$�I$�''m���`��q5I
A��S|�i�y�������
X���D�7�9�]\eH�P��  �����;����ֶ'�`vi�y�)w�|	��6��
>���oF!ōI$�I$�w�{I;,�C#�l�{?���}�,����\�C͚�)�9SX�Hu�=DV�˂��l!��6�|�㛩9�L�Jx��y�OjT:}F�}��i��!Px�yd��r�v�ω�{�?S:��x��Q���dU��{x$�xՇϷ�]�>�|�C���'�m�0yIz�z(|N�ɼ�$��n���*��@�jD1���|� �_n0M>�	�]�����9A�
�N�{sp���L�{R9��v�`'���Y�L���H9��$P����h�\�?�4Y�{̓X��	�,�.�<[�2�׃�q���	4{N*�>�#��Z���(��f�/�w��	 �Hq&��C��I�N�|��؃f�KLG`�_U~�{����+�!G����Qm���~�9���M�_��P-Hl�8����^��Éψ��93a2{���~�
2N��[�^�7��lӡ�9������ �)��g&�$�I �5b(���}N@�;�i�b��w�'e�u-�FO3�.��g�ge��nƤ�"����W�5{j�F%�
�i����wuF��Y9���3����j�QZ�+�
�:!/�/��#~��Q���6���ت]���$QF"�Qw��;u90��;�c�O��q�;�g�]?R�c�$g`R�o$
�vQz1u7ă�M9���@`A�0A����pW�8"���8�&��I ��J��@6j�qe-Fn�����I��dl�EGq���;5��ڿ�������,��W7Z�,�65$������[�}�>v�N�|�q�^?�������>2��� �$z�I�
���,׭uKxS��.��x��cv̜@#�jlD�X��z��uI�_rRY���
H�@ٜQ5�'ZğrE?�٣Jb�l[��~�+���=X]��X[0��c�Z[=�����ࢾ��P#a��xeM�y�ѲG���&�O3X'�o=���D�(H"��=��i��ᔏQ��^%���2���u�Ы��ߎ�i�3#�ݠ��J�!w8<�i���8
�dQ�
Ic��R��w�)l�{NM$1����f��{��2|;vF�)c�oGW� ���_�1׳�Kt���n�fm`�8IJ[�+&�ORd���+V��o��!�(�vi�y[�e;��<���k#c�����SY���m���F���R9���~st�f���F���.�ё�A�6��x8�o{, )�n�]F�+��
�S��9�_M���Q��B�Ԝ�G4�<��v$쳴��an��ܢ�D�4�@mȬ�O�:GN�R<F(nFAAc ���\�(O���r��o�A�.��H��P:����DV�z^��E�cͶhQfy��Ͷ��k#iDm�1F��r$Q���,*�uq��%`9�N�v����ɯ���-}^+_D��k��}oᯡ��k�r��_C~�Zg�A�W�H�2�<��G��G��J�8 ��,���� u"�r?
����!Cy'y5����;��T�&N�-J:�ȼ��~��dx!_���E�2�el�;�q�
��%�$��/��K,���"r)/v:��G'`=�a�8V�/���`r�G%�١�ճ.w�!����d�Mf��h��,{�>';,�%���+"�+#�dVG��Yk"�8�E]Y�]�&H
��M�L��eW�4�}�~լ���F)Ga��54"���%4��{6�s#��Z�����ƭ�8H%L�����XpO`���K'���s��(�KI$�;/.�H> �|�fg^�"�����Xs�Y�g$�$�w�NI;,�K(���9/JK䪂sY$�w�I�vYIV���T�dF�V�;u ��F��rw��UU����<Md�>n
`�(��qF�!�1�x{�S\�HB�,rĞg>n�1rOgD0^'	Cx�׺�
q�^D��1P �F�]�U��H�B��>u�-��avB�RXӋ�A �)n&_��1KxI<
�N�G1Aѽ���Vb�kP%l.��6��ZH׋�� Q�y�W�X5�X;1XJ�i s4�0��g�5纞&��c���Qfoi��Z���G����o�����:3��<�.`v���+��#�p=��SS�$d|T�][��W��4;FGh٩�dI͎�9:��T�<I"�v.��4/z
��jw6�r�H��k�Q�d�h��$
�f�Ѝ�-�F�O!F�dѻ��
(�+os�8����Xl�cQ�x�
��I5��6��E�?�	S�$r$P��]�=I,��gl�1��L\$�ŀ�w��~k��&�(I's����?Xh\��_J����>�x-}.^�_K��|(���
7���f���O2k���3
��-�]����4dԯ��n���f��e�5��x��(�O�U�F�m�{�QSi���ڿ5a��<a�l-P�$��C�������}C��������Ƴg��~���c��'(�	�'�+��\���J<��k�X\`	�?���<q�����:l���(+�ShknI���M2.p�2�@���b��=^��
~�����}Cz�l�`	��٣�WU������$S�[Џ��@�H�N*X��C��8���ݶ<�à�x��w�����7Ig�X���4�]��2�X�';-Nm����¿�]���P}�������ٹ��
Kh��'��LgN�#٧j��վ���|�b�(��H��Շ�o|���7��K�����蓌����s��Z��A�o_@��������x��md��c��~��X�oe
-��y�������A�2�f���}��պ�nF|}y�ߛ�6%��J��U� 7�N�ح��Pom�x��/t���Ѣ�@�i�KHT��֯-ŵ��HR0N�ۦ@d�VV��3�R=U�ͬ�gd'Dx:��b�R��څ��x��<XF�M*"{(!�dVj�u����47B���`|h}w��w����83�-���r�Ѓw�>gI�9��e�P���~w-F����ne$��{�5����)~<��q43
ΥO5ۡ�����Yb��&�"�͇���A*�C�Q�{<끘&P�Y�@��P�S�6�k?�2(Y�w��c�BhZB7�y��7F(7��Vk'̐f9o���9
n�'��!��?]j_C���܌�Ϻ�Oi9$�$�4H�Z%����c#G]��y�#kW��~gG��w�˜ֳ^ś�X~tQ�<d}�5� 7a��o	ނ��GqaF�wH~b���84m&⦚�b�9o��Q�jex�p��E �Wѧ�+���P����i/�f��,�|���w�P��o,hZ��̚D7F�F���"�Y>~
8I>ɡ�r��r5lso��uҹ�XE|�(�.[f��������A�;|ޕ۔��~�#�T٢ߋW�8�~�Ʌj#6`���җu��I�>~Mf�Y��*t�s̞�<	٦?_O�<��}vEdVEf�Y5����+c�{NOy�I��{M
Ð��[��e���G���_�������'#­o�d���3��%����D.y����j��C!>�t��M�H[
�A����V����\�,�l�߭f��J��Y5��̚ɬ�ɬ�_�X�Qt]�2(�B?L@�7�7+7�ʢ�i_{�p/fB˟M�l�#<��7�"���﮺]m�f�%*y>�9������<�Ȯ狰6G�ս�DG*��yo��~Q.�r˸�G#��ш"��P�J�O�*+���Sdp4.��y�P���4.�;��	bmΦ�
b�kf��������vh/����W��5�X5�D��`9�F��`Ѽ�nV4or
7S�B���5�y'�4YyQ́F��w̞4o�G�<4uq�9�M�������.qTD�$�$�䜝��3ޛ�����F�ol�'�\����vGR����Ga4�MB�����f�a+JnbR������g	l�{����}F+ ��N3$�'�;�6=��[Grbo ��v�{�Iup��͎�RjR�n5oiu(��� E-ճ�	��8�=�~`КU�#P�����P�~��"���i�h`p(�M�H�EH�%	#;�|E�q�X�V+����7��e�o�h�@?LQ��n$�onV4otc�h�Lw�Rj`>`S�C�W ��������SGR�nG4u>��Jc�Q��;�J(�\��=v��y�k�����Q`QJC�+U��V�+�Q�'���3I��/��(�r�k�][�F7+#P�6r�G�QI<�ѷ&�i |r*k�HA�ܧ z�U���@�)��6� ��x��e�`Am�۠�"�t��[�����@��A�$��-����_�
짚���|Hhjc��aW���G��o�e��r�ҭO뒾�m�d�[��>�}.�B�Ѽ��(�[~��k�B~F��l=�Z:�r9�GS^�O̊:��B�2h�Wr��u��E���g���ݏ2M`p�"�n�O!�Nۡs�4,n���́N��� �q�@��^��m��bݭ�j�����B�C���jtxݑЫ��V��w�XrY�Q�12I=�
�t_�!�|�$^:^���~1:�H�yQ�0�)��O�̿�)�ه��� �Z\��X�F
T����#���ۑ� M[���atw��P�g;�
0��>KCL��G44�a�9��,�F�V�0��r�f��1�6������p/t�;�x�=Ϲ�^tN�3�i�Ǻ��S隅��l��R��h�	�=��_xTP�1(d��E-V�ԧ ʢ��-�+MѬ���R��ݭ����������b�K��0+��ֶ��Si����0~��stن�Ѱ��O&l��M{����|o�Ma�[��X<
`�5�w�h#����3�?�4-��_…��KP����†�pw�2hi�wʃ�&��;�?%4��sB��oBy��kl��J��@���'Ս��m�h�M�����h����onD1�KXn�jn�۸�e���5�@<Fh�0�"���a��G���k'���5���O��k'���7���}�٤�i���?�/S��%��;�rW�n�:N�C��3M(�6٤�v��Oܾ��᭮��~+��N���8�Z�Fp�4��)q#��2��O�(O�2}�@���p���٠7_G��G�ܽ^��}� e��i{E�
AA�F�DG���fh�%N��Gt9F*x��MB�w�nb��{�&��1����m������ʂ���i���Ԏy�Xc��p�pE#Ea��G�Ƞ	�	�(C)�P���s4,۽��f�{1�R1���|F΋JK�J��[]F�-�$,�e�-�s��+ތG��L�J?��Iy���AX�F<��k�o���c�4 �Z��̊r��E3� �
k��hZ�7�y��ъ�r�7"����7��:!>�R�Η@��`;$�4٦�&u⟁�z���gf�i�u%O�F�~�ٞ��'O����ʇC�}��EK�N�O��C�ZbL����I��?���Ԛf��e䂖4A�@9Q�=i$<]��&�Y�V��p�?
��sY�Y��Md�ף�v�pf_��GV��h��3��
������.��*09=^�����΍k�c�Զ4@<Fh�<�UpP<+?U�X5���V/)aq�@��	L3�(ޒ#�s:[����_���:�'���M?���֑Ċ6l78�m0�
(�VG��c���tk�{��?���o�M/���ƁW�R���
��V`Vcat�dQ��E�u�I�(�/rF�C�TU�Ҽ2�s���(n���i3�\���{�;��|�	3u3{��'fMd�h8;�<��;�O�W���k_G��!�~�k]
-a���;:5�����-�(�BP�RA�(�.$�7z�BY�aB�a�����?�_J����?�_H����Q�S�Ƣ�w�x�9;�5����#����l����[A�ʠ��s:^O�,�����f�RO���:H2��X>�^o�گc�6ta3���b���j���wK���^M���ے��䁼��@�H	�N
`�����ڕs���R$
����Ė$�rI�vt_M9k�W��gL"��K��e���od�s)��
%ԫ�)o#>�"��6�Z�X�X�X�H�$�"�V���uu7�~m�E��h���=���+Ȟ˰�H�yt7L�5����59{�CCS��W����~��5��x�:�|Z��1�
k�`����d���2kG��L�]�H=��UE
����j��2D��=d�B�*J�!� �0A��O4^ĄI���x��H4�����^b���L��#�>"�ҍ�5���+�Sq_
�\���Sj
v����W�W��Y�Ό[4�)�i���p�z��i,77���"3������cs<�+4n�>���GR�7V�I��5Om=��)�h���e9V#��-��`��ިk�N_�'���n���;���Ğ'f�c%��@�|��F�*"����'^��}�\x�  lkF?��"��lw�*>�s�ҏt��t���O_�s��˸���44�{�Ohi\g�Z].�ow?0)lmS�ĒkS@��@#����kb'���2�.���Ⱦ���(_؝�p}����;�b�8�u#*G<�3�׉q~"C��?l��iØ�=\g&���7�����?�>�K��|C�V�Ei�e����e�k�{X��nF��^B���5��Q�BO0|����RP���⤃�*�\�-���u�e��å��I���A#�{�{d�O2F�X�S�L��3$�aj��׷*R�	�t�LV��v����=���9��M�[�ב��'t��Q_�?������cr0;:%t�R{Q��ɽm��+�}؜�pR�̪;�'w�Ys�,��$+ҧq�����п0	H��Edqf��ͧ2�{os��P��$�8up?�rH�#;�TPI$�
�Q#��ñjw��*Gy\����{1$��vM) "1�ޣT�(���Gf�zlo!��8�wҺ�+)<A��+���h�ԧ-�E�b�R�>
K\�Ѱt8#q�~�XU�7�����@(�ڝ�Оh)�:_j�/��w���-k!V��T�I��U��������9O���3*)f ��Zְ���8�-���v�o<�)#���c�e�5
��D�f��>�=;�#	�����W=��B��1��kv>��VH�kQ�7׳O�$�>�ݳ@�Qk$�(&}�`T�.���!��� �A����oe��E#��e ����4�yt���+�3!��#���j�u����Y�"pzU~c�,����l�7��8Գ������C�Y|UyP�1�5!X<��F����b?�4ARA{A�-����bUMgE�m�+xb9T��vt�$���gE�)��?i�W��aүw��}�e�&�xa�-"**�*���ʮ0���h���ȑR�!Rb$]opa~(w�0Al�"Xo��Q�%>�gF�:5���
����g�/ݐ�9'fΎZ(��e��O��:{t�x0���ѹG#a�j"Q�wuF6�*�@��H.�conRͳ��N���8��_IT��q�(|e��+�\�㶡�#a�aI,r����LA�R78��WF�L}}wH�����xW�昌r�:?��lԌ���-���!�P�C�y<	'gG��m��œ���� �ɢ$��Ԑ��������O�H{~'��,���i�y�p�ΉZ�{��!쯫��.����H�OΥ�He�)F�s,���Gb� ���E-��v	O#�B�~�/fu*0��#����=�-�{�o|첵{ۨm�{��w�H����p�=*�Z9��`�ae�	R$AGx���;�O	W���xn<2+�>u�Xa(�{̚�(]�N�;I����`Ob�˲��[����#=����xc��8c\"(U�:E���]��et���n&��7 w��
E����
�#�TsE(�r+z��2{R��E�O�x/m\_K8*=�ޏi&�<����–4�920 �Z��5�iaKo�Q�7��ýI��u�Ȳ��I�ki�G����Й9�.��6��5=8�Uޡ���$�0Q����&�S�{�y*]J��>��$�I$�$䝖���L���ݫI���m��ҕ�d~>�W��W����ήm�-%1O#�;�#����%��xf#������DoCUO҅�"

N���45_y���_}�飩Z��h�v�p���V.�\� Q�x@>mGT��H�F��u�Q��m��L��,ğ���G��#Fwc��2Mh�̷7x3oD�O�]C�6�%��>B_5y�jY2[���zK@�2G�$�p+OЯ��b�}���鶺|]H�ǵ���ŵ��F9�WN
W�on�_�=\�^��\[�{z���#�z�@�@�{ۢ<���8���5i�K��]L#�v���l���!x��<��E֍�ݒd�N����T����t��p�螦������o�'����55�aq�Bh��.�K��&�gxwZ\�j]3R}�4"���.�`�qPtF]�`|#Z����2 ���M���և��䵢��/�|V�荳v�u*s�N�_/�� n`�7F�u�7'��?�_�V���������_�P�v�c'�����|])z/�������+�ɚ�����EK�5�睾j*>�i)���j:���V�������:1 !Q@A02BPq�"3aRSbr�C��#$���?���d�6~h�#b7f׻L�4��!v�!q���B7���y�f��'�i����u����aE�C��ȃ�1
B�-�a@�d� �H)�*�«<�'��2x��'��2x�\���"B�>���:/z�nF�l�k����4�3L�4�3Op���B�O�}m�P����v���6Mͳl�6ͳl���bw�$`��v@�T��OV�M�op/A��g�tC�|*υI�-���dq{1�bz�bN�wݲl򤫧��m�w�E����b>�)S���gЇC�n�[wޅ�"�ă��a60`�Ȓ������zDZVP���ǡ���)чz 2�p�� �&�F�����,�<^�@
BW�ܡՎZ�}�Y�f� ���`h<�~�;�����u`m��z�`��(���=XwT�Ǥ�Y_�/�[��f������VVŁ#�=˗�C��F=㬯S�C{N�}ð�w�>��w>����;��d�ܒ�jψ:�n�g�6{͞�a��n:��{��t�/�A��u:|����s�e}HE����4�H0bM>`X�Y�=�i �зu�GO�}�d�PY�i-�_B*�X��*M�-bF�6M�m�}�]�~�p,����`�،:�1�"M3L�4{�;��&ɳ�l��m���Ug�4b$���B ��H��e
�.�a߹��d��=Y�i�����f���`�T�E��+m�4����[ŭn�lN7i��w��� ��H��M����z��{�M�K54Mwi�xY�g�xY�b'v���l�A�A�X��f�d��g����L_�*�=�#�t>Y:ۨ�Ձ4@^�*¤*OMǯ��rX@��H1{�!ܟI���9k����<��]"Lw�㥽�
tem���+�g���V!�{�{͓g�5�=�#H�i�t����ء^Z��w
��	~U���>����+z�e]��VW���X��ucp�8�f�>��{�&ٸz1X,�u��k����w�	�Br�L����1���ǫ+�k[�@�
�lW�}� ��X�@�wR��Y۟���z��xqP�I9.��f~gE�NW.
����ez+v����"�ڝ����(�2�!�[��|�ԜZ|L���b[�h��G&ZP�V��}���B�FU�k�ʮ�T�>�]��o��	WL��]�Ћ/՝�����a���Ͳ9�ҽ'3!L)�ggc��W��f��9/��[	*�D��6��&�	�� ������>pc;A�1�������W�LX���V�V���#)���&mp�f:��J��4����kTb$�O�1�)*)$�4�ܘ���8�J���7���	ӿ��~��>e�áJw=���;�G��I�����ܸ�On_����g���|�/�>C�w�J�|��^�j�ey��F^����
�Jԁ������ԏq�����.�s�j����Oj��4�,�����?c��Tz6O����pi�k���=W�J[R��|��o���ᩌ}_ *�
x�YSA�I���o�l6Z�g��^���|�,>+7OBT�|�B&�������vL��V�fl��uzy1��.T&:�T%M=j�;���4�w��\umff�l����
�mg��~�(}_��"z$���jjk�%�tn��/�-N�Y|��F�3f�[o��@6���1��nҦ�Ȑc^���ב�N�J޶uW}�� �����b��c����g/7���;��6S�Z7�T�8�0��ۺ���}W�u�e�LF���/�N.k�-�g3-��3���V�ٛ�5v����V��3�u��潾�����]�����+�ϟ����~e*j��q3?,��t�Kkjf�\Tl̙-�ͬ�2�l���������m ږDe9ށz�s��I���'�eik�Qg�b6�Ϟ���iLs��C)��}�a��t�^�ɗ�DZz2�h�y*��}FRŨX��v����Tl�>g-��N&��L�+���|׶O���k�i��L�GL�1�L8���)������S���ʥ��LC�9�e�\tW�%��JV<���'0���l�QI9��2��o�������i�YJ7�RR�*@'#3��>�ul�Fc�&��c��ȅz�X������:
̼��6����gؙ��q����C�}o)��O÷���tL�lW?����^���VtL�tl�-�g��9�|ʝm���w���Ϳ�����}�~�.S|I)��{��v��a�1佳cme��?����|f�Ԕ�~D�Y���A�;���b�9W�深����X�ݜ�n�����ʞ���h(���A�s_+��㋚��3:�w�=�X�|\�+Qg�`�����~C{}	r�,Q&N'.�Z�=ɇ��҈��:�3q�Xl�����o�B�z3c��<8hi�w��LW�y)h�J'R����U�vO����5�U	�����9���1�Y�.�|��J:�f�
9o�Lx0�?��9��R�kC���&L��V�e�\�#jd��1��J���{����+���˞�B�t,�\YM�ʼn���ɶ�}��&��"KvW ���2��P�ҧ�3S��Ș썽����]�i�O�V���?�[��K�nߴ�f��[�_Ӥ �i����ia��6��e������R_>f�z�/j��ul̼�V}����������:<�{�W#�;�+[�:��ub�_�
d�4�Js�x�:�{�v�z_J���n���=�W(�w���'���'����<gԟ����~:��F�Z����N�In��,��Z�K-�<�}�V���>�W�='���`�~��>}��j�� ��[���-�0�x�U��x�X��=HҏИqW�cO��O���q_�i���>�ü�W��
��u�*B�:a�w���>}��N]n���_z3���
W?��3ַ �D��3����l��;����I��t��: m�|u���dz�k��@@L���S����O\w�k��X���r]����YO����>�͍�C[;�8y�{|5�ψt}#�;��G�ı�'��Pꑽ�rЎc�G5��ow�=_��|>FMxq�����{��ٜziF�)Z����WB���z�{;���.(̜|7��Y~�oZY�-�y�2���Où��U�h;��ɖ��K��L������_�6��?���.����C�ʷLL�fr^�JvE�YN��׮�)�Ï^u%�b�5�L��Ǯʍ�~��m��NL��K,�W�mчR��'�r��5�ess0�.���i�>�!�%{O��VW�ƷL�������Q�/\u���?ʯ�>��C#�:�Х��?���z�#��׮j�v��u�	nӧ��f[�y��V_?/'\�>��^�|L��Ll�+�B`�a�����~y4���]�R��M)�Ɛe��m�u-����ݟ�G����8��1xl;ͦf��;\�5�?�d�����濏$�|����s���"�l����lC�k��8���Ï��B�t�=h��~:�Gc
t_�A���wXK����Ǜu�	+��uW�~*C���9^�!�����I���u�#jlG.3���N���<�'�}>�cϿ҄y��h򳿎9��n��z��ܯ���':��n<�fߵ�ݯ�C��-��%�Ո�'G�J7�_x�
��xy��É��0��z������f~;��|ͪugš0�,X��RɓJNU|9���Z�6��3�i�g�Z����i��j�-�����!��Ҷ����n��.߁?Y^��?z�)�44�#)B��kҤ���k���d�+��Z�����Z��:�[�O#���s�?��?�3��{O�t-�G��1��k~2ݥʷݨKr9�:�I��?��e?&�Y��\Ym�&=�����JG�ÿ��Dz��2Zҫ�u�.�NJ���T�S�rr��h56����Ԟ�O
}����.D�P�1i�겆�ɮi���~2XA��d?�Ò��&�3[����u�����^�e
��6DF �8q=iX�p?�	��0��?�:W��ע�N�D҃7}81[�q���@J�<׌�6ͳl����B����F�����wl|�r�4��?]L���u��z�]��ȅ���j���
ߡ9\�<Z���h��>�Y���eB��Gc�;�����ꓓ���G���|w������X�k?B=�����*�/IN�ć�N7+&����ˇj��D������ѝ�ȵ�Ⲡl�!z���'�y<����l61�V����'I��WƳZ���;5�ʕ&4����Е4y^�DM��vF��h�7 ���;7������~F
��lv'fp��/k��P��������ȯ�%�f�L���'�/ټ��Y�/$����+��F��f���=��S�SL�4�3L�5��Q��k�M>Ы�
@�� Ƒ�4�M>��<,�0�
?��21 !AQ0@BP2Ra"q3r#b�����?��3L�4�~P���
�'�6{�g�6{�d�B4�cK��=�r{�����Rw�]��#cA�����#e�c����#�h���=X�K]~p��$,1�Ɖ�VV�-`���O�;����N��g�g�g�cKH���e��}x+���ҫ�l(z��I����6M�d�6M�gcQ��1HZZ��TH��,)�¡ٲny�L��4MD�4MM3̃9��+oF5"?WQ_"�!C�yf�i�&�6��O�M�g�6��R9��O�y��)���+��P��W5Y�ăq4�gu����ތ�v}]k�>ŚXȖ�J�;�G%�m�O��Ǘ�O*�|��L�_r�14��04J`�pkM��r�V�B&�vK����NŁ%���2Z�φ�������o$�;T�Gvƽ�f#��F���"v���Ɣ��f��e���9��e�-�/��
�nç}m��¬p>��Z�N����,�|?�#�G���g�g^o�1tn�<��b$�.l��T�N^�+fQ�K�/�1�ޛ@*h	�nnm�2�."KѪ����χ�#��G�����ﳭ7���_��
p����$䉥�s�zLJ�t���YJ����/f��i�z4��j�'v�_&i�f�fi�f��`�QR=�M��.Z���]`���6$i�����sOӜײƔ�<�0~�0&�l'x�17Pf��^�(:����K<2cA���[�b���&�)oF\ٿ�8�0��v��vSX@�`h%��i�oiU�"M3L��	�Ķ�Vތ�P��v���0����?Ȗ�s��l��&ȫ�����jl�C!j3�m�w�8�;;�0ܻ�����:Iܬ�Z�V��`n5H�DGO`��aeA�6?ODH�G��M��N�;�N�B�౱�;&Ĉ��Re�-^�;E�9#��Œ7�~�,nF�l�]C�ðU�+xcQ�Q;biN��2�D�b$�5�pKr�1��n��X�C�O��4�p쯒DQ��.<�F\�!�^	N;X`���ޡJ2���^	�=w�r�*K*0�f��a@�<z#S��wH�HP����S�嘼�s���[6'ei/����}X�Y�v�XT'�;���6�5�7طw�ü�^��4��2���g���+�Y��(�F\ӹ^	n_���l]wg�*�6�X�|���6A�����6����)ĤeM�=��حC؝5V�:�c�Cβ��.��jh%����.�3�y}�i-^�;�*�@�-��%MD�
*h�gMN�Ax��og�:\zR�j�DSً�~���5v�;�
f���}��y��s�� �F��]�I��(9r�c�v�٘�[�ܻ��ճXX}c`��amY"o�bk��׉w�n��	1_�aг.[dRt�J����漿�~��,�y�*��'=�7B#15iV�'ngyn�r�����<�>Ly����2��m%j�Ktuu�JP�J���r��v�RpG�c�<�7�q�Ɩ&�fP�I�Svn�G�=����:����4�y;|�Z��>fٲl���a�á_Y�A��X�Iz�̘�c��N_����[�^	�����������7�Kq�N~p{�Xܗ*q+R�*�/v�͖t?Z^��8��S�yO)�<����)K^�jL8���s��U�̗of�,��[L�H���z`e)l��p�|��(
�	�fr[G헷��
� ���|�?i�k��=�)F�*G��1��)K^�Ba�c��@U�N�;u�_�%��!n7�h��&��h�=�B�x����Â�|�81U�Y{w�t����'��R��A�Z�EY��n��^ˈ���粃��x��I^����qS^�:lT�ۼN�	B����1e1��$�V��P�k��0�_�i�4��ϙ�mU'M���O�SK_Va�mgw4N�	�Ơwe���i]��7%����:�L�SW�I��l%�ά������H����ҽ�ZS:pKZ�Bg��tyVa���Kgń*Ku��|�7a�)��Wq�%R���^�l�M/��m���#y�f���f<v�`	\T�;�3a�+SS|`&�ux�vG��}�`l�e�_#�L��Z��efTÅ�¶���e:3��6�O��'Q�ƈ�&DZ/��������?���t��9�Kح[2�r]yV`�c��5,i%�1�KK�ɌT5+V��G�&>�4��α��S����Y'�i�X���%�����E��Va{�h�~��2C�*f:7�RP	�_Eh3��޻d�<=e�J�ݝ%w�~ǃ����s7%��/��UG�
䨛%�J�T�S���z�U�ї��h'I��V��g�-�MB��w�ջ��諪��7���:�X�i��1��1�3�I��+���o-ﱰhKg��/�E]�{�G�J��`�1�����YH��p��sԆJ?t����-���_Zw�j�is�N��n��q�2[��_�f|�]�b��w�_5Nm-��H��|�LV|�Jz���
��멓��v�/U�m��Z�0�z�è}k�����j��Gv�X���g��Y����/�&F�[w�͓qI�9���a[[�����1��j��J̆�sٖ���"�q���\�t���V[�Q��?��L�1�rw.s^�>��i�}��ٝ�{3���G�a��KvW�^ez<g0Ì�jp��e�������Wb��^S�0�k�Ve���؝5u�}�Py�̸hR��J��{���O���������C�}R9�ha�
P���fe�wלI��{1�O��s��������_�I�����(���f��n����x���?+��5C�9hz�?���,��2r}u
���Z)�U�=�z��U�j0��
��W?��ڧ)�>���c��r]����rR��=@pG=�Uv��'�ֆМ]��WȈ��l+��}Xu%z��a��?S�]�z�=�q>=�����~��1��i��7�͈��B=A�X��a[[�a��Ll�q�>�L�[O�G�$�*h"vb�+gL�K[;��Gc�ǧ�zG�k�#��,�[ݝ�&w���޷�6����谥�*�G�VW�}ezJ���c�7���͆=N�3er�|����}H��:֠>������akUؤ�S��v��?uN�O�ҳ?s��>S1X{�3�a~�ρ��V|'�Y�޳��y��w�c�g�qE����2=]�+R=Vo�ϕ��og�g�wx�J&�7��vB���nU�wRt�Ǔ�QF=7�#�>��K���4c��4�kcњ}��{B�xc��0�x��3�ã���b}lã�{æ�}�È�+S�쿝����\o$�﫵x|�|�~��-]$�f����>�)V�:�~u�U��S����b8=i�I��`�e=��އ6#���w��Ǘ��v��{
|=G�7��g~��Y�'��mޝ5����G�}9������j(篠��J�m�˚��gM��Q=a��-W���
�|8�aK�Z�Ŗ|�0^=�R7�å=�+�Rg��k2~��8/j���!��]��e�|8�4�6R�w�����w+�HV��|��;�̹\��.�5��:��5M��OPg�������?I��fjW�!�txETHY8Rr^��st�Vo��3�G%�����6�`�)�)��N.�>g�b򬵶��������q��O��XP<V6>:�
ƬA�H�J��w#W���%�Y�
N�1�)rƦC��'���acQ�Ywv|#��-���I,�dx?Kz0_F��l��m���ד9�M�����B��,>�g�6{��OX�؋��)���.M������N�;��CЍ�?���images/pagelayer-logo-40.png000064400000004121151526521010011643 0ustar00�PNG


IHDR((���mtEXtSoftwareAdobe ImageReadyq�e<iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmpMM:OriginalDocumentID="uuid:65E6390686CF11DBA6E2D887CEACB407" xmpMM:DocumentID="xmp.did:5ABE9E4562A111E88B92A891B03F84E0" xmpMM:InstanceID="xmp.iid:5ABE9E4462A111E88B92A891B03F84E0" xmp:CreatorTool="Adobe Illustrator CC 2017 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="uuid:82fb8536-dff6-4267-bc56-b6d519966ef1" stRef:documentID="xmp.did:5bf5a966-e0a1-bf48-825d-ad6914474db3"/> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">Abstract P Logo Collection</rdf:li> </rdf:Alt> </dc:title> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>_z�X�IDATx�̙[HTAǿsvմ��Y�]@	�XdVd�	T�C�F�P�Q�%�S�CD�E�_��K)�DK0Ƞ�"ˬ|	5uwO�Y�e]Ϝ3�ݵ>��̙���}3��'g�{"��,���d0La��4�7�4�NOI���
�J'e��F�������
c�2�J.l�I��T�K����V��@
Q{��M�y`-���0��
T�J��Sd�����,
nK���Χ�jK��\�FJ�S�	��G�4�=�뺳�S�d����A��xR
{JTpq�fSc�8�@�{�zC��
=���(��x��)�R�]σq�F��
��|g�g��>v���7�ϳ`��*��[��<��3�ƃY|��Y�k48V�	��,T�	������כ$Y�r����� \��+����1��y�:_��>��]/Y�(����Z7ot�d~vj-��)�;`��ͯ}�y����(��rsV+����(&0��83;Z����!x�DA^�J�7��s;�(�$�op^�m�&z�-9 \�)S
^��&�.P%21�_uң�uq�[�0W��
�vTA�V/H���Q8�'�V'�n���Y� =Y�l� �)QVc5�}L��TK��N%�C0M�U�����ɜͭ�
4��]���5��[&Q��O��:��xN���l��_�+�P�T��~�8�&�sP�
x kf�il�Y��#��`	d���X�Zv�l�YX8_���:�RL.�v_�����P%�񻎜9]�NYv3�&�@��0�惌��[�~Q�m��c��Yg���F�l�.g��ةS���;�<�u��}F��:]ߠ(�?T��� Ps?�-]�S����/=�Bm�T`5��{�=[�R������
qǓ�|�&�$����zѫ<���Gt51���$��Tß!��/A���6~�~�C.�3D{��TRF����F҅w
�IEND�B`�images/index.php000064400000000000151526521010007615 0ustar00images/pagelayer-logo-19.png000064400000002750151526521010011657 0ustar00�PNG


IHDRE��gAMA���a cHRMz&�����u0�`:�p��Q<�PLTE�����+������������/������������
��������������������������������������������������������������������������������������������������������������������������������������
�������������������������������������������� ������������������ ���������������� ��������������������������������������������������������������������������������	�� �������������� ����������������3�������������������������������������������������������������������������������������������dP�tRNSc���կl$
`�����l��	����]�ˎu���p��s��(^���q��u��w����ɖt������|��j���z�����{~�����
	o��vq��(Msr���p����{����{���m����n���հo$~y(�bKGD�pg�!tIME�
,;<z1B[IDAT�c````����cbFq	I)�����+0����>r���#ǎ������54����Z�:���z@�������)�efn�`idX���1�;8::t�م����!wOF/oF_?�C��N9��}�ș�سG��'$&JNIeL;t�\:C���2������2���P�Px��"��C�J��+��*�bU��5�u�
��M@�b-�m���]݇���B��b��p�Х���b��L�6}��C�.Ϛ=*6wĿW�/X�ư�굣�ٗ,��˲�+����8V��y����o���M��l�ڶ}��]�����
Dq�J�y�%tEXtdate:create2019-03-29T10:44:59-04:00�}�%tEXtdate:modify2019-03-29T10:44:59-04:00� �ptEXtSoftwareAdobe ImageReadyq�e<IEND�B`�