{"version":3,"sources":["jquery.min.js","bootstrap.bundle.min.js","jquery.validate.js","jquery.mask.js","jquery.fancybox.min.js","sweetalert2.all.min.js","swiper-bundle.js","menu.js","cep.js","functions.js"],"names":[],"mappings":"AAAA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACptSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.4.1\",k=function(e,t){return new k.fn.init(e,t)},p=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;function d(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp($),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+$),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ne=function(e,t,n){var r=\"0x\"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=k),o=(l=h(t)).length;while(o--)l[o]=\"#\"+s+\" \"+xe(l[o]);c=l.join(\",\"),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute(\"id\")}}}return g(t.replace(B,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+k+\"-]\").length||v.push(\"~=\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+k+\"+*\").length||v.push(\".#.+[+~]\")}),ce(function(e){e.innerHTML=\"\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",$)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&p(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[\":\"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx\",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==(\"focus\"===t)}function Ae(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(R)||[\"\"]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(R)||[\"\"]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,\"events\")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,qe=/\\s*$/g;function Oe(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&k(e).children(\"tbody\")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Re(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n\")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\\?(?=&|$)|\\?\\?/;k.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Gt.pop()||k.expando+\"_\"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Yt.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,\"$1\"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||k.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"
\",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1\").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,\"position\"),c=k(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=k.css(e,\"top\"),u=k.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===k.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===k.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,\"borderTopWidth\",!0),i.left+=k.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-k.css(r,\"marginTop\",!0),left:t.left-i.left-k.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===k.css(e,\"position\"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each([\"top\",\"left\"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+\"px\":t})}),k.each({Height:\"height\",Width:\"width\"},function(a,s){k.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){k.fn[n]=function(e,t){return 0this._items.length-1||e<0))if(this._isSliding)p(this._element).one(V.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),u=0l[e]&&!i.escapeWithReference&&(n=Math.min(h[t],l[e]-(\"right\"===e?h.width:h.height))),Ye({},t,n)}};return c.forEach(function(e){var t=-1!==[\"left\",\"top\"].indexOf(e)?\"primary\":\"secondary\";h=ze({},h,u[t](e))}),e.offsets.popper=h,e},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,o=e.placement.split(\"-\")[0],r=Math.floor,s=-1!==[\"top\",\"bottom\"].indexOf(o),a=s?\"right\":\"bottom\",l=s?\"left\":\"top\",c=s?\"width\":\"height\";return n[a]r(i[a])&&(e.offsets.popper[l]=r(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!gt(e.instance.modifiers,\"arrow\",\"keepTogether\"))return e;var i=t.element;if(\"string\"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),e;var o=e.placement.split(\"-\")[0],r=e.offsets,s=r.popper,a=r.reference,l=-1!==[\"left\",\"right\"].indexOf(o),c=l?\"height\":\"width\",h=l?\"Top\":\"Left\",u=h.toLowerCase(),f=l?\"left\":\"top\",d=l?\"bottom\":\"right\",p=nt(i)[c];a[d]-ps[d]&&(e.offsets.popper[u]+=a[u]+p-s[d]),e.offsets.popper=Xe(e.offsets.popper);var m=a[u]+a[c]/2-p/2,g=ke(e.instance.popper),_=parseFloat(g[\"margin\"+h],10),v=parseFloat(g[\"border\"+h+\"Width\"],10),y=m-e.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),e.arrowElement=i,e.offsets.arrow=(Ye(n={},u,Math.round(y)),Ye(n,f,\"\"),n),e},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(m,g){if(at(m.instance.modifiers,\"inner\"))return m;if(m.flipped&&m.placement===m.originalPlacement)return m;var _=Ze(m.instance.popper,m.instance.reference,g.padding,g.boundariesElement,m.positionFixed),v=m.placement.split(\"-\")[0],y=it(v),E=m.placement.split(\"-\")[1]||\"\",b=[];switch(g.behavior){case Et:b=[v,y];break;case bt:b=yt(v);break;case wt:b=yt(v,!0);break;default:b=g.behavior}return b.forEach(function(e,t){if(v!==e||b.length===t+1)return m;v=m.placement.split(\"-\")[0],y=it(v);var n=m.offsets.popper,i=m.offsets.reference,o=Math.floor,r=\"left\"===v&&o(n.right)>o(i.left)||\"right\"===v&&o(n.left)o(i.top)||\"bottom\"===v&&o(n.top)o(_.right),l=o(n.top)o(_.bottom),h=\"left\"===v&&s||\"right\"===v&&a||\"top\"===v&&l||\"bottom\"===v&&c,u=-1!==[\"top\",\"bottom\"].indexOf(v),f=!!g.flipVariations&&(u&&\"start\"===E&&s||u&&\"end\"===E&&a||!u&&\"start\"===E&&l||!u&&\"end\"===E&&c),d=!!g.flipVariationsByContent&&(u&&\"start\"===E&&a||u&&\"end\"===E&&s||!u&&\"start\"===E&&c||!u&&\"end\"===E&&l),p=f||d;(r||h||p)&&(m.flipped=!0,(r||h)&&(v=b[t+1]),p&&(E=function(e){return\"end\"===e?\"start\":\"start\"===e?\"end\":e}(E)),m.placement=v+(E?\"-\"+E:\"\"),m.offsets.popper=ze({},m.offsets.popper,ot(m.instance.popper,m.offsets.reference,m.placement)),m=st(m.instance.modifiers,m,\"flip\"))}),m},behavior:\"flip\",padding:5,boundariesElement:\"viewport\",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split(\"-\")[0],i=e.offsets,o=i.popper,r=i.reference,s=-1!==[\"left\",\"right\"].indexOf(n),a=-1===[\"top\",\"left\"].indexOf(n);return o[s?\"left\":\"top\"]=r[n]-(a?o[s?\"width\":\"height\"]:0),e.placement=it(t),e.offsets.popper=Xe(o),e}},hide:{order:800,enabled:!0,fn:function(e){if(!gt(e.instance.modifiers,\"hide\",\"preventOverflow\"))return e;var t=e.offsets.reference,n=rt(e.instance.modifiers,function(e){return\"preventOverflow\"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},e._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right
',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\",sanitize:!0,sanitizeFn:null,whiteList:Cn,popperConfig:null},Fn=\"show\",Mn=\"out\",Wn={HIDE:\"hide\"+Nn,HIDDEN:\"hidden\"+Nn,SHOW:\"show\"+Nn,SHOWN:\"shown\"+Nn,INSERTED:\"inserted\"+Nn,CLICK:\"click\"+Nn,FOCUSIN:\"focusin\"+Nn,FOCUSOUT:\"focusout\"+Nn,MOUSEENTER:\"mouseenter\"+Nn,MOUSELEAVE:\"mouseleave\"+Nn},Un=\"fade\",Bn=\"show\",qn=\".tooltip-inner\",Kn=\".arrow\",Qn=\"hover\",Vn=\"focus\",Yn=\"click\",zn=\"manual\",Xn=function(){function i(e,t){if(\"undefined\"==typeof St)throw new TypeError(\"Bootstrap's tooltips require Popper.js (https://popper.js.org/)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=p(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(Bn))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(\".modal\").off(\"hide.bs.modal\",this._hideModalHandler),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if(\"none\"===p(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var e=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(e);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&p(o).addClass(Un);var s=\"function\"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new St(this.element,o,this._getPopperConfig(a)),p(o).addClass(Bn),\"ontouchstart\"in document.documentElement&&p(document.body).children().on(\"mouseover\",null,p.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,p(t.element).trigger(t.constructor.Event.SHOWN),e===Mn&&t._leave(null,t)};if(p(this.tip).hasClass(Un)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(e){function t(){n._hoverState!==Fn&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute(\"aria-describedby\"),p(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()}var n=this,i=this.getTipElement(),o=p.Event(this.constructor.Event.HIDE);if(p(this.element).trigger(o),!o.isDefaultPrevented()){if(p(i).removeClass(Bn),\"ontouchstart\"in document.documentElement&&p(document.body).children().off(\"mouseover\",null,p.noop),this._activeTrigger[Yn]=!1,this._activeTrigger[Vn]=!1,this._activeTrigger[Qn]=!1,p(this.tip).hasClass(Un)){var r=m.getTransitionDurationFromElement(i);p(i).one(m.TRANSITION_END,t).emulateTransitionEnd(r)}else t();this._hoverState=\"\"}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){p(this.getTipElement()).addClass(Ln+\"-\"+e)},e.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},e.setContent=function(){var e=this.getTipElement();this.setElementContent(p(e.querySelectorAll(qn)),this.getTitle()),p(e).removeClass(Un+\" \"+Bn)},e.setElementContent=function(e,t){\"object\"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=In(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?p(t).parent().is(e)||e.empty().append(t):e.text(p(t).text())},e.getTitle=function(){var e=this.element.getAttribute(\"data-original-title\");return e=e||(\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},e._getPopperConfig=function(e){var t=this;return l({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Kn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},{},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return\"function\"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,{},t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},e._getAttachment=function(e){return Hn[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(e){if(\"click\"===e)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if(e!==zn){var t=e===Qn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Qn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}}),this._hideModalHandler=function(){i.element&&i.hide()},p(this.element).closest(\".modal\").on(\"hide.bs.modal\",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute(\"data-original-title\");!this.element.getAttribute(\"title\")&&\"string\"==e||(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger[\"focusin\"===e.type?Vn:Qn]=!0),p(t.getTipElement()).hasClass(Bn)||t._hoverState===Fn?t._hoverState=Fn:(clearTimeout(t._timeout),t._hoverState=Fn,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===Fn&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger[\"focusout\"===e.type?Vn:Qn]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Mn,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){t._hoverState===Mn&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){var t=p(this.element).data();return Object.keys(t).forEach(function(e){-1!==xn.indexOf(e)&&delete t[e]}),\"number\"==typeof(e=l({},this.constructor.Default,{},t,{},\"object\"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),\"number\"==typeof e.title&&(e.title=e.title.toString()),\"number\"==typeof e.content&&(e.content=e.content.toString()),m.typeCheckConfig(An,e,this.constructor.DefaultType),e.sanitize&&(e.template=In(e.template,e.whiteList,e.sanitizeFn)),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr(\"class\").match(Pn);null!==t&&t.length&&e.removeClass(t.join(\"\"))},e._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},e._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute(\"x-placement\")&&(p(e).removeClass(Un),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data(On),t=\"object\"==typeof n&&n;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data(On,e)),\"string\"==typeof n)){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.4.1\"}},{key:\"Default\",get:function(){return Rn}},{key:\"NAME\",get:function(){return An}},{key:\"DATA_KEY\",get:function(){return On}},{key:\"Event\",get:function(){return Wn}},{key:\"EVENT_KEY\",get:function(){return Nn}},{key:\"DefaultType\",get:function(){return jn}}]),i}();p.fn[An]=Xn._jQueryInterface,p.fn[An].Constructor=Xn,p.fn[An].noConflict=function(){return p.fn[An]=kn,Xn._jQueryInterface};var Gn=\"popover\",$n=\"bs.popover\",Jn=\".\"+$n,Zn=p.fn[Gn],ei=\"bs-popover\",ti=new RegExp(\"(^|\\\\s)\"+ei+\"\\\\S+\",\"g\"),ni=l({},Xn.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'

'}),ii=l({},Xn.DefaultType,{content:\"(string|element|function)\"}),oi=\"fade\",ri=\"show\",si=\".popover-header\",ai=\".popover-body\",li={HIDE:\"hide\"+Jn,HIDDEN:\"hidden\"+Jn,SHOW:\"show\"+Jn,SHOWN:\"shown\"+Jn,INSERTED:\"inserted\"+Jn,CLICK:\"click\"+Jn,FOCUSIN:\"focusin\"+Jn,FOCUSOUT:\"focusout\"+Jn,MOUSEENTER:\"mouseenter\"+Jn,MOUSELEAVE:\"mouseleave\"+Jn},ci=function(e){function i(){return e.apply(this,arguments)||this}!function(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}(i,e);var t=i.prototype;return t.isWithContent=function(){return this.getTitle()||this._getContent()},t.addAttachmentClass=function(e){p(this.getTipElement()).addClass(ei+\"-\"+e)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var e=p(this.getTipElement());this.setElementContent(e.find(si),this.getTitle());var t=this._getContent();\"function\"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(ai),t),e.removeClass(oi+\" \"+ri)},t._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},t._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr(\"class\").match(ti);null!==t&&0=this._offsets[o]&&(\"undefined\"==typeof this._offsets[o+1]||e li > .active\",qi='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',Ki=\".dropdown-toggle\",Qi=\"> .dropdown-menu .active\",Vi=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(ji)||p(this._element).hasClass(Hi))){var e,i,t=p(this._element).closest(Wi)[0],o=m.getSelectorFromElement(this._element);if(t){var r=\"UL\"===t.nodeName||\"OL\"===t.nodeName?Bi:Ui;i=(i=p.makeArray(p(t).find(r)))[i.length-1]}var s=p.Event(Pi.HIDE,{relatedTarget:this._element}),a=p.Event(Pi.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(e=document.querySelector(o)),this._activate(this._element,t);var l=function(){var e=p.Event(Pi.HIDDEN,{relatedTarget:n._element}),t=p.Event(Pi.SHOWN,{relatedTarget:i});p(i).trigger(e),p(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){p.removeData(this._element,Ni),this._element=null},e._activate=function(e,t,n){function i(){return o._transitionComplete(e,r,n)}var o=this,r=(!t||\"UL\"!==t.nodeName&&\"OL\"!==t.nodeName?p(t).children(Ui):p(t).find(Bi))[0],s=n&&r&&p(r).hasClass(Ri);if(r&&s){var a=m.getTransitionDurationFromElement(r);p(r).removeClass(Fi).one(m.TRANSITION_END,i).emulateTransitionEnd(a)}else i()},e._transitionComplete=function(e,t,n){if(t){p(t).removeClass(ji);var i=p(t.parentNode).find(Qi)[0];i&&p(i).removeClass(ji),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!1)}if(p(e).addClass(ji),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!0),m.reflow(e),e.classList.contains(Ri)&&e.classList.add(Fi),e.parentNode&&p(e.parentNode).hasClass(xi)){var o=p(e).closest(Mi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ki));p(r).addClass(ji)}e.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(Ni);if(t||(t=new i(this),e.data(Ni,t)),\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.4.1\"}}]),i}();p(document).on(Pi.CLICK_DATA_API,qi,function(e){e.preventDefault(),Vi._jQueryInterface.call(p(this),\"show\")}),p.fn.tab=Vi._jQueryInterface,p.fn.tab.Constructor=Vi,p.fn.tab.noConflict=function(){return p.fn.tab=Li,Vi._jQueryInterface};var Yi=\"toast\",zi=\"bs.toast\",Xi=\".\"+zi,Gi=p.fn[Yi],$i={CLICK_DISMISS:\"click.dismiss\"+Xi,HIDE:\"hide\"+Xi,HIDDEN:\"hidden\"+Xi,SHOW:\"show\"+Xi,SHOWN:\"shown\"+Xi},Ji=\"fade\",Zi=\"hide\",eo=\"show\",to=\"showing\",no={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},io={animation:!0,autohide:!0,delay:500},oo='[data-dismiss=\"toast\"]',ro=function(){function i(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var e=i.prototype;return e.show=function(){var e=this,t=p.Event($i.SHOW);if(p(this._element).trigger(t),!t.isDefaultPrevented()){this._config.animation&&this._element.classList.add(Ji);var n=function(){e._element.classList.remove(to),e._element.classList.add(eo),p(e._element).trigger($i.SHOWN),e._config.autohide&&(e._timeout=setTimeout(function(){e.hide()},e._config.delay))};if(this._element.classList.remove(Zi),m.reflow(this._element),this._element.classList.add(to),this._config.animation){var i=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(eo)){var e=p.Event($i.HIDE);p(this._element).trigger(e),e.isDefaultPrevented()||this._close()}},e.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(eo)&&this._element.classList.remove(eo),p(this._element).off($i.CLICK_DISMISS),p.removeData(this._element,zi),this._element=null,this._config=null},e._getConfig=function(e){return e=l({},io,{},p(this._element).data(),{},\"object\"==typeof e&&e?e:{}),m.typeCheckConfig(Yi,e,this.constructor.DefaultType),e},e._setListeners=function(){var e=this;p(this._element).on($i.CLICK_DISMISS,oo,function(){return e.hide()})},e._close=function(){function e(){t._element.classList.add(Zi),p(t._element).trigger($i.HIDDEN)}var t=this;if(this._element.classList.remove(eo),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(zi);if(t||(t=new i(this,\"object\"==typeof n&&n),e.data(zi,t)),\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n](this)}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.4.1\"}},{key:\"DefaultType\",get:function(){return no}},{key:\"Default\",get:function(){return io}}]),i}();p.fn[Yi]=ro._jQueryInterface,p.fn[Yi].Constructor=ro,p.fn[Yi].noConflict=function(){return p.fn[Yi]=Gi,ro._jQueryInterface},e.Alert=_,e.Button=x,e.Carousel=he,e.Collapse=De,e.Dropdown=en,e.Modal=wn,e.Popover=ci,e.Scrollspy=Oi,e.Tab=Vi,e.Toast=ro,e.Tooltip=Xn,e.Util=m,Object.defineProperty(e,\"__esModule\",{value:!0})});\n//# sourceMappingURL=bootstrap.bundle.min.js.map","/*!\r\n * jQuery Validation Plugin v1.19.1\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2019 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));","/**\n * jquery.mask.js\n * @version: v1.14.16\n * @author: Igor Escobar\n *\n * Created by Igor Escobar on 2012-03-10. Please report any bug at github.com/igorescobar/jQuery-Mask-Plugin\n *\n * Copyright (c) 2012 Igor Escobar http://igorescobar.com\n *\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* jshint laxbreak: true */\n/* jshint maxcomplexity:17 */\n/* global define */\n\n// UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.\n// https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js\n(function (factory, jQuery, Zepto) {\n\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object' && typeof Meteor === 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery || Zepto);\n }\n\n}(function ($) {\n 'use strict';\n\n var Mask = function (el, mask, options) {\n\n var p = {\n invalid: [],\n getCaret: function () {\n try {\n var sel,\n pos = 0,\n ctrl = el.get(0),\n dSel = document.selection,\n cSelStart = ctrl.selectionStart;\n\n // IE Support\n if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) {\n sel = dSel.createRange();\n sel.moveStart('character', -p.val().length);\n pos = sel.text.length;\n }\n // Firefox support\n else if (cSelStart || cSelStart === '0') {\n pos = cSelStart;\n }\n\n return pos;\n } catch (e) {}\n },\n setCaret: function(pos) {\n try {\n if (el.is(':focus')) {\n var range, ctrl = el.get(0);\n\n // Firefox, WebKit, etc..\n if (ctrl.setSelectionRange) {\n ctrl.setSelectionRange(pos, pos);\n } else { // IE\n range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n } catch (e) {}\n },\n events: function() {\n el\n .on('keydown.mask', function(e) {\n el.data('mask-keycode', e.keyCode || e.which);\n el.data('mask-previus-value', el.val());\n el.data('mask-previus-caret-pos', p.getCaret());\n p.maskDigitPosMapOld = p.maskDigitPosMap;\n })\n .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour)\n .on('paste.mask drop.mask', function() {\n setTimeout(function() {\n el.keydown().keyup();\n }, 100);\n })\n .on('change.mask', function(){\n el.data('changed', true);\n })\n .on('blur.mask', function(){\n if (oldValue !== p.val() && !el.data('changed')) {\n el.trigger('change');\n }\n el.data('changed', false);\n })\n // it's very important that this callback remains in this position\n // otherwhise oldValue it's going to work buggy\n .on('blur.mask', function() {\n oldValue = p.val();\n })\n // select all text on focus\n .on('focus.mask', function (e) {\n if (options.selectOnFocus === true) {\n $(e.target).select();\n }\n })\n // clear the value if it not complete the mask\n .on('focusout.mask', function() {\n if (options.clearIfNotMatch && !regexMask.test(p.val())) {\n p.val('');\n }\n });\n },\n getRegexMask: function() {\n var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r;\n\n for (var i = 0; i < mask.length; i++) {\n translation = jMask.translation[mask.charAt(i)];\n\n if (translation) {\n\n pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, '');\n optional = translation.optional;\n recursive = translation.recursive;\n\n if (recursive) {\n maskChunks.push(mask.charAt(i));\n oRecursive = {digit: mask.charAt(i), pattern: pattern};\n } else {\n maskChunks.push(!optional && !recursive ? pattern : (pattern + '?'));\n }\n\n } else {\n maskChunks.push(mask.charAt(i).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n }\n }\n\n r = maskChunks.join('');\n\n if (oRecursive) {\n r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?')\n .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern);\n }\n\n return new RegExp(r);\n },\n destroyEvents: function() {\n el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));\n },\n val: function(v) {\n var isInput = el.is('input'),\n method = isInput ? 'val' : 'text',\n r;\n\n if (arguments.length > 0) {\n if (el[method]() !== v) {\n el[method](v);\n }\n r = el;\n } else {\n r = el[method]();\n }\n\n return r;\n },\n calculateCaretPosition: function(oldVal) {\n var newVal = p.getMasked(),\n caretPosNew = p.getCaret();\n if (oldVal !== newVal) {\n var caretPosOld = el.data('mask-previus-caret-pos') || 0,\n newValL = newVal.length,\n oldValL = oldVal.length,\n maskDigitsBeforeCaret = 0,\n maskDigitsAfterCaret = 0,\n maskDigitsBeforeCaretAll = 0,\n maskDigitsBeforeCaretAllOld = 0,\n i = 0;\n\n for (i = caretPosNew; i < newValL; i++) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsAfterCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (!p.maskDigitPosMap[i]) {\n break;\n }\n maskDigitsBeforeCaret++;\n }\n\n for (i = caretPosNew - 1; i >= 0; i--) {\n if (p.maskDigitPosMap[i]) {\n maskDigitsBeforeCaretAll++;\n }\n }\n\n for (i = caretPosOld - 1; i >= 0; i--) {\n if (p.maskDigitPosMapOld[i]) {\n maskDigitsBeforeCaretAllOld++;\n }\n }\n\n // if the cursor is at the end keep it there\n if (caretPosNew > oldValL) {\n caretPosNew = newValL * 10;\n } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {\n if (!p.maskDigitPosMapOld[caretPosNew]) {\n var caretPos = caretPosNew;\n caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;\n caretPosNew -= maskDigitsBeforeCaret;\n if (p.maskDigitPosMap[caretPosNew]) {\n caretPosNew = caretPos;\n }\n }\n }\n else if (caretPosNew > caretPosOld) {\n caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;\n caretPosNew += maskDigitsAfterCaret;\n }\n }\n return caretPosNew;\n },\n behaviour: function(e) {\n e = e || window.event;\n p.invalid = [];\n\n var keyCode = el.data('mask-keycode');\n\n if ($.inArray(keyCode, jMask.byPassKeys) === -1) {\n var newVal = p.getMasked(),\n caretPos = p.getCaret(),\n oldVal = el.data('mask-previus-value') || '';\n\n // this is a compensation to devices/browsers that don't compensate\n // caret positioning the right way\n setTimeout(function() {\n p.setCaret(p.calculateCaretPosition(oldVal));\n }, $.jMaskGlobals.keyStrokeCompensation);\n\n p.val(newVal);\n p.setCaret(caretPos);\n return p.callbacks(e);\n }\n },\n getMasked: function(skipMaskChars, val) {\n var buf = [],\n value = val === undefined ? p.val() : val + '',\n m = 0, maskLen = mask.length,\n v = 0, valLen = value.length,\n offset = 1, addMethod = 'push',\n resetPos = -1,\n maskDigitCount = 0,\n maskDigitPosArr = [],\n lastMaskChar,\n check;\n\n if (options.reverse) {\n addMethod = 'unshift';\n offset = -1;\n lastMaskChar = 0;\n m = maskLen - 1;\n v = valLen - 1;\n check = function () {\n return m > -1 && v > -1;\n };\n } else {\n lastMaskChar = maskLen - 1;\n check = function () {\n return m < maskLen && v < valLen;\n };\n }\n\n var lastUntranslatedMaskChar;\n while (check()) {\n var maskDigit = mask.charAt(m),\n valDigit = value.charAt(v),\n translation = jMask.translation[maskDigit];\n\n if (translation) {\n if (valDigit.match(translation.pattern)) {\n buf[addMethod](valDigit);\n if (translation.recursive) {\n if (resetPos === -1) {\n resetPos = m;\n } else if (m === lastMaskChar && m !== resetPos) {\n m = resetPos - offset;\n }\n\n if (lastMaskChar === resetPos) {\n m -= offset;\n }\n }\n m += offset;\n } else if (valDigit === lastUntranslatedMaskChar) {\n // matched the last untranslated (raw) mask character that we encountered\n // likely an insert offset the mask character from the last entry; fall\n // through and only increment v\n maskDigitCount--;\n lastUntranslatedMaskChar = undefined;\n } else if (translation.optional) {\n m += offset;\n v -= offset;\n } else if (translation.fallback) {\n buf[addMethod](translation.fallback);\n m += offset;\n v -= offset;\n } else {\n p.invalid.push({p: v, v: valDigit, e: translation.pattern});\n }\n v += offset;\n } else {\n if (!skipMaskChars) {\n buf[addMethod](maskDigit);\n }\n\n if (valDigit === maskDigit) {\n maskDigitPosArr.push(v);\n v += offset;\n } else {\n lastUntranslatedMaskChar = maskDigit;\n maskDigitPosArr.push(v + maskDigitCount);\n maskDigitCount++;\n }\n\n m += offset;\n }\n }\n\n var lastMaskCharDigit = mask.charAt(lastMaskChar);\n if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {\n buf.push(lastMaskCharDigit);\n }\n\n var newVal = buf.join('');\n p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);\n return newVal;\n },\n mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {\n var maskDiff = options.reverse ? newVal.length - valLen : 0;\n p.maskDigitPosMap = {};\n for (var i = 0; i < maskDigitPosArr.length; i++) {\n p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;\n }\n },\n callbacks: function (e) {\n var val = p.val(),\n changed = val !== oldValue,\n defaultArgs = [val, e, el, options],\n callback = function(name, criteria, args) {\n if (typeof options[name] === 'function' && criteria) {\n options[name].apply(this, args);\n }\n };\n\n callback('onChange', changed === true, defaultArgs);\n callback('onKeyPress', changed === true, defaultArgs);\n callback('onComplete', val.length === mask.length, defaultArgs);\n callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);\n }\n };\n\n el = $(el);\n var jMask = this, oldValue = p.val(), regexMask;\n\n mask = typeof mask === 'function' ? mask(p.val(), undefined, el, options) : mask;\n\n // public methods\n jMask.mask = mask;\n jMask.options = options;\n jMask.remove = function() {\n var caret = p.getCaret();\n if (jMask.options.placeholder) {\n el.removeAttr('placeholder');\n }\n if (el.data('mask-maxlength')) {\n el.removeAttr('maxlength');\n }\n p.destroyEvents();\n p.val(jMask.getCleanVal());\n p.setCaret(caret);\n return el;\n };\n\n // get value without mask\n jMask.getCleanVal = function() {\n return p.getMasked(true);\n };\n\n // get masked value without the value being in the input or element\n jMask.getMaskedVal = function(val) {\n return p.getMasked(false, val);\n };\n\n jMask.init = function(onlyMask) {\n onlyMask = onlyMask || false;\n options = options || {};\n\n jMask.clearIfNotMatch = $.jMaskGlobals.clearIfNotMatch;\n jMask.byPassKeys = $.jMaskGlobals.byPassKeys;\n jMask.translation = $.extend({}, $.jMaskGlobals.translation, options.translation);\n\n jMask = $.extend(true, {}, jMask, options);\n\n regexMask = p.getRegexMask();\n\n if (onlyMask) {\n p.events();\n p.val(p.getMasked());\n } else {\n if (options.placeholder) {\n el.attr('placeholder' , options.placeholder);\n }\n\n // this is necessary, otherwise if the user submit the form\n // and then press the \"back\" button, the autocomplete will erase\n // the data. Works fine on IE9+, FF, Opera, Safari.\n if (el.data('mask')) {\n el.attr('autocomplete', 'off');\n }\n\n // detect if is necessary let the user type freely.\n // for is a lot faster than forEach.\n for (var i = 0, maxlength = true; i < mask.length; i++) {\n var translation = jMask.translation[mask.charAt(i)];\n if (translation && translation.recursive) {\n maxlength = false;\n break;\n }\n }\n\n if (maxlength) {\n el.attr('maxlength', mask.length).data('mask-maxlength', true);\n }\n\n p.destroyEvents();\n p.events();\n\n var caret = p.getCaret();\n p.val(p.getMasked());\n p.setCaret(caret);\n }\n };\n\n jMask.init(!el.is('input'));\n };\n\n $.maskWatchers = {};\n var HTMLAttributes = function () {\n var input = $(this),\n options = {},\n prefix = 'data-mask-',\n mask = input.attr('data-mask');\n\n if (input.attr(prefix + 'reverse')) {\n options.reverse = true;\n }\n\n if (input.attr(prefix + 'clearifnotmatch')) {\n options.clearIfNotMatch = true;\n }\n\n if (input.attr(prefix + 'selectonfocus') === 'true') {\n options.selectOnFocus = true;\n }\n\n if (notSameMaskObject(input, mask, options)) {\n return input.data('mask', new Mask(this, mask, options));\n }\n },\n notSameMaskObject = function(field, mask, options) {\n options = options || {};\n var maskObject = $(field).data('mask'),\n stringify = JSON.stringify,\n value = $(field).val() || $(field).text();\n try {\n if (typeof mask === 'function') {\n mask = mask(value);\n }\n return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;\n } catch (e) {}\n },\n eventSupported = function(eventName) {\n var el = document.createElement('div'), isSupported;\n\n eventName = 'on' + eventName;\n isSupported = (eventName in el);\n\n if ( !isSupported ) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] === 'function';\n }\n el = null;\n\n return isSupported;\n };\n\n $.fn.mask = function(mask, options) {\n options = options || {};\n var selector = this.selector,\n globals = $.jMaskGlobals,\n interval = globals.watchInterval,\n watchInputs = options.watchInputs || globals.watchInputs,\n maskFunction = function() {\n if (notSameMaskObject(this, mask, options)) {\n return $(this).data('mask', new Mask(this, mask, options));\n }\n };\n\n $(this).each(maskFunction);\n\n if (selector && selector !== '' && watchInputs) {\n clearInterval($.maskWatchers[selector]);\n $.maskWatchers[selector] = setInterval(function(){\n $(document).find(selector).each(maskFunction);\n }, interval);\n }\n return this;\n };\n\n $.fn.masked = function(val) {\n return this.data('mask').getMaskedVal(val);\n };\n\n $.fn.unmask = function() {\n clearInterval($.maskWatchers[this.selector]);\n delete $.maskWatchers[this.selector];\n return this.each(function() {\n var dataMask = $(this).data('mask');\n if (dataMask) {\n dataMask.remove().removeData('mask');\n }\n });\n };\n\n $.fn.cleanVal = function() {\n return this.data('mask').getCleanVal();\n };\n\n $.applyDataMask = function(selector) {\n selector = selector || $.jMaskGlobals.maskElements;\n var $selector = (selector instanceof $) ? selector : $(selector);\n $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);\n };\n\n var globals = {\n maskElements: 'input,td,span,div',\n dataMaskAttr: '*[data-mask]',\n dataMask: true,\n watchInterval: 300,\n watchInputs: true,\n keyStrokeCompensation: 10,\n // old versions of chrome dont work great with input event\n useInput: !/Chrome\\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),\n watchDataMask: false,\n byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],\n translation: {\n '0': {pattern: /\\d/},\n '9': {pattern: /\\d/, optional: true},\n '#': {pattern: /\\d/, recursive: true},\n 'A': {pattern: /[a-zA-Z0-9]/},\n 'S': {pattern: /[a-zA-Z]/}\n }\n };\n\n $.jMaskGlobals = $.jMaskGlobals || {};\n globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);\n\n // looking for inputs with data-mask attribute\n if (globals.dataMask) {\n $.applyDataMask();\n }\n\n setInterval(function() {\n if ($.jMaskGlobals.watchDataMask) {\n $.applyDataMask();\n }\n }, globals.watchInterval);\n}, window.jQuery, window.Zepto));\n","// ==================================================\n// fancyBox v3.5.7\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2019 fancyApps\n//\n// ==================================================\n!function(t,e,n,o){\"use strict\";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger(\"blur\"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr(\"data-fancybox\")||\"\",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox=\"'+i+'\"]'):n('[data-fancybox=\"'+i+'\"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info(\"fancyBox already initialized\");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:\"auto\",toolbar:\"auto\",buttons:[\"zoom\",\"slideShow\",\"thumbs\",\"close\"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:\"auto\"}},video:{tpl:'',format:\"\",autoStart:!0},defaultType:\"image\",animationEffect:\"zoom\",animationDuration:366,zoomOpacity:\"auto\",transitionEffect:\"fade\",transitionDuration:366,slideClass:\"\",baseClass:\"\",baseTpl:'
 / 
{{buttons}}
{{arrows}}
',spinnerTpl:'
',errorTpl:'

{{ERROR}}

',btnTpl:{download:'',zoom:'',close:'',arrowLeft:'',arrowRight:'',smallBtn:''},parentEl:\"body\",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:\".fancybox-container\",axis:\"y\"},wheel:\"auto\",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return\"image\"===t.type&&\"zoom\"},clickSlide:\"close\",clickOutside:\"close\",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return\"image\"===t.type&&\"toggleControls\"},clickSlide:function(t,e){return\"image\"===t.type?\"toggleControls\":\"close\"},dblclickContent:function(t,e){return\"image\"===t.type&&\"zoom\"},dblclickSlide:function(t,e){return\"image\"===t.type&&\"zoom\"}},lang:\"en\",i18n:{en:{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",ERROR:\"The requested content cannot be loaded.
Please try again later.\",PLAY_START:\"Start slideshow\",PLAY_STOP:\"Pause slideshow\",FULL_SCREEN:\"Full screen\",THUMBS:\"Thumbnails\",DOWNLOAD:\"Download\",SHARE:\"Share\",ZOOM:\"Zoom\"},de:{CLOSE:\"Schließen\",NEXT:\"Weiter\",PREV:\"Zurück\",ERROR:\"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.\",PLAY_START:\"Diaschau starten\",PLAY_STOP:\"Diaschau beenden\",FULL_SCREEN:\"Vollbild\",THUMBS:\"Vorschaubilder\",DOWNLOAD:\"Herunterladen\",SHARE:\"Teilen\",ZOOM:\"Vergrößern\"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement(\"fakeelement\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(t in o)if(void 0!==n.style[t])return o[t];return\"transitionend\"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(\".fancybox-container\").css(\"pointer-events\",\"none\"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(\".fancybox-container\").css(\"pointer-events\",\"\"),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n(\"body\").addClass(\"fancybox-active\"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n(\"head\").append('\"),n(\"body\").addClass(\"compensate-for-scrollbar\")),i=\"\",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||\"\"}),o=n(a.translate(a,r.baseTpl.replace(\"{{buttons}}\",i).replace(\"{{arrows}}\",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr(\"id\",\"fancybox-container-\"+a.id).addClass(r.baseClass).data(\"FancyBox\",a).appendTo(r.parentEl),a.$refs={container:o},[\"bg\",\"inner\",\"infobar\",\"toolbar\",\"stage\",\"caption\",\"navigation\"].forEach(function(t){a.$refs[t]=o.find(\".fancybox-\"+t)}),a.trigger(\"onInit\"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\\{\\{(\\w+)\\}\\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):\"object\"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr(\"href\"),l.type||l.src||(l.type=\"inline\",l.src=e)):l={type:\"html\",src:e+\"\"},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||\"\",!a&&r&&((s=r.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))?(a=\"video\",l.opts.video.format||(l.opts.video.format=\"video/\"+(\"ogv\"===s[1]?\"ogg\":s[1]))):r.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?a=\"image\":r.match(/\\.(pdf)((\\?|#).*)?$/i)?(a=\"iframe\",l=n.extend(!0,l,{contentType:\"pdf\",opts:{iframe:{preload:!1}}})):\"#\"===r.charAt(0)&&(a=\"inline\")),a?l.type=a:o.trigger(\"objectNeedsType\",l),l.contentType||(l.contentType=n.inArray(l.type,[\"html\",\"inline\",\"ajax\"])>-1?\"html\":l.type),l.index=o.group.length,\"auto\"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,[\"html\",\"inline\",\"ajax\"])>-1),\"auto\"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find(\"img:first\"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find(\"img:first\")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),\"function\"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),\"function\"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?\"\":l.opts.caption+\"\"),\"ajax\"===l.type&&(c=r.split(/\\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on(\"click.fb-close\",\"[data-fancybox-close]\",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on(\"touchstart.fb-prev click.fb-prev\",\"[data-fancybox-prev]\",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on(\"touchstart.fb-next click.fb-next\",\"[data-fancybox-next]\",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on(\"click.fb\",\"[data-fancybox-zoom]\",function(t){e[e.isScaledDown()?\"scaleToActual\":\"scaleToFit\"]()}),s.on(\"orientationchange.fb resize.fb\",function(t){t&&t.originalEvent&&\"resize\"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&\"iframe\"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on(\"keydown.fb\",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is(\"input,textarea,video,audio,select\")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger(\"afterKeydown\",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on(\"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off(\"orientationchange.fb resize.fb\"),r.off(\"keydown.fb .fb-idle\"),this.$refs.container.off(\".fb-close .fb-prev .fb-next\"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger(\"beforeShow\",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?\"animationDuration\":\"transitionDuration\"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass(\"fancybox-slide--current\"),o)return s.opts.animationEffect&&e&&f.$refs.container.css(\"transition-duration\",e+\"ms\"),f.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\"),f.loadSlide(s),void f.preload(\"image\");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass(\"fancybox-animated\").removeClass(function(t,e){return(e.match(/(^|\\s)fancybox-fx-\\S+/g)||[]).join(\" \")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass(\"fancybox-slide--\"+(o.pos>s.pos?\"next\":\"previous\")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:\"\",opacity:\"\"}).removeClass(\"fancybox-slide--next fancybox-slide--previous\"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d=\"fancybox-animated fancybox-fx-\"+s.opts.transitionEffect,r.$slide.addClass(\"fancybox-slide--\"+(r.pos>s.pos?\"next\":\"previous\")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass(\"fancybox-slide--next fancybox-slide--previous\")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload(\"image\")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('
').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||\"image\"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),ap&&(s=i.top*c-(e*c-e),s>0&&(s=0),se-.5&&(l=e),d>o-.5&&(d=o),\"image\"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css(\"paddingTop\")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css(\"paddingLeft\"))):\"video\"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||\"video\"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger(\"refresh\"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(\".fancybox-button--arrow_right\")).toggleClass(\"compensate-for-scrollbar\",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger(\"onUpdate\",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:\"\",opacity:\"\"}),i.parent().children().removeClass(\"fancybox-slide--previous fancybox-slide--next\"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:\"\",opacity:\"\"}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass(\"fancybox-animated\")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass(\"fancybox-is-zoomable\",i),n(\"[data-fancybox-zoom]\").prop(\"disabled\",!i),o?r.addClass(\"fancybox-can-pan\"):i&&(\"zoom\"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&\"zoom\"==s.opts.clickContent(s))?r.addClass(\"fancybox-can-zoomIn\"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&\"video\"!==s.contentType&&r.addClass(\"fancybox-can-swipe\"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&\"image\"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger(\"beforeLoad\",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off(\"refresh\").trigger(\"onReset\").addClass(t.opts.slideClass),e){case\"image\":a.setImage(t);break;case\"iframe\":a.setIframe(t);break;case\"html\":a.setContent(t,t.src||t.content);break;case\"video\":a.setContent(t,t.opts.video.tpl.replace(/\\{\\{src\\}\\}/gi,t.src).replace(\"{{format}}\",t.opts.videoFormat||t.opts.video.format||\"\").replace(\"{{poster}}\",t.thumb||\"\"));break;case\"inline\":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case\"ajax\":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){\"success\"===n&&a.setContent(t,e)},error:function(e,n){e&&\"abort\"!==n&&a.setError(t)}})),o.one(\"onReset\",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('
').addClass(\"fancybox-is-hidden\").appendTo(t.$slide.addClass(\"fancybox-slide--image\")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement(\"img\"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass(\"fancybox-image\").appendTo(t.$content).attr(\"src\",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(\",\").map(function(t){var e={};return t.trim().split(/\\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r=a||\"x\"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&\"w\"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement(\"img\"),a=n(i);t.$image=a.one(\"error\",function(){o.setError(t)}).one(\"load\",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&\"auto\"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?\"100\":Math.round(t.width/t.height*100))+\"vw\"),a.attr(\"sizes\",e).attr(\"srcset\",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass(\"fancybox-image\").attr(\"src\",t.src).appendTo(t.$content),(i.complete||\"complete\"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger(\"load\"):i.error&&a.trigger(\"error\")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('
').css(i.css).appendTo(a),a.addClass(\"fancybox-slide--\"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\\{rnd\\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on(\"load.fb error.fb\",function(e){this.isReady=1,t.$slide.trigger(\"refresh\"),o.afterLoad(t)}),a.on(\"refresh.fb\",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find(\"body\")}catch(t){}o&&o.length&&o.children().length&&(a.css(\"overflow\",\"visible\"),s.css({width:\"100%\",\"max-width\":\"100%\",height:\"9999px\"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css(\"width\",r||\"\").css(\"max-width\",\"\"),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css(\"height\",c||\"\"),a.css(\"overflow\",\"auto\")),s.removeClass(\"fancybox-is-hidden\")}})):o.afterLoad(t),e.attr(\"src\",t.src),a.one(\"onReset\",function(){try{n(this).find(\"iframe\").hide().unbind().attr(\"src\",\"//about:blank\")}catch(t){}n(this).off(\"refresh.fb\").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass(\"fancybox-content\")||e.parent().hasClass(\"fancybox-content\"))&&e.parents(\".fancybox-slide\").trigger(\"onReset\"),t.$placeholder=n(\"
\").hide().insertAfter(e),e.css(\"display\",\"inline-block\")):t.hasError||(\"string\"===n.type(e)&&(e=n(\"
\").append(n.trim(e)).contents()),t.opts.filter&&(e=n(\"
\").html(e).find(t.opts.filter))),t.$slide.one(\"onReset\",function(){n(this).find(\"video,audio\").trigger(\"pause\"),t.$placeholder&&(t.$placeholder.after(e.removeClass(\"fancybox-content\").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is(\"video,audio\")&&(n(e).addClass(\"fancybox-video\"),n(e).wrap(\"
\"),t.contentType=\"video\",t.opts.width=t.opts.width||n(e).attr(\"width\"),t.opts.height=t.opts.height||n(e).attr(\"height\")),t.$content=t.$slide.children().filter(\"div,form,main,video,audio,article,.fancybox-content\").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner(\"
\").children().first()),t.$content.addClass(\"fancybox-content\"),t.$slide.addClass(\"fancybox-slide--\"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger(\"onReset\").removeClass(\"fancybox-slide--\"+t.contentType).addClass(\"fancybox-slide--error\"),t.contentType=\"html\",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn(\"fast\"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger(\"afterLoad\",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on(\"contextmenu.fb\",function(t){return 2==t.button&&t.preventDefault(),!0}),\"image\"===t.type&&n('
').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass(\"fancybox-caption--separate\",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css(\"padding-bottom\",r||\"\"))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css(\"margin-bottom\",\"\"),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style[\"padding-bottom\"],i=s.$slide.css(\"padding-bottom\"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css(\"padding-bottom\",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css(\"padding-bottom\",o))),s.$content.css(\"margin-bottom\",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?\"animationEffect\":\"transitionEffect\"],i=t.opts[s.firstRun?\"animationDuration\":\"transitionDuration\"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),\"zoom\"===e&&(t.pos===s.currPos&&i&&\"image\"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e=\"fade\"),\"zoom\"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,\"auto\"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass(\"fancybox-is-hidden\"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o=\"fancybox-slide--\"+(t.pos>=s.prevPos?\"next\":\"previous\")+\" fancybox-animated fancybox-fx-\"+e,r.addClass(o).removeClass(\"fancybox-slide--current\"),t.$content.removeClass(\"fancybox-is-hidden\"),p(r),\"image\"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,\"fancybox-slide--current\",i,function(){r.removeClass(o).css({transform:\"\",opacity:\"\"}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass(\"fancybox-is-hidden\"),u||!d||\"image\"!==t.type||t.hasError||t.$content.hide().fadeIn(\"fast\"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css(\"border-top-width\")||0),i=parseFloat(c.css(\"border-right-width\")||0),a=parseFloat(c.css(\"border-bottom-width\")||0),s=parseFloat(c.css(\"border-left-width\")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger(\"onReset\"),e.preload(\"inline\"),p(o.$slide),o.$slide.addClass(\"fancybox-slide--complete\"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger(\"afterShow\"),o.opts.video.autoStart&&o.$slide.find(\"video,audio\").filter(\":visible:first\").trigger(\"play\").one(\"ended\",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&\"html\"===o.contentType&&(t=o.$content.find(\"input[autofocus]:enabled:visible:first\"),t.length?t.trigger(\"focus\"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden])\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"])'].join(\",\");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find(\"*:visible\"+(o?\":not(.fancybox-close-small)\":\"\")):s.$refs.container.find(\"*:visible\"),i=i.filter(r).filter(function(){return\"hidden\"!==n(this).css(\"visibility\")&&!n(this).hasClass(\"disabled\")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger(\"focus\")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger(\"focus\"))):s.$refs.container.trigger(\"focus\"))},activate:function(){var t=this;n(\".fancybox-container\").each(function(){var e=n(this).data(\"FancyBox\");e&&e.id!==t.id&&!e.isClosing&&(e.trigger(\"onDeactivate\"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger(\"onActivate\"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger(\"beforeClose\",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger(\"onReset\").remove(),i&&u.$refs.container.removeClass(\"fancybox-is-open\").addClass(\"fancybox-is-closing\").css(\"transition-duration\",i+\"ms\"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),\"zoom\"!==o||a&&i&&\"image\"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o=\"fade\"),\"zoom\"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity,\n\"auto\"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"),\"fancybox-animated fancybox-fx-\"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger(\"onReset\"),s.$refs.container.empty().remove(),s.trigger(\"afterClose\",e),s.current.opts.backFocus&&(r&&r.length&&r.is(\":visible\")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger(\"focus\"),n(\"html, body\").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\"),n(\"#fancybox-style-noscroll\").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;\"afterClose\"!==t&&a.$refs?a.$refs.container.trigger(t+\".fb\",i):r.trigger(t+\".fb\",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger(\"refresh\"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find(\"[data-fancybox-count]\").html(t.group.length),a.find(\"[data-fancybox-index]\").html(i+1),a.find(\"[data-fancybox-prev]\").prop(\"disabled\",!o.opts.loop&&i<=0),a.find(\"[data-fancybox-next]\").prop(\"disabled\",!o.opts.loop&&i>=t.group.length-1),\"image\"===o.type?a.find(\"[data-fancybox-zoom]\").show().end().find(\"[data-fancybox-download]\").attr(\"href\",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide(),n(e.activeElement).is(\":hidden,[disabled]\")&&t.$refs.container.trigger(\"focus\")},hideControls:function(t){var e=this,n=[\"infobar\",\"toolbar\",\"nav\"];!t&&e.current.opts.preventCaptionOverlap||n.push(\"caption\"),this.$refs.container.removeClass(n.map(function(t){return\"fancybox-show-\"+t}).join(\" \")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass(\"fancybox-show-toolbar\",!(!e.toolbar||!e.buttons)).toggleClass(\"fancybox-show-infobar\",!!(e.infobar&&t.group.length>1)).toggleClass(\"fancybox-show-caption\",!!t.$caption).toggleClass(\"fancybox-show-nav\",!!(e.arrows&&t.group.length>1)).toggleClass(\"fancybox-is-modal\",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:\"3.5.7\",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&(\"string\"===n.type(t)?e[t].apply(e,o):\"function\"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add(\"body\").off(\"click.fb-start\",\"**\")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement(\"div\");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue(\"transform\")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css(\"opacity\"))})},setTranslate:function(t,e){var n=\"\",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+\"px, \"+(void 0===e.top?t.position().top:e.top)+\"px\",n=this.use3d?\"translate3d(\"+n+\", 0px)\":\"translate(\"+n+\")\"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=\" scale(\"+e.scaleX+\", \"+e.scaleY+\")\":void 0!==e.scaleX&&(n+=\" scaleX(\"+e.scaleX+\")\"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&\"z-index\"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css(\"transition-duration\",\"\"),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css(\"transition-duration\",o+\"ms\"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass(\"fancybox-slide--image\")&&t.parent().addClass(\"fancybox-is-scaling\")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data(\"timer\",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data(\"timer\")),e&&t.trigger(f),t.off(f).css(\"transition-duration\",\"\"),t.parent().removeClass(\"fancybox-is-scaling\"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n(\"body\").off(\"click.fb-start\",e).on(\"click.fb-start\",e,{options:t},i):this.off(\"click.fb-start\").on(\"click.fb-start\",{items:this,options:t},i),this},r.on(\"click.fb-start\",\"[data-fancybox]\",i),r.on(\"click.fb-start\",\"[data-fancybox-trigger]\",function(t){n('[data-fancybox=\"'+n(this).attr(\"data-fancybox-trigger\")+'\"]').eq(n(this).attr(\"data-fancybox-index\")||0).trigger(\"click.fb-start\",{$trigger:n(this)})}),function(){var t=null;r.on(\"mousedown mouseup focus blur\",\".fancybox-button\",function(e){switch(e.type){case\"mousedown\":t=n(this);break;case\"mouseup\":t=null;break;case\"focusin\":n(\".fancybox-button\").removeClass(\"fancybox-focus\"),n(this).is(t)||n(this).is(\"[disabled]\")||n(this).addClass(\"fancybox-focus\");break;case\"focusout\":n(\".fancybox-button\").removeClass(\"fancybox-focus\")}})}()}}(window,document,jQuery),function(t){\"use strict\";var e={youtube:{matcher:/(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:\"transparent\",enablejsapi:1,html5:1},paramPlace:8,type:\"iframe\",url:\"https://www.youtube-nocookie.com/embed/$4\",thumb:\"https://img.youtube.com/vi/$4/hqdefault.jpg\"},vimeo:{matcher:/^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:\"iframe\",url:\"//player.vimeo.com/video/$2\"},instagram:{matcher:/(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,type:\"image\",url:\"//$1/p/$2/media/?size=l\"},gmap_place:{matcher:/(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,type:\"iframe\",url:function(t){return\"//maps.google.\"+t[2]+\"/?ll=\"+(t[9]?t[9]+\"&z=\"+Math.floor(t[10])+(t[12]?t[12].replace(/^\\//,\"&\"):\"\"):t[12]+\"\").replace(/\\?/,\"&\")+\"&output=\"+(t[12]&&t[12].indexOf(\"layer=c\")>0?\"svembed\":\"embed\")}},gmap_search:{matcher:/(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,type:\"iframe\",url:function(t){return\"//maps.google.\"+t[2]+\"/maps?q=\"+t[5].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")+\"&output=embed\"}}},n=function(e,n,o){if(e)return o=o||\"\",\"object\"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace(\"$\"+t,n||\"\")}),o.length&&(e+=(e.indexOf(\"?\")>0?\"&\":\"?\")+o),e};t(document).on(\"objectNeedsType.fb\",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||\"\",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],\"?\"==d[0]&&(d=d.substring(1)),d=d.split(\"&\");for(var i=0;i1&&(\"youtube\"===n.contentSource||\"vimeo\"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){\"use strict\";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?\"x\"===n?t.x-e.x:\"y\"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data(\"selectable\"))return!0;for(var e=0,o=t[0].attributes,i=o.length;ee.clientHeight,a=(\"scroll\"===o||\"auto\"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass(\"fancybox-stage\")||t.is(\"body\"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on(\"touchstart.fb.touch mousedown.fb.touch\",n.proxy(e,\"ontouchstart\"))};d.prototype.destroy=function(){var t=this;t.$container.off(\".fb.touch\"),n(e).off(\".fb.touch\"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h=\"touchstart\"==o.type;if(h&&i.$container.off(\"mousedown.fb.touch\"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is(\"img\")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass(\"fancybox-animated\"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(\".fb.touch\").on(h?\"touchend.fb.touch touchcancel.fb.touch\":\"mouseup.fb.touch mouseleave.fb.touch\",n.proxy(i,\"ontouchend\")).on(h?\"touchmove.fb.touch\":\"mousemove.fb.touch\",n.proxy(i,\"ontouchmove\")),n.fancybox.isMobile&&e.addEventListener(\"scroll\",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(\".fancybox-image\")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(\".fancybox-caption\").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass(\"fancybox-is-grabbing\")),2===i.startPoints.length&&\"image\"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener(\"scroll\",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],\"x\"),e.distanceY=s(e.newPoints[0],e.startPoints[0],\"y\"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)\"x\"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:\"x\"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass(\"fancybox-is-sliding\"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping=\"y\":r.isDragging||!1===s.opts.vertical||\"auto\"===s.opts.vertical&&n(t).width()>800?s.isSwiping=\"x\":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?\"y\":\"x\"),\"y\"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:\"\",opacity:\"\",\"transition-duration\":\"\"}).removeClass(\"fancybox-animated\").removeClass(function(t,e){return(e.match(/(^|\\s)fancybox-fx-\\S+/g)||[]).join(\" \")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,\"y\"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||\"x\"!=t&&\"y\"!=t||o.instance.centerSlide(200),o.$container.removeClass(\"fancybox-is-sliding\")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),rs.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case\"close\":r.close(i.startEvent);break;case\"toggleControls\":r.toggleControls();break;case\"next\":r.next();break;case\"nextOrClose\":r.group.length>1?r.next():r.close(i.startEvent);break;case\"zoom\":\"image\"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is(\"img\")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\"))o=\"Outside\";else if(s.is(\".fancybox-slide\"))o=\"Slide\";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o=\"Content\"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f(\"dblclick\"+o)}else i.tapX=d,i.tapY=u,c.opts[\"dblclick\"+o]&&c.opts[\"dblclick\"+o]!==c.opts[\"click\"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f(\"click\"+o)},500):f(\"click\"+o);return this}},n(e).on(\"onActivate.fb\",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on(\"beforeClose.fb\",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){\"use strict\";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('
').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&\"image\"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger(\"onFullscreenChange\",t),n.$refs.container.toggleClass(\"fancybox-is-fullscreen\",t),n.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").toggleClass(\"fancybox-button--fsenter\",!t).toggleClass(\"fancybox-button--fsexit\",t))})}e(t).on({\"onInit.fb\":function(t,e){var i;if(!n)return void e.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on(\"click.fb-fullscreen\",\"[data-fancybox-fullscreen]\",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide()},\"afterKeydown.fb\":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},\"beforeClose.fb\":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass(\"fancybox-is-fullscreen\")&&o.exit()}})}(document,jQuery),function(t,e){\"use strict\";var n=\"fancybox-thumbs\";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:\".fancybox-container\",axis:\"y\"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find(\"[data-fancybox-thumbs]\");for(var i=0,a=n.length;i1));i++);o>1&&e.opts?(e.$button.removeAttr(\"style\").on(\"click\",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('
').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on(\"click\",\"a\",function(){i.jumpTo(e(this).attr(\"data-index\"))})),o.$list||(o.$list=e('
').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||\"image\"!==n.type||(t=n.src),s.push('\")}),o.$list[0].innerHTML=s.join(\"\"),\"x\"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css(\"padding-right\"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass(\"fancybox-thumbs-active\").filter('[data-index=\"'+o.instance.current.index+'\"]').addClass(\"fancybox-thumbs-active\"),n=e.position(),\"y\"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):\"x\"===o.opts.axis&&(n.lefta.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger(\"onThumbsShow\"),t.focus(0)):t.$grid&&t.instance.trigger(\"onThumbsHide\"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({\"onInit.fb\":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},\"beforeShow.fb\":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},\"afterKeydown.fb\":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},\"beforeClose.fb\":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){\"use strict\";function n(t){var e={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"/\":\"/\",\"`\":\"`\",\"=\":\"=\"};return String(t).replace(/[&<>\"'`=\\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{url:function(t,e){return!t.currentHash&&\"inline\"!==e.type&&\"html\"!==e.type&&(e.origSrc||e.src)||window.location},\ntpl:''}}),e(t).on(\"click\",\"[data-fancybox-share]\",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&(\"function\"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\\{\\{media\\}\\}/g,\"image\"===a.type?encodeURIComponent(a.src):\"\").replace(/\\{\\{url\\}\\}/g,encodeURIComponent(t)).replace(/\\{\\{url_raw\\}\\}/g,n(t)).replace(/\\{\\{descr\\}\\}/g,i.$caption?encodeURIComponent(i.$caption.text()):\"\"),e.fancybox.open({src:i.translate(i,o),type:\"html\",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one(\"beforeClose.fb\",function(){t.close(null,0)}),e.$content.find(\".fancybox-share__button\").click(function(){return window.open(this.href,\"Share\",\"width=550, height=450\"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){\"use strict\";function o(){var e=t.location.hash.substr(1),n=e.split(\"-\"),o=n.length>1&&/^\\+?\\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join(\"-\");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){\"\"!==t.gallery&&n(\"[data-fancybox='\"+n.escapeSelector(t.gallery)+\"']\").eq(t.index-1).focus().trigger(\"click.fb-start\")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,\"\"!==(n=e.hash||(e.$orig?e.$orig.data(\"fancybox\")||e.$orig.data(\"fancybox-trigger\"):\"\"))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+\"\").replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,function(t,e){return e?\"\\0\"===t?\"�\":t.slice(0,-1)+\"\\\\\"+t.charCodeAt(t.length-1).toString(16)+\" \":\"\\\\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({\"onInit.fb\":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},\"beforeShow.fb\":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?\"-\"+(i.index+1):\"\"),t.location.hash!==\"#\"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){\"replaceState\"in t.history?(t.history[s?\"pushState\":\"replaceState\"]({},e.title,t.location.pathname+t.location.search+\"#\"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},\"beforeClose.fb\":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&(\"replaceState\"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||\"\")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on(\"hashchange.fb\",function(){var t=o(),e=null;n.each(n(\".fancybox-container\").get().reverse(),function(t,o){var i=n(o).data(\"FancyBox\");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+\"-\"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):\"\"!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){\"use strict\";var n=(new Date).getTime();e(t).on({\"onInit.fb\":function(t,e,o){e.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||\"auto\"===o.opts.wheel&&\"image\"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass(\"fancybox-animated\")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?\"next\":\"previous\"]())))})}})}(document,jQuery);","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.Sweetalert2=e()}(this,function(){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){for(var n=0;n\\n
\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n

    \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n \\n \\n
    \\n \\n
    \\n \\n \\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n').replace(/(^|\\n)\\s*/g,\"\"),ft=function(t){var e;if((e=z())&&(e.parentNode.removeChild(e),ut([document.documentElement,document.body],[_[\"no-backdrop\"],_[\"toast-shown\"],_[\"has-column\"]])),ot())g(\"SweetAlert2 requires document to initialize\");else{var n=document.createElement(\"div\");n.className=_.container,n.innerHTML=pt;var o,i,r,a,c,s,u,l,d,p,f,m,h=\"string\"==typeof(o=t.target)?document.querySelector(o):o;h.appendChild(n),i=t,(r=W()).setAttribute(\"role\",i.toast?\"alert\":\"dialog\"),r.setAttribute(\"aria-live\",i.toast?\"polite\":\"assertive\"),i.toast||r.setAttribute(\"aria-modal\",\"true\"),a=h,\"rtl\"===window.getComputedStyle(a).direction&&st(z(),_.rtl),c=k(),s=lt(c,_.input),u=lt(c,_.file),l=c.querySelector(\".\".concat(_.range,\" input\")),d=c.querySelector(\".\".concat(_.range,\" output\")),p=lt(c,_.select),f=c.querySelector(\".\".concat(_.checkbox,\" input\")),m=lt(c,_.textarea),s.oninput=it,u.onchange=it,p.onchange=it,f.onchange=it,m.oninput=it,l.oninput=function(t){it(t),d.value=l.value},l.onchange=function(t){it(t),l.nextSibling.value=l.value}}},mt=function(t,e){t.jquery?ht(e,t):e.innerHTML=t.toString()},ht=function(t,e){if(t.innerHTML=\"\",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},gt=function(){if(ot())return!1;var t=document.createElement(\"div\"),e={WebkitAnimation:\"webkitAnimationEnd\",OAnimation:\"oAnimationEnd oanimationend\",animation:\"animationend\"};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&void 0!==t.style[n])return e[n];return!1}();function vt(t,e,n){var o;tt(t,n[\"show\".concat((o=e).charAt(0).toUpperCase()+o.slice(1),\"Button\")],\"inline-block\"),t.innerHTML=n[\"\".concat(e,\"ButtonText\")],t.setAttribute(\"aria-label\",n[\"\".concat(e,\"ButtonAriaLabel\")]),t.className=_[e],V(t,n,\"\".concat(e,\"Button\")),st(t,n[\"\".concat(e,\"ButtonClass\")])}function bt(t,e){var n=z();if(n){var o,i,r,a;o=n,\"string\"==typeof(i=e.backdrop)?o.style.background=i:i||st([document.documentElement,document.body],_[\"no-backdrop\"]),!e.backdrop&&e.allowOutsideClick&&R('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`'),r=n,(a=e.position)in _?st(r,_[a]):(R('The \"position\" parameter is not valid, defaulting to \"center\"'),st(r,_.center)),function(t,e){if(e&&\"string\"==typeof e){var n=\"grow-\".concat(e);n in _&&st(t,_[n])}}(n,e.grow),V(n,e,\"container\");var c=document.body.getAttribute(\"data-swal2-queue-step\");c&&(n.setAttribute(\"data-queue-step\",c),document.body.removeAttribute(\"data-swal2-queue-step\"))}}function yt(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}var wt={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Ct=[\"input\",\"file\",\"range\",\"select\",\"radio\",\"checkbox\",\"textarea\"],kt=function(t){if(!Bt[t.input])return g('Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"'.concat(t.input,'\"'));var e=At(t.input),n=Bt[t.input](e,t);X(n),setTimeout(function(){Q(n)})},xt=function(t,e){var n=Z(k(),t);if(n)for(var o in!function(t){for(var e=0;e=s.progressSteps.length&&R(\"Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)\"),s.progressSteps.forEach(function(t,e){var n,o,i,r,a=(n=t,o=document.createElement(\"li\"),st(o,_[\"progress-step\"]),o.innerHTML=n,o);if(u.appendChild(a),e===l&&st(a,_[\"active-progress-step\"]),e!==s.progressSteps.length-1){var c=(i=t,r=document.createElement(\"li\"),st(r,_[\"progress-step-line\"]),i.progressStepsDistance&&(r.style.width=i.progressStepsDistance),r);u.appendChild(c)}})}function Lt(t,e){var n,o,i,r,a=T();V(a,e,\"header\"),Tt(0,e),function(t,e){var n=wt.innerParams.get(t);if(n&&e.icon===n.icon&&w())V(w(),e,\"icon\");else if(Ht(),e.icon)if(-1!==Object.keys(F).indexOf(e.icon)){var o=y(\".\".concat(_.icon,\".\").concat(F[e.icon]));X(o),jt(o,e),It(),V(o,e,\"icon\"),st(o,e.showClass.icon)}else g('Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"'.concat(e.icon,'\"'))}(t,e),function(t){var e=x();if(!t.imageUrl)return G(e);X(e),e.setAttribute(\"src\",t.imageUrl),e.setAttribute(\"alt\",t.imageAlt),J(e,\"width\",t.imageWidth),J(e,\"height\",t.imageHeight),e.className=_.image,V(e,t,\"image\")}(e),n=e,o=C(),tt(o,n.title||n.titleText),n.title&&rt(n.title,o),n.titleText&&(o.innerText=n.titleText),V(o,n,\"title\"),i=e,(r=M()).innerHTML=i.closeButtonHtml,V(r,i,\"closeButton\"),tt(r,i.showCloseButton),r.setAttribute(\"aria-label\",i.closeButtonAriaLabel)}function Ot(t,e){var n,o,i,r;n=e,o=W(),J(o,\"width\",n.width),J(o,\"padding\",n.padding),n.background&&(o.style.background=n.background),Rt(o,n),bt(0,e),Lt(t,e),Et(t,e),at(0,e),i=e,r=L(),tt(r,i.footer),i.footer&&rt(i.footer,r),V(r,i,\"footer\"),\"function\"==typeof e.onRender&&e.onRender(W())}function Mt(){return B()&&B().click()}var Ht=function(){for(var t=n(),e=0;e
    \\n \\n
    \\n
    \\n ';else if(\"error\"===e.icon)t.innerHTML='\\n \\n \\n \\n \\n ';else{t.innerHTML=Vt({question:\"?\",warning:\"!\",info:\"i\"}[e.icon])}},Vt=function(t){return'
    ').concat(t,\"
    \")},qt=[],Rt=function(t,e){t.className=\"\".concat(_.popup,\" \").concat(dt(t)?e.showClass.popup:\"\"),e.toast?(st([document.documentElement,document.body],_[\"toast-shown\"]),st(t,_.toast)):st(t,_.modal),V(t,e,\"popup\"),\"string\"==typeof e.customClass&&st(t,e.customClass),e.icon&&st(t,_[\"icon-\".concat(e.icon)])};function Dt(){var t=W();t||Xe.fire(),t=W();var e=S(),n=B();X(e),X(n,\"inline-block\"),st([t,e],_.loading),n.disabled=!0,t.setAttribute(\"data-loading\",!0),t.setAttribute(\"aria-busy\",!0),t.focus()}function Nt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;Wt.restoreFocusTimeout=setTimeout(function(){Wt.previousActiveElement&&Wt.previousActiveElement.focus?(Wt.previousActiveElement.focus(),Wt.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Ut(){if(Wt.timeout)return function(){var t=O(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty(\"transition\"),t.style.width=\"100%\";var n=parseInt(window.getComputedStyle(t).width),o=parseInt(e/n*100);t.style.removeProperty(\"transition\"),t.style.width=\"\".concat(o,\"%\")}(),Wt.timeout.stop()}function _t(){if(Wt.timeout){var t=Wt.timeout.start();return nt(t),t}}function Ft(t){return Object.prototype.hasOwnProperty.call(Kt,t)}function zt(t){return Zt[t]}var Wt={},Kt={title:\"\",titleText:\"\",text:\"\",html:\"\",footer:\"\",icon:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:\"swal2-show\",backdrop:\"swal2-backdrop-show\",icon:\"swal2-icon-show\"},hideClass:{popup:\"swal2-hide\",backdrop:\"swal2-backdrop-hide\",icon:\"swal2-icon-hide\"},customClass:void 0,target:\"body\",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showCancelButton:!1,preConfirm:void 0,confirmButtonText:\"OK\",confirmButtonAriaLabel:\"\",confirmButtonColor:void 0,cancelButtonText:\"Cancel\",cancelButtonAriaLabel:\"\",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonHtml:\"×\",closeButtonAriaLabel:\"Close this dialog\",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:\"\",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:\"\",inputValue:\"\",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,validationMessage:void 0,grow:!1,position:\"center\",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,onRender:void 0,onClose:void 0,onAfterClose:void 0,onDestroy:void 0,scrollbarPadding:!0},Yt=[\"title\",\"titleText\",\"text\",\"html\",\"icon\",\"customClass\",\"allowOutsideClick\",\"allowEscapeKey\",\"showConfirmButton\",\"showCancelButton\",\"confirmButtonText\",\"confirmButtonAriaLabel\",\"confirmButtonColor\",\"cancelButtonText\",\"cancelButtonAriaLabel\",\"cancelButtonColor\",\"buttonsStyling\",\"reverseButtons\",\"imageUrl\",\"imageWidth\",\"imageHeight\",\"imageAlt\",\"progressSteps\",\"currentProgressStep\"],Zt={animation:'showClass\" and \"hideClass'},Qt=[\"allowOutsideClick\",\"allowEnterKey\",\"backdrop\",\"focusConfirm\",\"focusCancel\",\"heightAuto\",\"keydownListenerCapture\"],$t=Object.freeze({isValidParameter:Ft,isUpdatableParameter:function(t){return-1!==Yt.indexOf(t)},isDeprecatedParameter:zt,argsToParams:function(o){var i={};return\"object\"!==r(o[0])||b(o[0])?[\"title\",\"html\",\"icon\"].forEach(function(t,e){var n=o[e];\"string\"==typeof n||b(n)?i[t]=n:void 0!==n&&g(\"Unexpected type of \".concat(t,'! Expected \"string\" or \"Element\", got ').concat(r(n)))}):c(i,o[0]),i},isVisible:function(){return dt(W())},clickConfirm:Mt,clickCancel:function(){return E()&&E().click()},getContainer:z,getPopup:W,getTitle:C,getContent:k,getHtmlContainer:function(){return e(_[\"html-container\"])},getImage:x,getIcon:w,getIcons:n,getCloseButton:M,getActions:S,getConfirmButton:B,getCancelButton:E,getHeader:T,getFooter:L,getFocusableElements:H,getValidationMessage:A,isLoading:function(){return W().hasAttribute(\"data-loading\")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;nwindow.innerHeight&&(Y.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue(\"padding-right\")),document.body.style.paddingRight=\"\".concat(Y.previousBodyPadding+function(){var t=document.createElement(\"div\");t.className=_[\"scrollbar-measure\"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),\"px\"))}function Gt(){return!!window.MSInputMethodContext&&!!document.documentMode}function te(){var t=z(),e=W();t.style.removeProperty(\"align-items\"),e.offsetTop<0&&(t.style.alignItems=\"flex-start\")}var ee=function(){var n,o=z();o.ontouchstart=function(t){var e;n=t.target===o||!((e=o).scrollHeight>e.clientHeight)&&\"INPUT\"!==t.target.tagName},o.ontouchmove=function(t){n&&(t.preventDefault(),t.stopPropagation())}},ne={swalPromiseResolve:new WeakMap};function oe(t,e,n,o){n?ae(t,o):(Nt().then(function(){return ae(t,o)}),Wt.keydownTarget.removeEventListener(\"keydown\",Wt.keydownHandler,{capture:Wt.keydownListenerCapture}),Wt.keydownHandlerAdded=!1),e.parentNode&&e.parentNode.removeChild(e),I()&&(null!==Y.previousBodyPadding&&(document.body.style.paddingRight=\"\".concat(Y.previousBodyPadding,\"px\"),Y.previousBodyPadding=null),function(){if(j(document.body,_.iosfix)){var t=parseInt(document.body.style.top,10);ut(document.body,_.iosfix),document.body.style.top=\"\",document.body.scrollTop=-1*t}}(),\"undefined\"!=typeof window&&Gt()&&window.removeEventListener(\"resize\",te),m(document.body.children).forEach(function(t){t.hasAttribute(\"data-previous-aria-hidden\")?(t.setAttribute(\"aria-hidden\",t.getAttribute(\"data-previous-aria-hidden\")),t.removeAttribute(\"data-previous-aria-hidden\")):t.removeAttribute(\"aria-hidden\")})),ut([document.documentElement,document.body],[_.shown,_[\"height-auto\"],_[\"no-backdrop\"],_[\"toast-shown\"],_[\"toast-column\"]])}function ie(t){var e=W();if(e){var n=wt.innerParams.get(this);if(n&&!j(e,n.hideClass.popup)){var o=ne.swalPromiseResolve.get(this);ut(e,n.showClass.popup),st(e,n.hideClass.popup);var i=z();ut(i,n.showClass.backdrop),st(i,n.hideClass.backdrop),function(t,e,n){var o=z(),i=gt&&et(e),r=n.onClose,a=n.onAfterClose;if(r!==null&&typeof r===\"function\"){r(e)}if(i){re(t,e,o,a)}else{oe(t,o,K(),a)}}(this,e,n),o(t||{})}}}var re=function(t,e,n,o){Wt.swalCloseEventFinishedCallback=oe.bind(null,t,n,K(),o),e.addEventListener(gt,function(t){t.target===e&&(Wt.swalCloseEventFinishedCallback(),delete Wt.swalCloseEventFinishedCallback)})},ae=function(t,e){setTimeout(function(){\"function\"==typeof e&&e(),t._destroy()})};function ce(t,e,n){var o=wt.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function se(t,e){if(!t)return!1;if(\"radio\"===t.type)for(var n=t.parentNode.parentNode.querySelectorAll(\"input\"),o=0;o\")),ft(t)}function pe(t){var e=z(),n=W();\"function\"==typeof t.onBeforeOpen&&t.onBeforeOpen(n),xe(e,n,t),Ce(e,n),I()&&ke(e,t.scrollbarPadding),K()||Wt.previousActiveElement||(Wt.previousActiveElement=document.activeElement),\"function\"==typeof t.onOpen&&setTimeout(function(){return t.onOpen(n)})}function fe(t){var e=W();if(t.target===e){var n=z();e.removeEventListener(gt,fe),n.style.overflowY=\"auto\"}}function me(t,e){\"select\"===e.input||\"radio\"===e.input?Ee(t,e):-1!==[\"text\",\"email\",\"number\",\"tel\",\"textarea\"].indexOf(e.input)&&v(e.inputValue)&&Se(t,e)}function he(t,e){t.disableButtons(),e.input?Oe(t,e):Me(t,e,!0)}function ge(t,e){t.disableButtons(),e(U.cancel)}function ve(t,e){t.closePopup({value:e})}function be(e,t,n,o){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener(\"keydown\",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1),n.toast||(t.keydownHandler=function(t){return je(e,t,o)},t.keydownTarget=n.keydownListenerCapture?window:W(),t.keydownListenerCapture=n.keydownListenerCapture,t.keydownTarget.addEventListener(\"keydown\",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}function ye(t,e,n){var o=H(),i=0;if(i:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-self:stretch;-webkit-box-pack:center;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-content:center;-webkit-box-pack:center;justify-content:center}.swal2-container.swal2-grow-column{-webkit-box-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{-webkit-box-align:center;align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{-webkit-box-align:start;align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{-webkit-box-align:end;align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-content:center;-webkit-box-pack:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:-webkit-box;display:flex;z-index:1;flex-wrap:wrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.1)),to(rgba(0,0,0,.1)));background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.2)),to(rgba(0,0,0,.2)));background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\\\"\\\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{-webkit-box-pack:center;justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar{position:absolute;bottom:0;left:0;width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;-webkit-box-pack:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;-webkit-transition:color .1s ease-out;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{-webkit-transform:none;transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;-webkit-box-pack:center;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;-webkit-transition:border-color .3s,box-shadow .3s;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-webkit-input-placeholder,.swal2-input::-webkit-input-placeholder,.swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\\\"!\\\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;-webkit-box-pack:center;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;-webkit-box-flex:1;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:3.75em 3.75em;transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 3.75em;transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{-webkit-box-align:center;align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{-webkit-transition:none;transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg)}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg)}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg)}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg)}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg)}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg)}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:stretch;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{-webkit-box-flex:1;flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{-webkit-box-pack:center;justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}\");","/**\r\n * Swiper 6.3.5\r\n * Most modern mobile touch slider and framework with hardware accelerated transitions\r\n * https://swiperjs.com\r\n *\r\n * Copyright 2014-2020 Vladimir Kharlampidi\r\n *\r\n * Released under the MIT License\r\n *\r\n * Released on: October 30, 2020\r\n */\r\n\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.Swiper = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n function _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n function _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) _defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n }\r\n\r\n function _extends() {\r\n _extends = Object.assign || function (target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n };\r\n\r\n return _extends.apply(this, arguments);\r\n }\r\n\r\n /**\r\n * SSR Window 3.0.0-alpha.4\r\n * Better handling for window object in SSR environment\r\n * https://github.com/nolimits4web/ssr-window\r\n *\r\n * Copyright 2020, Vladimir Kharlampidi\r\n *\r\n * Licensed under MIT\r\n *\r\n * Released on: May 20, 2020\r\n */\r\n\r\n /* eslint-disable no-param-reassign */\r\n function isObject(obj) {\r\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\r\n }\r\n\r\n function extend(target, src) {\r\n if (target === void 0) {\r\n target = {};\r\n }\r\n\r\n if (src === void 0) {\r\n src = {};\r\n }\r\n\r\n Object.keys(src).forEach(function (key) {\r\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\r\n extend(target[key], src[key]);\r\n }\r\n });\r\n }\r\n\r\n var ssrDocument = {\r\n body: {},\r\n addEventListener: function addEventListener() {},\r\n removeEventListener: function removeEventListener() {},\r\n activeElement: {\r\n blur: function blur() {},\r\n nodeName: ''\r\n },\r\n querySelector: function querySelector() {\r\n return null;\r\n },\r\n querySelectorAll: function querySelectorAll() {\r\n return [];\r\n },\r\n getElementById: function getElementById() {\r\n return null;\r\n },\r\n createEvent: function createEvent() {\r\n return {\r\n initEvent: function initEvent() {}\r\n };\r\n },\r\n createElement: function createElement() {\r\n return {\r\n children: [],\r\n childNodes: [],\r\n style: {},\r\n setAttribute: function setAttribute() {},\r\n getElementsByTagName: function getElementsByTagName() {\r\n return [];\r\n }\r\n };\r\n },\r\n createElementNS: function createElementNS() {\r\n return {};\r\n },\r\n importNode: function importNode() {\r\n return null;\r\n },\r\n location: {\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n href: '',\r\n origin: '',\r\n pathname: '',\r\n protocol: '',\r\n search: ''\r\n }\r\n };\r\n\r\n function getDocument() {\r\n var doc = typeof document !== 'undefined' ? document : {};\r\n extend(doc, ssrDocument);\r\n return doc;\r\n }\r\n\r\n var ssrWindow = {\r\n document: ssrDocument,\r\n navigator: {\r\n userAgent: ''\r\n },\r\n location: {\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n href: '',\r\n origin: '',\r\n pathname: '',\r\n protocol: '',\r\n search: ''\r\n },\r\n history: {\r\n replaceState: function replaceState() {},\r\n pushState: function pushState() {},\r\n go: function go() {},\r\n back: function back() {}\r\n },\r\n CustomEvent: function CustomEvent() {\r\n return this;\r\n },\r\n addEventListener: function addEventListener() {},\r\n removeEventListener: function removeEventListener() {},\r\n getComputedStyle: function getComputedStyle() {\r\n return {\r\n getPropertyValue: function getPropertyValue() {\r\n return '';\r\n }\r\n };\r\n },\r\n Image: function Image() {},\r\n Date: function Date() {},\r\n screen: {},\r\n setTimeout: function setTimeout() {},\r\n clearTimeout: function clearTimeout() {},\r\n matchMedia: function matchMedia() {\r\n return {};\r\n },\r\n requestAnimationFrame: function requestAnimationFrame(callback) {\r\n if (typeof setTimeout === 'undefined') {\r\n callback();\r\n return null;\r\n }\r\n\r\n return setTimeout(callback, 0);\r\n },\r\n cancelAnimationFrame: function cancelAnimationFrame(id) {\r\n if (typeof setTimeout === 'undefined') {\r\n return;\r\n }\r\n\r\n clearTimeout(id);\r\n }\r\n };\r\n\r\n function getWindow() {\r\n var win = typeof window !== 'undefined' ? window : {};\r\n extend(win, ssrWindow);\r\n return win;\r\n }\r\n\r\n /**\r\n * Dom7 3.0.0-alpha.7\r\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\r\n * https://framework7.io/docs/dom7.html\r\n *\r\n * Copyright 2020, Vladimir Kharlampidi\r\n *\r\n * Licensed under MIT\r\n *\r\n * Released on: July 14, 2020\r\n */\r\n\r\n function _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n subClass.__proto__ = superClass;\r\n }\r\n\r\n function _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o);\r\n };\r\n return _getPrototypeOf(o);\r\n }\r\n\r\n function _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\r\n o.__proto__ = p;\r\n return o;\r\n };\r\n\r\n return _setPrototypeOf(o, p);\r\n }\r\n\r\n function _isNativeReflectConstruct() {\r\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\r\n if (Reflect.construct.sham) return false;\r\n if (typeof Proxy === \"function\") return true;\r\n\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n function _construct(Parent, args, Class) {\r\n if (_isNativeReflectConstruct()) {\r\n _construct = Reflect.construct;\r\n } else {\r\n _construct = function _construct(Parent, args, Class) {\r\n var a = [null];\r\n a.push.apply(a, args);\r\n var Constructor = Function.bind.apply(Parent, a);\r\n var instance = new Constructor();\r\n if (Class) _setPrototypeOf(instance, Class.prototype);\r\n return instance;\r\n };\r\n }\r\n\r\n return _construct.apply(null, arguments);\r\n }\r\n\r\n function _isNativeFunction(fn) {\r\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\r\n }\r\n\r\n function _wrapNativeSuper(Class) {\r\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\r\n\r\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\r\n if (Class === null || !_isNativeFunction(Class)) return Class;\r\n\r\n if (typeof Class !== \"function\") {\r\n throw new TypeError(\"Super expression must either be null or a function\");\r\n }\r\n\r\n if (typeof _cache !== \"undefined\") {\r\n if (_cache.has(Class)) return _cache.get(Class);\r\n\r\n _cache.set(Class, Wrapper);\r\n }\r\n\r\n function Wrapper() {\r\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\r\n }\r\n\r\n Wrapper.prototype = Object.create(Class.prototype, {\r\n constructor: {\r\n value: Wrapper,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n return _setPrototypeOf(Wrapper, Class);\r\n };\r\n\r\n return _wrapNativeSuper(Class);\r\n }\r\n\r\n function _assertThisInitialized(self) {\r\n if (self === void 0) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\r\n }\r\n\r\n return self;\r\n }\r\n /* eslint-disable no-proto */\r\n\r\n\r\n function makeReactive(obj) {\r\n var proto = obj.__proto__;\r\n Object.defineProperty(obj, '__proto__', {\r\n get: function get() {\r\n return proto;\r\n },\r\n set: function set(value) {\r\n proto.__proto__ = value;\r\n }\r\n });\r\n }\r\n\r\n var Dom7 = /*#__PURE__*/function (_Array) {\r\n _inheritsLoose(Dom7, _Array);\r\n\r\n function Dom7(items) {\r\n var _this;\r\n\r\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\r\n makeReactive(_assertThisInitialized(_this));\r\n return _this;\r\n }\r\n\r\n return Dom7;\r\n }( /*#__PURE__*/_wrapNativeSuper(Array));\r\n\r\n function arrayFlat(arr) {\r\n if (arr === void 0) {\r\n arr = [];\r\n }\r\n\r\n var res = [];\r\n arr.forEach(function (el) {\r\n if (Array.isArray(el)) {\r\n res.push.apply(res, arrayFlat(el));\r\n } else {\r\n res.push(el);\r\n }\r\n });\r\n return res;\r\n }\r\n\r\n function arrayFilter(arr, callback) {\r\n return Array.prototype.filter.call(arr, callback);\r\n }\r\n\r\n function arrayUnique(arr) {\r\n var uniqueArray = [];\r\n\r\n for (var i = 0; i < arr.length; i += 1) {\r\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\r\n }\r\n\r\n return uniqueArray;\r\n }\r\n\r\n function qsa(selector, context) {\r\n if (typeof selector !== 'string') {\r\n return [selector];\r\n }\r\n\r\n var a = [];\r\n var res = context.querySelectorAll(selector);\r\n\r\n for (var i = 0; i < res.length; i += 1) {\r\n a.push(res[i]);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function $(selector, context) {\r\n var window = getWindow();\r\n var document = getDocument();\r\n var arr = [];\r\n\r\n if (!context && selector instanceof Dom7) {\r\n return selector;\r\n }\r\n\r\n if (!selector) {\r\n return new Dom7(arr);\r\n }\r\n\r\n if (typeof selector === 'string') {\r\n var html = selector.trim();\r\n\r\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\r\n var toCreate = 'div';\r\n if (html.indexOf(' 0;\r\n }).length > 0;\r\n }\r\n\r\n function attr(attrs, value) {\r\n if (arguments.length === 1 && typeof attrs === 'string') {\r\n // Get attr\r\n if (this[0]) return this[0].getAttribute(attrs);\r\n return undefined;\r\n } // Set attrs\r\n\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n if (arguments.length === 2) {\r\n // String\r\n this[i].setAttribute(attrs, value);\r\n } else {\r\n // Object\r\n for (var attrName in attrs) {\r\n this[i][attrName] = attrs[attrName];\r\n this[i].setAttribute(attrName, attrs[attrName]);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function removeAttr(attr) {\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].removeAttribute(attr);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function transform(transform) {\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].style.transform = transform;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function transition(duration) {\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].style.transition = typeof duration !== 'string' ? duration + \"ms\" : duration;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function on() {\r\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\r\n args[_key5] = arguments[_key5];\r\n }\r\n\r\n var eventType = args[0],\r\n targetSelector = args[1],\r\n listener = args[2],\r\n capture = args[3];\r\n\r\n if (typeof args[1] === 'function') {\r\n eventType = args[0];\r\n listener = args[1];\r\n capture = args[2];\r\n targetSelector = undefined;\r\n }\r\n\r\n if (!capture) capture = false;\r\n\r\n function handleLiveEvent(e) {\r\n var target = e.target;\r\n if (!target) return;\r\n var eventData = e.target.dom7EventData || [];\r\n\r\n if (eventData.indexOf(e) < 0) {\r\n eventData.unshift(e);\r\n }\r\n\r\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\r\n var _parents = $(target).parents(); // eslint-disable-line\r\n\r\n\r\n for (var k = 0; k < _parents.length; k += 1) {\r\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\r\n }\r\n }\r\n }\r\n\r\n function handleEvent(e) {\r\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\r\n\r\n if (eventData.indexOf(e) < 0) {\r\n eventData.unshift(e);\r\n }\r\n\r\n listener.apply(this, eventData);\r\n }\r\n\r\n var events = eventType.split(' ');\r\n var j;\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n var el = this[i];\r\n\r\n if (!targetSelector) {\r\n for (j = 0; j < events.length; j += 1) {\r\n var event = events[j];\r\n if (!el.dom7Listeners) el.dom7Listeners = {};\r\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\r\n el.dom7Listeners[event].push({\r\n listener: listener,\r\n proxyListener: handleEvent\r\n });\r\n el.addEventListener(event, handleEvent, capture);\r\n }\r\n } else {\r\n // Live events\r\n for (j = 0; j < events.length; j += 1) {\r\n var _event = events[j];\r\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\r\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\r\n\r\n el.dom7LiveListeners[_event].push({\r\n listener: listener,\r\n proxyListener: handleLiveEvent\r\n });\r\n\r\n el.addEventListener(_event, handleLiveEvent, capture);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function off() {\r\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\r\n args[_key6] = arguments[_key6];\r\n }\r\n\r\n var eventType = args[0],\r\n targetSelector = args[1],\r\n listener = args[2],\r\n capture = args[3];\r\n\r\n if (typeof args[1] === 'function') {\r\n eventType = args[0];\r\n listener = args[1];\r\n capture = args[2];\r\n targetSelector = undefined;\r\n }\r\n\r\n if (!capture) capture = false;\r\n var events = eventType.split(' ');\r\n\r\n for (var i = 0; i < events.length; i += 1) {\r\n var event = events[i];\r\n\r\n for (var j = 0; j < this.length; j += 1) {\r\n var el = this[j];\r\n var handlers = void 0;\r\n\r\n if (!targetSelector && el.dom7Listeners) {\r\n handlers = el.dom7Listeners[event];\r\n } else if (targetSelector && el.dom7LiveListeners) {\r\n handlers = el.dom7LiveListeners[event];\r\n }\r\n\r\n if (handlers && handlers.length) {\r\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\r\n var handler = handlers[k];\r\n\r\n if (listener && handler.listener === listener) {\r\n el.removeEventListener(event, handler.proxyListener, capture);\r\n handlers.splice(k, 1);\r\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\r\n el.removeEventListener(event, handler.proxyListener, capture);\r\n handlers.splice(k, 1);\r\n } else if (!listener) {\r\n el.removeEventListener(event, handler.proxyListener, capture);\r\n handlers.splice(k, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function trigger() {\r\n var window = getWindow();\r\n\r\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\r\n args[_key9] = arguments[_key9];\r\n }\r\n\r\n var events = args[0].split(' ');\r\n var eventData = args[1];\r\n\r\n for (var i = 0; i < events.length; i += 1) {\r\n var event = events[i];\r\n\r\n for (var j = 0; j < this.length; j += 1) {\r\n var el = this[j];\r\n\r\n if (window.CustomEvent) {\r\n var evt = new window.CustomEvent(event, {\r\n detail: eventData,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n el.dom7EventData = args.filter(function (data, dataIndex) {\r\n return dataIndex > 0;\r\n });\r\n el.dispatchEvent(evt);\r\n el.dom7EventData = [];\r\n delete el.dom7EventData;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function transitionEnd(callback) {\r\n var dom = this;\r\n\r\n function fireCallBack(e) {\r\n if (e.target !== this) return;\r\n callback.call(this, e);\r\n dom.off('transitionend', fireCallBack);\r\n }\r\n\r\n if (callback) {\r\n dom.on('transitionend', fireCallBack);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function outerWidth(includeMargins) {\r\n if (this.length > 0) {\r\n if (includeMargins) {\r\n var _styles = this.styles();\r\n\r\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\r\n }\r\n\r\n return this[0].offsetWidth;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function outerHeight(includeMargins) {\r\n if (this.length > 0) {\r\n if (includeMargins) {\r\n var _styles2 = this.styles();\r\n\r\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\r\n }\r\n\r\n return this[0].offsetHeight;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function offset() {\r\n if (this.length > 0) {\r\n var window = getWindow();\r\n var document = getDocument();\r\n var el = this[0];\r\n var box = el.getBoundingClientRect();\r\n var body = document.body;\r\n var clientTop = el.clientTop || body.clientTop || 0;\r\n var clientLeft = el.clientLeft || body.clientLeft || 0;\r\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\r\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\r\n return {\r\n top: box.top + scrollTop - clientTop,\r\n left: box.left + scrollLeft - clientLeft\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function styles() {\r\n var window = getWindow();\r\n if (this[0]) return window.getComputedStyle(this[0], null);\r\n return {};\r\n }\r\n\r\n function css(props, value) {\r\n var window = getWindow();\r\n var i;\r\n\r\n if (arguments.length === 1) {\r\n if (typeof props === 'string') {\r\n // .css('width')\r\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\r\n } else {\r\n // .css({ width: '100px' })\r\n for (i = 0; i < this.length; i += 1) {\r\n for (var _prop in props) {\r\n this[i].style[_prop] = props[_prop];\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n\r\n if (arguments.length === 2 && typeof props === 'string') {\r\n // .css('width', '100px')\r\n for (i = 0; i < this.length; i += 1) {\r\n this[i].style[props] = value;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function each(callback) {\r\n if (!callback) return this;\r\n this.forEach(function (el, index) {\r\n callback.apply(el, [el, index]);\r\n });\r\n return this;\r\n }\r\n\r\n function filter(callback) {\r\n var result = arrayFilter(this, callback);\r\n return $(result);\r\n }\r\n\r\n function html(html) {\r\n if (typeof html === 'undefined') {\r\n return this[0] ? this[0].innerHTML : null;\r\n }\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].innerHTML = html;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function text(text) {\r\n if (typeof text === 'undefined') {\r\n return this[0] ? this[0].textContent.trim() : null;\r\n }\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].textContent = text;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function is(selector) {\r\n var window = getWindow();\r\n var document = getDocument();\r\n var el = this[0];\r\n var compareWith;\r\n var i;\r\n if (!el || typeof selector === 'undefined') return false;\r\n\r\n if (typeof selector === 'string') {\r\n if (el.matches) return el.matches(selector);\r\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\r\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\r\n compareWith = $(selector);\r\n\r\n for (i = 0; i < compareWith.length; i += 1) {\r\n if (compareWith[i] === el) return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if (selector === document) {\r\n return el === document;\r\n }\r\n\r\n if (selector === window) {\r\n return el === window;\r\n }\r\n\r\n if (selector.nodeType || selector instanceof Dom7) {\r\n compareWith = selector.nodeType ? [selector] : selector;\r\n\r\n for (i = 0; i < compareWith.length; i += 1) {\r\n if (compareWith[i] === el) return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function index() {\r\n var child = this[0];\r\n var i;\r\n\r\n if (child) {\r\n i = 0; // eslint-disable-next-line\r\n\r\n while ((child = child.previousSibling) !== null) {\r\n if (child.nodeType === 1) i += 1;\r\n }\r\n\r\n return i;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n function eq(index) {\r\n if (typeof index === 'undefined') return this;\r\n var length = this.length;\r\n\r\n if (index > length - 1) {\r\n return $([]);\r\n }\r\n\r\n if (index < 0) {\r\n var returnIndex = length + index;\r\n if (returnIndex < 0) return $([]);\r\n return $([this[returnIndex]]);\r\n }\r\n\r\n return $([this[index]]);\r\n }\r\n\r\n function append() {\r\n var newChild;\r\n var document = getDocument();\r\n\r\n for (var k = 0; k < arguments.length; k += 1) {\r\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n if (typeof newChild === 'string') {\r\n var tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = newChild;\r\n\r\n while (tempDiv.firstChild) {\r\n this[i].appendChild(tempDiv.firstChild);\r\n }\r\n } else if (newChild instanceof Dom7) {\r\n for (var j = 0; j < newChild.length; j += 1) {\r\n this[i].appendChild(newChild[j]);\r\n }\r\n } else {\r\n this[i].appendChild(newChild);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function prepend(newChild) {\r\n var document = getDocument();\r\n var i;\r\n var j;\r\n\r\n for (i = 0; i < this.length; i += 1) {\r\n if (typeof newChild === 'string') {\r\n var tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = newChild;\r\n\r\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\r\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\r\n }\r\n } else if (newChild instanceof Dom7) {\r\n for (j = 0; j < newChild.length; j += 1) {\r\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\r\n }\r\n } else {\r\n this[i].insertBefore(newChild, this[i].childNodes[0]);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n function next(selector) {\r\n if (this.length > 0) {\r\n if (selector) {\r\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\r\n return $([this[0].nextElementSibling]);\r\n }\r\n\r\n return $([]);\r\n }\r\n\r\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\r\n return $([]);\r\n }\r\n\r\n return $([]);\r\n }\r\n\r\n function nextAll(selector) {\r\n var nextEls = [];\r\n var el = this[0];\r\n if (!el) return $([]);\r\n\r\n while (el.nextElementSibling) {\r\n var _next = el.nextElementSibling; // eslint-disable-line\r\n\r\n if (selector) {\r\n if ($(_next).is(selector)) nextEls.push(_next);\r\n } else nextEls.push(_next);\r\n\r\n el = _next;\r\n }\r\n\r\n return $(nextEls);\r\n }\r\n\r\n function prev(selector) {\r\n if (this.length > 0) {\r\n var el = this[0];\r\n\r\n if (selector) {\r\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\r\n return $([el.previousElementSibling]);\r\n }\r\n\r\n return $([]);\r\n }\r\n\r\n if (el.previousElementSibling) return $([el.previousElementSibling]);\r\n return $([]);\r\n }\r\n\r\n return $([]);\r\n }\r\n\r\n function prevAll(selector) {\r\n var prevEls = [];\r\n var el = this[0];\r\n if (!el) return $([]);\r\n\r\n while (el.previousElementSibling) {\r\n var _prev = el.previousElementSibling; // eslint-disable-line\r\n\r\n if (selector) {\r\n if ($(_prev).is(selector)) prevEls.push(_prev);\r\n } else prevEls.push(_prev);\r\n\r\n el = _prev;\r\n }\r\n\r\n return $(prevEls);\r\n }\r\n\r\n function parent(selector) {\r\n var parents = []; // eslint-disable-line\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n if (this[i].parentNode !== null) {\r\n if (selector) {\r\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\r\n } else {\r\n parents.push(this[i].parentNode);\r\n }\r\n }\r\n }\r\n\r\n return $(parents);\r\n }\r\n\r\n function parents(selector) {\r\n var parents = []; // eslint-disable-line\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n var _parent = this[i].parentNode; // eslint-disable-line\r\n\r\n while (_parent) {\r\n if (selector) {\r\n if ($(_parent).is(selector)) parents.push(_parent);\r\n } else {\r\n parents.push(_parent);\r\n }\r\n\r\n _parent = _parent.parentNode;\r\n }\r\n }\r\n\r\n return $(parents);\r\n }\r\n\r\n function closest(selector) {\r\n var closest = this; // eslint-disable-line\r\n\r\n if (typeof selector === 'undefined') {\r\n return $([]);\r\n }\r\n\r\n if (!closest.is(selector)) {\r\n closest = closest.parents(selector).eq(0);\r\n }\r\n\r\n return closest;\r\n }\r\n\r\n function find(selector) {\r\n var foundElements = [];\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n var found = this[i].querySelectorAll(selector);\r\n\r\n for (var j = 0; j < found.length; j += 1) {\r\n foundElements.push(found[j]);\r\n }\r\n }\r\n\r\n return $(foundElements);\r\n }\r\n\r\n function children(selector) {\r\n var children = []; // eslint-disable-line\r\n\r\n for (var i = 0; i < this.length; i += 1) {\r\n var childNodes = this[i].children;\r\n\r\n for (var j = 0; j < childNodes.length; j += 1) {\r\n if (!selector || $(childNodes[j]).is(selector)) {\r\n children.push(childNodes[j]);\r\n }\r\n }\r\n }\r\n\r\n return $(children);\r\n }\r\n\r\n function remove() {\r\n for (var i = 0; i < this.length; i += 1) {\r\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n var Methods = {\r\n addClass: addClass,\r\n removeClass: removeClass,\r\n hasClass: hasClass,\r\n toggleClass: toggleClass,\r\n attr: attr,\r\n removeAttr: removeAttr,\r\n transform: transform,\r\n transition: transition,\r\n on: on,\r\n off: off,\r\n trigger: trigger,\r\n transitionEnd: transitionEnd,\r\n outerWidth: outerWidth,\r\n outerHeight: outerHeight,\r\n styles: styles,\r\n offset: offset,\r\n css: css,\r\n each: each,\r\n html: html,\r\n text: text,\r\n is: is,\r\n index: index,\r\n eq: eq,\r\n append: append,\r\n prepend: prepend,\r\n next: next,\r\n nextAll: nextAll,\r\n prev: prev,\r\n prevAll: prevAll,\r\n parent: parent,\r\n parents: parents,\r\n closest: closest,\r\n find: find,\r\n children: children,\r\n filter: filter,\r\n remove: remove\r\n };\r\n Object.keys(Methods).forEach(function (methodName) {\r\n $.fn[methodName] = Methods[methodName];\r\n });\r\n\r\n function deleteProps(obj) {\r\n var object = obj;\r\n Object.keys(object).forEach(function (key) {\r\n try {\r\n object[key] = null;\r\n } catch (e) {// no getter for object\r\n }\r\n\r\n try {\r\n delete object[key];\r\n } catch (e) {// something got wrong\r\n }\r\n });\r\n }\r\n\r\n function nextTick(callback, delay) {\r\n if (delay === void 0) {\r\n delay = 0;\r\n }\r\n\r\n return setTimeout(callback, delay);\r\n }\r\n\r\n function now() {\r\n return Date.now();\r\n }\r\n\r\n function getTranslate(el, axis) {\r\n if (axis === void 0) {\r\n axis = 'x';\r\n }\r\n\r\n var window = getWindow();\r\n var matrix;\r\n var curTransform;\r\n var transformMatrix;\r\n var curStyle = window.getComputedStyle(el, null);\r\n\r\n if (window.WebKitCSSMatrix) {\r\n curTransform = curStyle.transform || curStyle.webkitTransform;\r\n\r\n if (curTransform.split(',').length > 6) {\r\n curTransform = curTransform.split(', ').map(function (a) {\r\n return a.replace(',', '.');\r\n }).join(', ');\r\n } // Some old versions of Webkit choke when 'none' is passed; pass\r\n // empty string instead in this case\r\n\r\n\r\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\r\n } else {\r\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\r\n matrix = transformMatrix.toString().split(',');\r\n }\r\n\r\n if (axis === 'x') {\r\n // Latest Chrome and webkits Fix\r\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\r\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\r\n else curTransform = parseFloat(matrix[4]);\r\n }\r\n\r\n if (axis === 'y') {\r\n // Latest Chrome and webkits Fix\r\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\r\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\r\n else curTransform = parseFloat(matrix[5]);\r\n }\r\n\r\n return curTransform || 0;\r\n }\r\n\r\n function isObject$1(o) {\r\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\r\n }\r\n\r\n function extend$1() {\r\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\r\n\r\n for (var i = 1; i < arguments.length; i += 1) {\r\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\r\n\r\n if (nextSource !== undefined && nextSource !== null) {\r\n var keysArray = Object.keys(Object(nextSource));\r\n\r\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\r\n var nextKey = keysArray[nextIndex];\r\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\r\n\r\n if (desc !== undefined && desc.enumerable) {\r\n if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {\r\n extend$1(to[nextKey], nextSource[nextKey]);\r\n } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {\r\n to[nextKey] = {};\r\n extend$1(to[nextKey], nextSource[nextKey]);\r\n } else {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return to;\r\n }\r\n\r\n function bindModuleMethods(instance, obj) {\r\n Object.keys(obj).forEach(function (key) {\r\n if (isObject$1(obj[key])) {\r\n Object.keys(obj[key]).forEach(function (subKey) {\r\n if (typeof obj[key][subKey] === 'function') {\r\n obj[key][subKey] = obj[key][subKey].bind(instance);\r\n }\r\n });\r\n }\r\n\r\n instance[key] = obj[key];\r\n });\r\n }\r\n\r\n var support;\r\n\r\n function calcSupport() {\r\n var window = getWindow();\r\n var document = getDocument();\r\n return {\r\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\r\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\r\n observer: function checkObserver() {\r\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\r\n }(),\r\n passiveListener: function checkPassiveListener() {\r\n var supportsPassive = false;\r\n\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n // eslint-disable-next-line\r\n get: function get() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('testPassiveListener', null, opts);\r\n } catch (e) {// No support\r\n }\r\n\r\n return supportsPassive;\r\n }(),\r\n gestures: function checkGestures() {\r\n return 'ongesturestart' in window;\r\n }()\r\n };\r\n }\r\n\r\n function getSupport() {\r\n if (!support) {\r\n support = calcSupport();\r\n }\r\n\r\n return support;\r\n }\r\n\r\n var device;\r\n\r\n function calcDevice(_temp) {\r\n var _ref = _temp === void 0 ? {} : _temp,\r\n userAgent = _ref.userAgent;\r\n\r\n var support = getSupport();\r\n var window = getWindow();\r\n var platform = window.navigator.platform;\r\n var ua = userAgent || window.navigator.userAgent;\r\n var device = {\r\n ios: false,\r\n android: false\r\n };\r\n var screenWidth = window.screen.width;\r\n var screenHeight = window.screen.height;\r\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\r\n\r\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\r\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\r\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\r\n var windows = platform === 'Win32';\r\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\r\n\r\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\r\n\r\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\r\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\r\n if (!ipad) ipad = [0, 1, '13_0_0'];\r\n macos = false;\r\n } // Android\r\n\r\n\r\n if (android && !windows) {\r\n device.os = 'android';\r\n device.android = true;\r\n }\r\n\r\n if (ipad || iphone || ipod) {\r\n device.os = 'ios';\r\n device.ios = true;\r\n } // Export object\r\n\r\n\r\n return device;\r\n }\r\n\r\n function getDevice(overrides) {\r\n if (overrides === void 0) {\r\n overrides = {};\r\n }\r\n\r\n if (!device) {\r\n device = calcDevice(overrides);\r\n }\r\n\r\n return device;\r\n }\r\n\r\n var browser;\r\n\r\n function calcBrowser() {\r\n var window = getWindow();\r\n\r\n function isSafari() {\r\n var ua = window.navigator.userAgent.toLowerCase();\r\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\r\n }\r\n\r\n return {\r\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\r\n isSafari: isSafari(),\r\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\r\n };\r\n }\r\n\r\n function getBrowser() {\r\n if (!browser) {\r\n browser = calcBrowser();\r\n }\r\n\r\n return browser;\r\n }\r\n\r\n var Resize = {\r\n name: 'resize',\r\n create: function create() {\r\n var swiper = this;\r\n extend$1(swiper, {\r\n resize: {\r\n resizeHandler: function resizeHandler() {\r\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\r\n swiper.emit('beforeResize');\r\n swiper.emit('resize');\r\n },\r\n orientationChangeHandler: function orientationChangeHandler() {\r\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\r\n swiper.emit('orientationchange');\r\n }\r\n }\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n var window = getWindow(); // Emit resize\r\n\r\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\r\n\r\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\r\n },\r\n destroy: function destroy(swiper) {\r\n var window = getWindow();\r\n window.removeEventListener('resize', swiper.resize.resizeHandler);\r\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\r\n }\r\n }\r\n };\r\n\r\n var Observer = {\r\n attach: function attach(target, options) {\r\n if (options === void 0) {\r\n options = {};\r\n }\r\n\r\n var window = getWindow();\r\n var swiper = this;\r\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\r\n var observer = new ObserverFunc(function (mutations) {\r\n // The observerUpdate event should only be triggered\r\n // once despite the number of mutations. Additional\r\n // triggers are redundant and are very costly\r\n if (mutations.length === 1) {\r\n swiper.emit('observerUpdate', mutations[0]);\r\n return;\r\n }\r\n\r\n var observerUpdate = function observerUpdate() {\r\n swiper.emit('observerUpdate', mutations[0]);\r\n };\r\n\r\n if (window.requestAnimationFrame) {\r\n window.requestAnimationFrame(observerUpdate);\r\n } else {\r\n window.setTimeout(observerUpdate, 0);\r\n }\r\n });\r\n observer.observe(target, {\r\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\r\n childList: typeof options.childList === 'undefined' ? true : options.childList,\r\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\r\n });\r\n swiper.observer.observers.push(observer);\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n if (!swiper.support.observer || !swiper.params.observer) return;\r\n\r\n if (swiper.params.observeParents) {\r\n var containerParents = swiper.$el.parents();\r\n\r\n for (var i = 0; i < containerParents.length; i += 1) {\r\n swiper.observer.attach(containerParents[i]);\r\n }\r\n } // Observe container\r\n\r\n\r\n swiper.observer.attach(swiper.$el[0], {\r\n childList: swiper.params.observeSlideChildren\r\n }); // Observe wrapper\r\n\r\n swiper.observer.attach(swiper.$wrapperEl[0], {\r\n attributes: false\r\n });\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n swiper.observer.observers.forEach(function (observer) {\r\n observer.disconnect();\r\n });\r\n swiper.observer.observers = [];\r\n }\r\n };\r\n var Observer$1 = {\r\n name: 'observer',\r\n params: {\r\n observer: false,\r\n observeParents: false,\r\n observeSlideChildren: false\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n observer: _extends(_extends({}, Observer), {}, {\r\n observers: []\r\n })\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n swiper.observer.init();\r\n },\r\n destroy: function destroy(swiper) {\r\n swiper.observer.destroy();\r\n }\r\n }\r\n };\r\n\r\n var modular = {\r\n useParams: function useParams(instanceParams) {\r\n var instance = this;\r\n if (!instance.modules) return;\r\n Object.keys(instance.modules).forEach(function (moduleName) {\r\n var module = instance.modules[moduleName]; // Extend params\r\n\r\n if (module.params) {\r\n extend$1(instanceParams, module.params);\r\n }\r\n });\r\n },\r\n useModules: function useModules(modulesParams) {\r\n if (modulesParams === void 0) {\r\n modulesParams = {};\r\n }\r\n\r\n var instance = this;\r\n if (!instance.modules) return;\r\n Object.keys(instance.modules).forEach(function (moduleName) {\r\n var module = instance.modules[moduleName];\r\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\r\n\r\n if (module.on && instance.on) {\r\n Object.keys(module.on).forEach(function (moduleEventName) {\r\n instance.on(moduleEventName, module.on[moduleEventName]);\r\n });\r\n } // Module create callback\r\n\r\n\r\n if (module.create) {\r\n module.create.bind(instance)(moduleParams);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /* eslint-disable no-underscore-dangle */\r\n var eventsEmitter = {\r\n on: function on(events, handler, priority) {\r\n var self = this;\r\n if (typeof handler !== 'function') return self;\r\n var method = priority ? 'unshift' : 'push';\r\n events.split(' ').forEach(function (event) {\r\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\r\n self.eventsListeners[event][method](handler);\r\n });\r\n return self;\r\n },\r\n once: function once(events, handler, priority) {\r\n var self = this;\r\n if (typeof handler !== 'function') return self;\r\n\r\n function onceHandler() {\r\n self.off(events, onceHandler);\r\n\r\n if (onceHandler.__emitterProxy) {\r\n delete onceHandler.__emitterProxy;\r\n }\r\n\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n handler.apply(self, args);\r\n }\r\n\r\n onceHandler.__emitterProxy = handler;\r\n return self.on(events, onceHandler, priority);\r\n },\r\n onAny: function onAny(handler, priority) {\r\n var self = this;\r\n if (typeof handler !== 'function') return self;\r\n var method = priority ? 'unshift' : 'push';\r\n\r\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\r\n self.eventsAnyListeners[method](handler);\r\n }\r\n\r\n return self;\r\n },\r\n offAny: function offAny(handler) {\r\n var self = this;\r\n if (!self.eventsAnyListeners) return self;\r\n var index = self.eventsAnyListeners.indexOf(handler);\r\n\r\n if (index >= 0) {\r\n self.eventsAnyListeners.splice(index, 1);\r\n }\r\n\r\n return self;\r\n },\r\n off: function off(events, handler) {\r\n var self = this;\r\n if (!self.eventsListeners) return self;\r\n events.split(' ').forEach(function (event) {\r\n if (typeof handler === 'undefined') {\r\n self.eventsListeners[event] = [];\r\n } else if (self.eventsListeners[event]) {\r\n self.eventsListeners[event].forEach(function (eventHandler, index) {\r\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\r\n self.eventsListeners[event].splice(index, 1);\r\n }\r\n });\r\n }\r\n });\r\n return self;\r\n },\r\n emit: function emit() {\r\n var self = this;\r\n if (!self.eventsListeners) return self;\r\n var events;\r\n var data;\r\n var context;\r\n\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2];\r\n }\r\n\r\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\r\n events = args[0];\r\n data = args.slice(1, args.length);\r\n context = self;\r\n } else {\r\n events = args[0].events;\r\n data = args[0].data;\r\n context = args[0].context || self;\r\n }\r\n\r\n data.unshift(context);\r\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\r\n eventsArray.forEach(function (event) {\r\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\r\n self.eventsAnyListeners.forEach(function (eventHandler) {\r\n eventHandler.apply(context, [event].concat(data));\r\n });\r\n }\r\n\r\n if (self.eventsListeners && self.eventsListeners[event]) {\r\n var handlers = [];\r\n self.eventsListeners[event].forEach(function (eventHandler) {\r\n handlers.push(eventHandler);\r\n });\r\n handlers.forEach(function (eventHandler) {\r\n eventHandler.apply(context, data);\r\n });\r\n }\r\n });\r\n return self;\r\n }\r\n };\r\n\r\n function updateSize() {\r\n var swiper = this;\r\n var width;\r\n var height;\r\n var $el = swiper.$el;\r\n\r\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\r\n width = swiper.params.width;\r\n } else {\r\n width = $el[0].clientWidth;\r\n }\r\n\r\n if (typeof swiper.params.height !== 'undefined' && swiper.params.width !== null) {\r\n height = swiper.params.height;\r\n } else {\r\n height = $el[0].clientHeight;\r\n }\r\n\r\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\r\n return;\r\n } // Subtract paddings\r\n\r\n\r\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\r\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\r\n if (Number.isNaN(width)) width = 0;\r\n if (Number.isNaN(height)) height = 0;\r\n extend$1(swiper, {\r\n width: width,\r\n height: height,\r\n size: swiper.isHorizontal() ? width : height\r\n });\r\n }\r\n\r\n function updateSlides() {\r\n var swiper = this;\r\n var window = getWindow();\r\n var params = swiper.params;\r\n var $wrapperEl = swiper.$wrapperEl,\r\n swiperSize = swiper.size,\r\n rtl = swiper.rtlTranslate,\r\n wrongRTL = swiper.wrongRTL;\r\n var isVirtual = swiper.virtual && params.virtual.enabled;\r\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\r\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\r\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\r\n var snapGrid = [];\r\n var slidesGrid = [];\r\n var slidesSizesGrid = [];\r\n\r\n function slidesForMargin(slideEl, slideIndex) {\r\n if (!params.cssMode) return true;\r\n\r\n if (slideIndex === slides.length - 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n var offsetBefore = params.slidesOffsetBefore;\r\n\r\n if (typeof offsetBefore === 'function') {\r\n offsetBefore = params.slidesOffsetBefore.call(swiper);\r\n }\r\n\r\n var offsetAfter = params.slidesOffsetAfter;\r\n\r\n if (typeof offsetAfter === 'function') {\r\n offsetAfter = params.slidesOffsetAfter.call(swiper);\r\n }\r\n\r\n var previousSnapGridLength = swiper.snapGrid.length;\r\n var previousSlidesGridLength = swiper.snapGrid.length;\r\n var spaceBetween = params.spaceBetween;\r\n var slidePosition = -offsetBefore;\r\n var prevSlideSize = 0;\r\n var index = 0;\r\n\r\n if (typeof swiperSize === 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\r\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\r\n }\r\n\r\n swiper.virtualSize = -spaceBetween; // reset margins\r\n\r\n if (rtl) slides.css({\r\n marginLeft: '',\r\n marginTop: ''\r\n });else slides.css({\r\n marginRight: '',\r\n marginBottom: ''\r\n });\r\n var slidesNumberEvenToRows;\r\n\r\n if (params.slidesPerColumn > 1) {\r\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\r\n slidesNumberEvenToRows = slidesLength;\r\n } else {\r\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\r\n }\r\n\r\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\r\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\r\n }\r\n } // Calc slides\r\n\r\n\r\n var slideSize;\r\n var slidesPerColumn = params.slidesPerColumn;\r\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\r\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\r\n\r\n for (var i = 0; i < slidesLength; i += 1) {\r\n slideSize = 0;\r\n var slide = slides.eq(i);\r\n\r\n if (params.slidesPerColumn > 1) {\r\n // Set slides order\r\n var newSlideOrderIndex = void 0;\r\n var column = void 0;\r\n var row = void 0;\r\n\r\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\r\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\r\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\r\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\r\n row = Math.floor(slideIndexInGroup / columnsInGroup);\r\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\r\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\r\n slide.css({\r\n '-webkit-box-ordinal-group': newSlideOrderIndex,\r\n '-moz-box-ordinal-group': newSlideOrderIndex,\r\n '-ms-flex-order': newSlideOrderIndex,\r\n '-webkit-order': newSlideOrderIndex,\r\n order: newSlideOrderIndex\r\n });\r\n } else if (params.slidesPerColumnFill === 'column') {\r\n column = Math.floor(i / slidesPerColumn);\r\n row = i - column * slidesPerColumn;\r\n\r\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\r\n row += 1;\r\n\r\n if (row >= slidesPerColumn) {\r\n row = 0;\r\n column += 1;\r\n }\r\n }\r\n } else {\r\n row = Math.floor(i / slidesPerRow);\r\n column = i - row * slidesPerRow;\r\n }\r\n\r\n slide.css(\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left'), row !== 0 && params.spaceBetween && params.spaceBetween + \"px\");\r\n }\r\n\r\n if (slide.css('display') === 'none') continue; // eslint-disable-line\r\n\r\n if (params.slidesPerView === 'auto') {\r\n var slideStyles = window.getComputedStyle(slide[0], null);\r\n var currentTransform = slide[0].style.transform;\r\n var currentWebKitTransform = slide[0].style.webkitTransform;\r\n\r\n if (currentTransform) {\r\n slide[0].style.transform = 'none';\r\n }\r\n\r\n if (currentWebKitTransform) {\r\n slide[0].style.webkitTransform = 'none';\r\n }\r\n\r\n if (params.roundLengths) {\r\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\r\n } else {\r\n // eslint-disable-next-line\r\n if (swiper.isHorizontal()) {\r\n var width = parseFloat(slideStyles.getPropertyValue('width') || 0);\r\n var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left') || 0);\r\n var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right') || 0);\r\n var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left') || 0);\r\n var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right') || 0);\r\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\r\n\r\n if (boxSizing && boxSizing === 'border-box') {\r\n slideSize = width + marginLeft + marginRight;\r\n } else {\r\n var _slide$ = slide[0],\r\n clientWidth = _slide$.clientWidth,\r\n offsetWidth = _slide$.offsetWidth;\r\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\r\n }\r\n } else {\r\n var height = parseFloat(slideStyles.getPropertyValue('height') || 0);\r\n var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top') || 0);\r\n var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom') || 0);\r\n var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top') || 0);\r\n var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom') || 0);\r\n\r\n var _boxSizing = slideStyles.getPropertyValue('box-sizing');\r\n\r\n if (_boxSizing && _boxSizing === 'border-box') {\r\n slideSize = height + marginTop + marginBottom;\r\n } else {\r\n var _slide$2 = slide[0],\r\n clientHeight = _slide$2.clientHeight,\r\n offsetHeight = _slide$2.offsetHeight;\r\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight);\r\n }\r\n }\r\n }\r\n\r\n if (currentTransform) {\r\n slide[0].style.transform = currentTransform;\r\n }\r\n\r\n if (currentWebKitTransform) {\r\n slide[0].style.webkitTransform = currentWebKitTransform;\r\n }\r\n\r\n if (params.roundLengths) slideSize = Math.floor(slideSize);\r\n } else {\r\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\r\n if (params.roundLengths) slideSize = Math.floor(slideSize);\r\n\r\n if (slides[i]) {\r\n if (swiper.isHorizontal()) {\r\n slides[i].style.width = slideSize + \"px\";\r\n } else {\r\n slides[i].style.height = slideSize + \"px\";\r\n }\r\n }\r\n }\r\n\r\n if (slides[i]) {\r\n slides[i].swiperSlideSize = slideSize;\r\n }\r\n\r\n slidesSizesGrid.push(slideSize);\r\n\r\n if (params.centeredSlides) {\r\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\r\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\r\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\r\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\r\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\r\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\r\n slidesGrid.push(slidePosition);\r\n } else {\r\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\r\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\r\n slidesGrid.push(slidePosition);\r\n slidePosition = slidePosition + slideSize + spaceBetween;\r\n }\r\n\r\n swiper.virtualSize += slideSize + spaceBetween;\r\n prevSlideSize = slideSize;\r\n index += 1;\r\n }\r\n\r\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\r\n var newSlidesGrid;\r\n\r\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\r\n $wrapperEl.css({\r\n width: swiper.virtualSize + params.spaceBetween + \"px\"\r\n });\r\n }\r\n\r\n if (params.setWrapperSize) {\r\n if (swiper.isHorizontal()) $wrapperEl.css({\r\n width: swiper.virtualSize + params.spaceBetween + \"px\"\r\n });else $wrapperEl.css({\r\n height: swiper.virtualSize + params.spaceBetween + \"px\"\r\n });\r\n }\r\n\r\n if (params.slidesPerColumn > 1) {\r\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\r\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\r\n if (swiper.isHorizontal()) $wrapperEl.css({\r\n width: swiper.virtualSize + params.spaceBetween + \"px\"\r\n });else $wrapperEl.css({\r\n height: swiper.virtualSize + params.spaceBetween + \"px\"\r\n });\r\n\r\n if (params.centeredSlides) {\r\n newSlidesGrid = [];\r\n\r\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\r\n var slidesGridItem = snapGrid[_i];\r\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\r\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\r\n }\r\n\r\n snapGrid = newSlidesGrid;\r\n }\r\n } // Remove last grid elements depending on width\r\n\r\n\r\n if (!params.centeredSlides) {\r\n newSlidesGrid = [];\r\n\r\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\r\n var _slidesGridItem = snapGrid[_i2];\r\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\r\n\r\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\r\n newSlidesGrid.push(_slidesGridItem);\r\n }\r\n }\r\n\r\n snapGrid = newSlidesGrid;\r\n\r\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\r\n snapGrid.push(swiper.virtualSize - swiperSize);\r\n }\r\n }\r\n\r\n if (snapGrid.length === 0) snapGrid = [0];\r\n\r\n if (params.spaceBetween !== 0) {\r\n if (swiper.isHorizontal()) {\r\n if (rtl) slides.filter(slidesForMargin).css({\r\n marginLeft: spaceBetween + \"px\"\r\n });else slides.filter(slidesForMargin).css({\r\n marginRight: spaceBetween + \"px\"\r\n });\r\n } else slides.filter(slidesForMargin).css({\r\n marginBottom: spaceBetween + \"px\"\r\n });\r\n }\r\n\r\n if (params.centeredSlides && params.centeredSlidesBounds) {\r\n var allSlidesSize = 0;\r\n slidesSizesGrid.forEach(function (slideSizeValue) {\r\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\r\n });\r\n allSlidesSize -= params.spaceBetween;\r\n var maxSnap = allSlidesSize - swiperSize;\r\n snapGrid = snapGrid.map(function (snap) {\r\n if (snap < 0) return -offsetBefore;\r\n if (snap > maxSnap) return maxSnap + offsetAfter;\r\n return snap;\r\n });\r\n }\r\n\r\n if (params.centerInsufficientSlides) {\r\n var _allSlidesSize = 0;\r\n slidesSizesGrid.forEach(function (slideSizeValue) {\r\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\r\n });\r\n _allSlidesSize -= params.spaceBetween;\r\n\r\n if (_allSlidesSize < swiperSize) {\r\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\r\n snapGrid.forEach(function (snap, snapIndex) {\r\n snapGrid[snapIndex] = snap - allSlidesOffset;\r\n });\r\n slidesGrid.forEach(function (snap, snapIndex) {\r\n slidesGrid[snapIndex] = snap + allSlidesOffset;\r\n });\r\n }\r\n }\r\n\r\n extend$1(swiper, {\r\n slides: slides,\r\n snapGrid: snapGrid,\r\n slidesGrid: slidesGrid,\r\n slidesSizesGrid: slidesSizesGrid\r\n });\r\n\r\n if (slidesLength !== previousSlidesLength) {\r\n swiper.emit('slidesLengthChange');\r\n }\r\n\r\n if (snapGrid.length !== previousSnapGridLength) {\r\n if (swiper.params.watchOverflow) swiper.checkOverflow();\r\n swiper.emit('snapGridLengthChange');\r\n }\r\n\r\n if (slidesGrid.length !== previousSlidesGridLength) {\r\n swiper.emit('slidesGridLengthChange');\r\n }\r\n\r\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\r\n swiper.updateSlidesOffset();\r\n }\r\n }\r\n\r\n function updateAutoHeight(speed) {\r\n var swiper = this;\r\n var activeSlides = [];\r\n var newHeight = 0;\r\n var i;\r\n\r\n if (typeof speed === 'number') {\r\n swiper.setTransition(speed);\r\n } else if (speed === true) {\r\n swiper.setTransition(swiper.params.speed);\r\n } // Find slides currently in view\r\n\r\n\r\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\r\n if (swiper.params.centeredSlides) {\r\n swiper.visibleSlides.each(function (slide) {\r\n activeSlides.push(slide);\r\n });\r\n } else {\r\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\r\n var index = swiper.activeIndex + i;\r\n if (index > swiper.slides.length) break;\r\n activeSlides.push(swiper.slides.eq(index)[0]);\r\n }\r\n }\r\n } else {\r\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\r\n } // Find new height from highest slide in view\r\n\r\n\r\n for (i = 0; i < activeSlides.length; i += 1) {\r\n if (typeof activeSlides[i] !== 'undefined') {\r\n var height = activeSlides[i].offsetHeight;\r\n newHeight = height > newHeight ? height : newHeight;\r\n }\r\n } // Update Height\r\n\r\n\r\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\r\n }\r\n\r\n function updateSlidesOffset() {\r\n var swiper = this;\r\n var slides = swiper.slides;\r\n\r\n for (var i = 0; i < slides.length; i += 1) {\r\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\r\n }\r\n }\r\n\r\n function updateSlidesProgress(translate) {\r\n if (translate === void 0) {\r\n translate = this && this.translate || 0;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params;\r\n var slides = swiper.slides,\r\n rtl = swiper.rtlTranslate;\r\n if (slides.length === 0) return;\r\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\r\n var offsetCenter = -translate;\r\n if (rtl) offsetCenter = translate; // Visible Slides\r\n\r\n slides.removeClass(params.slideVisibleClass);\r\n swiper.visibleSlidesIndexes = [];\r\n swiper.visibleSlides = [];\r\n\r\n for (var i = 0; i < slides.length; i += 1) {\r\n var slide = slides[i];\r\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\r\n\r\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\r\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\r\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\r\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\r\n\r\n if (isVisible) {\r\n swiper.visibleSlides.push(slide);\r\n swiper.visibleSlidesIndexes.push(i);\r\n slides.eq(i).addClass(params.slideVisibleClass);\r\n }\r\n }\r\n\r\n slide.progress = rtl ? -slideProgress : slideProgress;\r\n }\r\n\r\n swiper.visibleSlides = $(swiper.visibleSlides);\r\n }\r\n\r\n function updateProgress(translate) {\r\n var swiper = this;\r\n\r\n if (typeof translate === 'undefined') {\r\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\r\n\r\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\r\n }\r\n\r\n var params = swiper.params;\r\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n var progress = swiper.progress,\r\n isBeginning = swiper.isBeginning,\r\n isEnd = swiper.isEnd;\r\n var wasBeginning = isBeginning;\r\n var wasEnd = isEnd;\r\n\r\n if (translatesDiff === 0) {\r\n progress = 0;\r\n isBeginning = true;\r\n isEnd = true;\r\n } else {\r\n progress = (translate - swiper.minTranslate()) / translatesDiff;\r\n isBeginning = progress <= 0;\r\n isEnd = progress >= 1;\r\n }\r\n\r\n extend$1(swiper, {\r\n progress: progress,\r\n isBeginning: isBeginning,\r\n isEnd: isEnd\r\n });\r\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\r\n\r\n if (isBeginning && !wasBeginning) {\r\n swiper.emit('reachBeginning toEdge');\r\n }\r\n\r\n if (isEnd && !wasEnd) {\r\n swiper.emit('reachEnd toEdge');\r\n }\r\n\r\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\r\n swiper.emit('fromEdge');\r\n }\r\n\r\n swiper.emit('progress', progress);\r\n }\r\n\r\n function updateSlidesClasses() {\r\n var swiper = this;\r\n var slides = swiper.slides,\r\n params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl,\r\n activeIndex = swiper.activeIndex,\r\n realIndex = swiper.realIndex;\r\n var isVirtual = swiper.virtual && params.virtual.enabled;\r\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\r\n var activeSlide;\r\n\r\n if (isVirtual) {\r\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\r\n } else {\r\n activeSlide = slides.eq(activeIndex);\r\n } // Active classes\r\n\r\n\r\n activeSlide.addClass(params.slideActiveClass);\r\n\r\n if (params.loop) {\r\n // Duplicate to all looped slides\r\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\r\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\r\n } else {\r\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\r\n }\r\n } // Next Slide\r\n\r\n\r\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\r\n\r\n if (params.loop && nextSlide.length === 0) {\r\n nextSlide = slides.eq(0);\r\n nextSlide.addClass(params.slideNextClass);\r\n } // Prev Slide\r\n\r\n\r\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\r\n\r\n if (params.loop && prevSlide.length === 0) {\r\n prevSlide = slides.eq(-1);\r\n prevSlide.addClass(params.slidePrevClass);\r\n }\r\n\r\n if (params.loop) {\r\n // Duplicate to all looped slides\r\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\r\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\r\n } else {\r\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\r\n }\r\n\r\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\r\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\r\n } else {\r\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\r\n }\r\n }\r\n\r\n swiper.emitSlidesClasses();\r\n }\r\n\r\n function updateActiveIndex(newActiveIndex) {\r\n var swiper = this;\r\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\r\n var slidesGrid = swiper.slidesGrid,\r\n snapGrid = swiper.snapGrid,\r\n params = swiper.params,\r\n previousIndex = swiper.activeIndex,\r\n previousRealIndex = swiper.realIndex,\r\n previousSnapIndex = swiper.snapIndex;\r\n var activeIndex = newActiveIndex;\r\n var snapIndex;\r\n\r\n if (typeof activeIndex === 'undefined') {\r\n for (var i = 0; i < slidesGrid.length; i += 1) {\r\n if (typeof slidesGrid[i + 1] !== 'undefined') {\r\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\r\n activeIndex = i;\r\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\r\n activeIndex = i + 1;\r\n }\r\n } else if (translate >= slidesGrid[i]) {\r\n activeIndex = i;\r\n }\r\n } // Normalize slideIndex\r\n\r\n\r\n if (params.normalizeSlideIndex) {\r\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\r\n }\r\n }\r\n\r\n if (snapGrid.indexOf(translate) >= 0) {\r\n snapIndex = snapGrid.indexOf(translate);\r\n } else {\r\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\r\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\r\n }\r\n\r\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\r\n\r\n if (activeIndex === previousIndex) {\r\n if (snapIndex !== previousSnapIndex) {\r\n swiper.snapIndex = snapIndex;\r\n swiper.emit('snapIndexChange');\r\n }\r\n\r\n return;\r\n } // Get real index\r\n\r\n\r\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\r\n extend$1(swiper, {\r\n snapIndex: snapIndex,\r\n realIndex: realIndex,\r\n previousIndex: previousIndex,\r\n activeIndex: activeIndex\r\n });\r\n swiper.emit('activeIndexChange');\r\n swiper.emit('snapIndexChange');\r\n\r\n if (previousRealIndex !== realIndex) {\r\n swiper.emit('realIndexChange');\r\n }\r\n\r\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\r\n swiper.emit('slideChange');\r\n }\r\n }\r\n\r\n function updateClickedSlide(e) {\r\n var swiper = this;\r\n var params = swiper.params;\r\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\r\n var slideFound = false;\r\n\r\n if (slide) {\r\n for (var i = 0; i < swiper.slides.length; i += 1) {\r\n if (swiper.slides[i] === slide) slideFound = true;\r\n }\r\n }\r\n\r\n if (slide && slideFound) {\r\n swiper.clickedSlide = slide;\r\n\r\n if (swiper.virtual && swiper.params.virtual.enabled) {\r\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\r\n } else {\r\n swiper.clickedIndex = $(slide).index();\r\n }\r\n } else {\r\n swiper.clickedSlide = undefined;\r\n swiper.clickedIndex = undefined;\r\n return;\r\n }\r\n\r\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\r\n swiper.slideToClickedSlide();\r\n }\r\n }\r\n\r\n var update = {\r\n updateSize: updateSize,\r\n updateSlides: updateSlides,\r\n updateAutoHeight: updateAutoHeight,\r\n updateSlidesOffset: updateSlidesOffset,\r\n updateSlidesProgress: updateSlidesProgress,\r\n updateProgress: updateProgress,\r\n updateSlidesClasses: updateSlidesClasses,\r\n updateActiveIndex: updateActiveIndex,\r\n updateClickedSlide: updateClickedSlide\r\n };\r\n\r\n function getSwiperTranslate(axis) {\r\n if (axis === void 0) {\r\n axis = this.isHorizontal() ? 'x' : 'y';\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params,\r\n rtl = swiper.rtlTranslate,\r\n translate = swiper.translate,\r\n $wrapperEl = swiper.$wrapperEl;\r\n\r\n if (params.virtualTranslate) {\r\n return rtl ? -translate : translate;\r\n }\r\n\r\n if (params.cssMode) {\r\n return translate;\r\n }\r\n\r\n var currentTranslate = getTranslate($wrapperEl[0], axis);\r\n if (rtl) currentTranslate = -currentTranslate;\r\n return currentTranslate || 0;\r\n }\r\n\r\n function setTranslate(translate, byController) {\r\n var swiper = this;\r\n var rtl = swiper.rtlTranslate,\r\n params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl,\r\n wrapperEl = swiper.wrapperEl,\r\n progress = swiper.progress;\r\n var x = 0;\r\n var y = 0;\r\n var z = 0;\r\n\r\n if (swiper.isHorizontal()) {\r\n x = rtl ? -translate : translate;\r\n } else {\r\n y = translate;\r\n }\r\n\r\n if (params.roundLengths) {\r\n x = Math.floor(x);\r\n y = Math.floor(y);\r\n }\r\n\r\n if (params.cssMode) {\r\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\r\n } else if (!params.virtualTranslate) {\r\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\r\n }\r\n\r\n swiper.previousTranslate = swiper.translate;\r\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\r\n\r\n var newProgress;\r\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n\r\n if (translatesDiff === 0) {\r\n newProgress = 0;\r\n } else {\r\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\r\n }\r\n\r\n if (newProgress !== progress) {\r\n swiper.updateProgress(translate);\r\n }\r\n\r\n swiper.emit('setTranslate', swiper.translate, byController);\r\n }\r\n\r\n function minTranslate() {\r\n return -this.snapGrid[0];\r\n }\r\n\r\n function maxTranslate() {\r\n return -this.snapGrid[this.snapGrid.length - 1];\r\n }\r\n\r\n function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\r\n if (translate === void 0) {\r\n translate = 0;\r\n }\r\n\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n if (translateBounds === void 0) {\r\n translateBounds = true;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params,\r\n wrapperEl = swiper.wrapperEl;\r\n\r\n if (swiper.animating && params.preventInteractionOnTransition) {\r\n return false;\r\n }\r\n\r\n var minTranslate = swiper.minTranslate();\r\n var maxTranslate = swiper.maxTranslate();\r\n var newTranslate;\r\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\r\n\r\n swiper.updateProgress(newTranslate);\r\n\r\n if (params.cssMode) {\r\n var isH = swiper.isHorizontal();\r\n\r\n if (speed === 0) {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\r\n } else {\r\n // eslint-disable-next-line\r\n if (wrapperEl.scrollTo) {\r\n var _wrapperEl$scrollTo;\r\n\r\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\r\n } else {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (speed === 0) {\r\n swiper.setTransition(0);\r\n swiper.setTranslate(newTranslate);\r\n\r\n if (runCallbacks) {\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.emit('transitionEnd');\r\n }\r\n } else {\r\n swiper.setTransition(speed);\r\n swiper.setTranslate(newTranslate);\r\n\r\n if (runCallbacks) {\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.emit('transitionStart');\r\n }\r\n\r\n if (!swiper.animating) {\r\n swiper.animating = true;\r\n\r\n if (!swiper.onTranslateToWrapperTransitionEnd) {\r\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\r\n if (!swiper || swiper.destroyed) return;\r\n if (e.target !== this) return;\r\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\r\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\r\n swiper.onTranslateToWrapperTransitionEnd = null;\r\n delete swiper.onTranslateToWrapperTransitionEnd;\r\n\r\n if (runCallbacks) {\r\n swiper.emit('transitionEnd');\r\n }\r\n };\r\n }\r\n\r\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\r\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n var translate = {\r\n getTranslate: getSwiperTranslate,\r\n setTranslate: setTranslate,\r\n minTranslate: minTranslate,\r\n maxTranslate: maxTranslate,\r\n translateTo: translateTo\r\n };\r\n\r\n function setTransition(duration, byController) {\r\n var swiper = this;\r\n\r\n if (!swiper.params.cssMode) {\r\n swiper.$wrapperEl.transition(duration);\r\n }\r\n\r\n swiper.emit('setTransition', duration, byController);\r\n }\r\n\r\n function transitionStart(runCallbacks, direction) {\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n var activeIndex = swiper.activeIndex,\r\n params = swiper.params,\r\n previousIndex = swiper.previousIndex;\r\n if (params.cssMode) return;\r\n\r\n if (params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n\r\n var dir = direction;\r\n\r\n if (!dir) {\r\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\r\n }\r\n\r\n swiper.emit('transitionStart');\r\n\r\n if (runCallbacks && activeIndex !== previousIndex) {\r\n if (dir === 'reset') {\r\n swiper.emit('slideResetTransitionStart');\r\n return;\r\n }\r\n\r\n swiper.emit('slideChangeTransitionStart');\r\n\r\n if (dir === 'next') {\r\n swiper.emit('slideNextTransitionStart');\r\n } else {\r\n swiper.emit('slidePrevTransitionStart');\r\n }\r\n }\r\n }\r\n\r\n function transitionEnd$1(runCallbacks, direction) {\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n var activeIndex = swiper.activeIndex,\r\n previousIndex = swiper.previousIndex,\r\n params = swiper.params;\r\n swiper.animating = false;\r\n if (params.cssMode) return;\r\n swiper.setTransition(0);\r\n var dir = direction;\r\n\r\n if (!dir) {\r\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\r\n }\r\n\r\n swiper.emit('transitionEnd');\r\n\r\n if (runCallbacks && activeIndex !== previousIndex) {\r\n if (dir === 'reset') {\r\n swiper.emit('slideResetTransitionEnd');\r\n return;\r\n }\r\n\r\n swiper.emit('slideChangeTransitionEnd');\r\n\r\n if (dir === 'next') {\r\n swiper.emit('slideNextTransitionEnd');\r\n } else {\r\n swiper.emit('slidePrevTransitionEnd');\r\n }\r\n }\r\n }\r\n\r\n var transition$1 = {\r\n setTransition: setTransition,\r\n transitionStart: transitionStart,\r\n transitionEnd: transitionEnd$1\r\n };\r\n\r\n function slideTo(index, speed, runCallbacks, internal) {\r\n if (index === void 0) {\r\n index = 0;\r\n }\r\n\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n if (typeof index !== 'number' && typeof index !== 'string') {\r\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\r\n }\r\n\r\n if (typeof index === 'string') {\r\n /**\r\n * The `index` argument converted from `string` to `number`.\r\n * @type {number}\r\n */\r\n var indexAsNumber = parseInt(index, 10);\r\n /**\r\n * Determines whether the `index` argument is a valid `number`\r\n * after being converted from the `string` type.\r\n * @type {boolean}\r\n */\r\n\r\n var isValidNumber = isFinite(indexAsNumber);\r\n\r\n if (!isValidNumber) {\r\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\r\n } // Knowing that the converted `index` is a valid number,\r\n // we can update the original argument's value.\r\n\r\n\r\n index = indexAsNumber;\r\n }\r\n\r\n var swiper = this;\r\n var slideIndex = index;\r\n if (slideIndex < 0) slideIndex = 0;\r\n var params = swiper.params,\r\n snapGrid = swiper.snapGrid,\r\n slidesGrid = swiper.slidesGrid,\r\n previousIndex = swiper.previousIndex,\r\n activeIndex = swiper.activeIndex,\r\n rtl = swiper.rtlTranslate,\r\n wrapperEl = swiper.wrapperEl;\r\n\r\n if (swiper.animating && params.preventInteractionOnTransition) {\r\n return false;\r\n }\r\n\r\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\r\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\r\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\r\n\r\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\r\n swiper.emit('beforeSlideChangeStart');\r\n }\r\n\r\n var translate = -snapGrid[snapIndex]; // Update progress\r\n\r\n swiper.updateProgress(translate); // Normalize slideIndex\r\n\r\n if (params.normalizeSlideIndex) {\r\n for (var i = 0; i < slidesGrid.length; i += 1) {\r\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\r\n slideIndex = i;\r\n }\r\n }\r\n } // Directions locks\r\n\r\n\r\n if (swiper.initialized && slideIndex !== activeIndex) {\r\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\r\n return false;\r\n }\r\n\r\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\r\n if ((activeIndex || 0) !== slideIndex) return false;\r\n }\r\n }\r\n\r\n var direction;\r\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\r\n\r\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\r\n swiper.updateActiveIndex(slideIndex); // Update Height\r\n\r\n if (params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n\r\n swiper.updateSlidesClasses();\r\n\r\n if (params.effect !== 'slide') {\r\n swiper.setTranslate(translate);\r\n }\r\n\r\n if (direction !== 'reset') {\r\n swiper.transitionStart(runCallbacks, direction);\r\n swiper.transitionEnd(runCallbacks, direction);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if (params.cssMode) {\r\n var isH = swiper.isHorizontal();\r\n var t = -translate;\r\n\r\n if (rtl) {\r\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\r\n }\r\n\r\n if (speed === 0) {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\r\n } else {\r\n // eslint-disable-next-line\r\n if (wrapperEl.scrollTo) {\r\n var _wrapperEl$scrollTo;\r\n\r\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\r\n } else {\r\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (speed === 0) {\r\n swiper.setTransition(0);\r\n swiper.setTranslate(translate);\r\n swiper.updateActiveIndex(slideIndex);\r\n swiper.updateSlidesClasses();\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.transitionStart(runCallbacks, direction);\r\n swiper.transitionEnd(runCallbacks, direction);\r\n } else {\r\n swiper.setTransition(speed);\r\n swiper.setTranslate(translate);\r\n swiper.updateActiveIndex(slideIndex);\r\n swiper.updateSlidesClasses();\r\n swiper.emit('beforeTransitionStart', speed, internal);\r\n swiper.transitionStart(runCallbacks, direction);\r\n\r\n if (!swiper.animating) {\r\n swiper.animating = true;\r\n\r\n if (!swiper.onSlideToWrapperTransitionEnd) {\r\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\r\n if (!swiper || swiper.destroyed) return;\r\n if (e.target !== this) return;\r\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\r\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\r\n swiper.onSlideToWrapperTransitionEnd = null;\r\n delete swiper.onSlideToWrapperTransitionEnd;\r\n swiper.transitionEnd(runCallbacks, direction);\r\n };\r\n }\r\n\r\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\r\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function slideToLoop(index, speed, runCallbacks, internal) {\r\n if (index === void 0) {\r\n index = 0;\r\n }\r\n\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n var newIndex = index;\r\n\r\n if (swiper.params.loop) {\r\n newIndex += swiper.loopedSlides;\r\n }\r\n\r\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\r\n }\r\n\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideNext(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params,\r\n animating = swiper.animating;\r\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\r\n\r\n if (params.loop) {\r\n if (animating && params.loopPreventsSlide) return false;\r\n swiper.loopFix(); // eslint-disable-next-line\r\n\r\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\r\n }\r\n\r\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\r\n }\r\n\r\n /* eslint no-unused-vars: \"off\" */\r\n function slidePrev(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params,\r\n animating = swiper.animating,\r\n snapGrid = swiper.snapGrid,\r\n slidesGrid = swiper.slidesGrid,\r\n rtlTranslate = swiper.rtlTranslate;\r\n\r\n if (params.loop) {\r\n if (animating && params.loopPreventsSlide) return false;\r\n swiper.loopFix(); // eslint-disable-next-line\r\n\r\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\r\n }\r\n\r\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\r\n\r\n function normalize(val) {\r\n if (val < 0) return -Math.floor(Math.abs(val));\r\n return Math.floor(val);\r\n }\r\n\r\n var normalizedTranslate = normalize(translate);\r\n var normalizedSnapGrid = snapGrid.map(function (val) {\r\n return normalize(val);\r\n });\r\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\r\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\r\n\r\n if (typeof prevSnap === 'undefined' && params.cssMode) {\r\n snapGrid.forEach(function (snap) {\r\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\r\n });\r\n }\r\n\r\n var prevIndex;\r\n\r\n if (typeof prevSnap !== 'undefined') {\r\n prevIndex = slidesGrid.indexOf(prevSnap);\r\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\r\n }\r\n\r\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\r\n }\r\n\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideReset(speed, runCallbacks, internal) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n var swiper = this;\r\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\r\n }\r\n\r\n /* eslint no-unused-vars: \"off\" */\r\n function slideToClosest(speed, runCallbacks, internal, threshold) {\r\n if (speed === void 0) {\r\n speed = this.params.speed;\r\n }\r\n\r\n if (runCallbacks === void 0) {\r\n runCallbacks = true;\r\n }\r\n\r\n if (threshold === void 0) {\r\n threshold = 0.5;\r\n }\r\n\r\n var swiper = this;\r\n var index = swiper.activeIndex;\r\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\r\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\r\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\r\n\r\n if (translate >= swiper.snapGrid[snapIndex]) {\r\n // The current translate is on or after the current snap index, so the choice\r\n // is between the current index and the one after it.\r\n var currentSnap = swiper.snapGrid[snapIndex];\r\n var nextSnap = swiper.snapGrid[snapIndex + 1];\r\n\r\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\r\n index += swiper.params.slidesPerGroup;\r\n }\r\n } else {\r\n // The current translate is before the current snap index, so the choice\r\n // is between the current index and the one before it.\r\n var prevSnap = swiper.snapGrid[snapIndex - 1];\r\n var _currentSnap = swiper.snapGrid[snapIndex];\r\n\r\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\r\n index -= swiper.params.slidesPerGroup;\r\n }\r\n }\r\n\r\n index = Math.max(index, 0);\r\n index = Math.min(index, swiper.slidesGrid.length - 1);\r\n return swiper.slideTo(index, speed, runCallbacks, internal);\r\n }\r\n\r\n function slideToClickedSlide() {\r\n var swiper = this;\r\n var params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl;\r\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\r\n var slideToIndex = swiper.clickedIndex;\r\n var realIndex;\r\n\r\n if (params.loop) {\r\n if (swiper.animating) return;\r\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\r\n\r\n if (params.centeredSlides) {\r\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\r\n swiper.loopFix();\r\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\r\n nextTick(function () {\r\n swiper.slideTo(slideToIndex);\r\n });\r\n } else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\r\n swiper.loopFix();\r\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\r\n nextTick(function () {\r\n swiper.slideTo(slideToIndex);\r\n });\r\n } else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n } else {\r\n swiper.slideTo(slideToIndex);\r\n }\r\n }\r\n\r\n var slide = {\r\n slideTo: slideTo,\r\n slideToLoop: slideToLoop,\r\n slideNext: slideNext,\r\n slidePrev: slidePrev,\r\n slideReset: slideReset,\r\n slideToClosest: slideToClosest,\r\n slideToClickedSlide: slideToClickedSlide\r\n };\r\n\r\n function loopCreate() {\r\n var swiper = this;\r\n var document = getDocument();\r\n var params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\r\n\r\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\r\n var slides = $wrapperEl.children(\".\" + params.slideClass);\r\n\r\n if (params.loopFillGroupWithBlank) {\r\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\r\n\r\n if (blankSlidesNum !== params.slidesPerGroup) {\r\n for (var i = 0; i < blankSlidesNum; i += 1) {\r\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\r\n $wrapperEl.append(blankNode);\r\n }\r\n\r\n slides = $wrapperEl.children(\".\" + params.slideClass);\r\n }\r\n }\r\n\r\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\r\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\r\n swiper.loopedSlides += params.loopAdditionalSlides;\r\n\r\n if (swiper.loopedSlides > slides.length) {\r\n swiper.loopedSlides = slides.length;\r\n }\r\n\r\n var prependSlides = [];\r\n var appendSlides = [];\r\n slides.each(function (el, index) {\r\n var slide = $(el);\r\n\r\n if (index < swiper.loopedSlides) {\r\n appendSlides.push(el);\r\n }\r\n\r\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\r\n prependSlides.push(el);\r\n }\r\n\r\n slide.attr('data-swiper-slide-index', index);\r\n });\r\n\r\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\r\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\r\n }\r\n\r\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\r\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\r\n }\r\n }\r\n\r\n function loopFix() {\r\n var swiper = this;\r\n swiper.emit('beforeLoopFix');\r\n var activeIndex = swiper.activeIndex,\r\n slides = swiper.slides,\r\n loopedSlides = swiper.loopedSlides,\r\n allowSlidePrev = swiper.allowSlidePrev,\r\n allowSlideNext = swiper.allowSlideNext,\r\n snapGrid = swiper.snapGrid,\r\n rtl = swiper.rtlTranslate;\r\n var newIndex;\r\n swiper.allowSlidePrev = true;\r\n swiper.allowSlideNext = true;\r\n var snapTranslate = -snapGrid[activeIndex];\r\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\r\n\r\n if (activeIndex < loopedSlides) {\r\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\r\n newIndex += loopedSlides;\r\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\r\n\r\n if (slideChanged && diff !== 0) {\r\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\r\n }\r\n } else if (activeIndex >= slides.length - loopedSlides) {\r\n // Fix For Positive Oversliding\r\n newIndex = -slides.length + activeIndex + loopedSlides;\r\n newIndex += loopedSlides;\r\n\r\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\r\n\r\n if (_slideChanged && diff !== 0) {\r\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\r\n }\r\n }\r\n\r\n swiper.allowSlidePrev = allowSlidePrev;\r\n swiper.allowSlideNext = allowSlideNext;\r\n swiper.emit('loopFix');\r\n }\r\n\r\n function loopDestroy() {\r\n var swiper = this;\r\n var $wrapperEl = swiper.$wrapperEl,\r\n params = swiper.params,\r\n slides = swiper.slides;\r\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\r\n slides.removeAttr('data-swiper-slide-index');\r\n }\r\n\r\n var loop = {\r\n loopCreate: loopCreate,\r\n loopFix: loopFix,\r\n loopDestroy: loopDestroy\r\n };\r\n\r\n function setGrabCursor(moving) {\r\n var swiper = this;\r\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\r\n var el = swiper.el;\r\n el.style.cursor = 'move';\r\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\r\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\r\n el.style.cursor = moving ? 'grabbing' : 'grab';\r\n }\r\n\r\n function unsetGrabCursor() {\r\n var swiper = this;\r\n\r\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\r\n return;\r\n }\r\n\r\n swiper.el.style.cursor = '';\r\n }\r\n\r\n var grabCursor = {\r\n setGrabCursor: setGrabCursor,\r\n unsetGrabCursor: unsetGrabCursor\r\n };\r\n\r\n function appendSlide(slides) {\r\n var swiper = this;\r\n var $wrapperEl = swiper.$wrapperEl,\r\n params = swiper.params;\r\n\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n }\r\n\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (var i = 0; i < slides.length; i += 1) {\r\n if (slides[i]) $wrapperEl.append(slides[i]);\r\n }\r\n } else {\r\n $wrapperEl.append(slides);\r\n }\r\n\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n\r\n if (!(params.observer && swiper.support.observer)) {\r\n swiper.update();\r\n }\r\n }\r\n\r\n function prependSlide(slides) {\r\n var swiper = this;\r\n var params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl,\r\n activeIndex = swiper.activeIndex;\r\n\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n }\r\n\r\n var newActiveIndex = activeIndex + 1;\r\n\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (var i = 0; i < slides.length; i += 1) {\r\n if (slides[i]) $wrapperEl.prepend(slides[i]);\r\n }\r\n\r\n newActiveIndex = activeIndex + slides.length;\r\n } else {\r\n $wrapperEl.prepend(slides);\r\n }\r\n\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n\r\n if (!(params.observer && swiper.support.observer)) {\r\n swiper.update();\r\n }\r\n\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n\r\n function addSlide(index, slides) {\r\n var swiper = this;\r\n var $wrapperEl = swiper.$wrapperEl,\r\n params = swiper.params,\r\n activeIndex = swiper.activeIndex;\r\n var activeIndexBuffer = activeIndex;\r\n\r\n if (params.loop) {\r\n activeIndexBuffer -= swiper.loopedSlides;\r\n swiper.loopDestroy();\r\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\r\n }\r\n\r\n var baseLength = swiper.slides.length;\r\n\r\n if (index <= 0) {\r\n swiper.prependSlide(slides);\r\n return;\r\n }\r\n\r\n if (index >= baseLength) {\r\n swiper.appendSlide(slides);\r\n return;\r\n }\r\n\r\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\r\n var slidesBuffer = [];\r\n\r\n for (var i = baseLength - 1; i >= index; i -= 1) {\r\n var currentSlide = swiper.slides.eq(i);\r\n currentSlide.remove();\r\n slidesBuffer.unshift(currentSlide);\r\n }\r\n\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (var _i = 0; _i < slides.length; _i += 1) {\r\n if (slides[_i]) $wrapperEl.append(slides[_i]);\r\n }\r\n\r\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\r\n } else {\r\n $wrapperEl.append(slides);\r\n }\r\n\r\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\r\n $wrapperEl.append(slidesBuffer[_i2]);\r\n }\r\n\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n\r\n if (!(params.observer && swiper.support.observer)) {\r\n swiper.update();\r\n }\r\n\r\n if (params.loop) {\r\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\r\n } else {\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n }\r\n\r\n function removeSlide(slidesIndexes) {\r\n var swiper = this;\r\n var params = swiper.params,\r\n $wrapperEl = swiper.$wrapperEl,\r\n activeIndex = swiper.activeIndex;\r\n var activeIndexBuffer = activeIndex;\r\n\r\n if (params.loop) {\r\n activeIndexBuffer -= swiper.loopedSlides;\r\n swiper.loopDestroy();\r\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\r\n }\r\n\r\n var newActiveIndex = activeIndexBuffer;\r\n var indexToRemove;\r\n\r\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\r\n for (var i = 0; i < slidesIndexes.length; i += 1) {\r\n indexToRemove = slidesIndexes[i];\r\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\r\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\r\n }\r\n\r\n newActiveIndex = Math.max(newActiveIndex, 0);\r\n } else {\r\n indexToRemove = slidesIndexes;\r\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\r\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\r\n newActiveIndex = Math.max(newActiveIndex, 0);\r\n }\r\n\r\n if (params.loop) {\r\n swiper.loopCreate();\r\n }\r\n\r\n if (!(params.observer && swiper.support.observer)) {\r\n swiper.update();\r\n }\r\n\r\n if (params.loop) {\r\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\r\n } else {\r\n swiper.slideTo(newActiveIndex, 0, false);\r\n }\r\n }\r\n\r\n function removeAllSlides() {\r\n var swiper = this;\r\n var slidesIndexes = [];\r\n\r\n for (var i = 0; i < swiper.slides.length; i += 1) {\r\n slidesIndexes.push(i);\r\n }\r\n\r\n swiper.removeSlide(slidesIndexes);\r\n }\r\n\r\n var manipulation = {\r\n appendSlide: appendSlide,\r\n prependSlide: prependSlide,\r\n addSlide: addSlide,\r\n removeSlide: removeSlide,\r\n removeAllSlides: removeAllSlides\r\n };\r\n\r\n function onTouchStart(event) {\r\n var swiper = this;\r\n var document = getDocument();\r\n var window = getWindow();\r\n var data = swiper.touchEventsData;\r\n var params = swiper.params,\r\n touches = swiper.touches;\r\n\r\n if (swiper.animating && params.preventInteractionOnTransition) {\r\n return;\r\n }\r\n\r\n var e = event;\r\n if (e.originalEvent) e = e.originalEvent;\r\n var $targetEl = $(e.target);\r\n\r\n if (params.touchEventsTarget === 'wrapper') {\r\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\r\n }\r\n\r\n data.isTouchEvent = e.type === 'touchstart';\r\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\r\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\r\n if (data.isTouched && data.isMoved) return; // change target el for shadow root componenet\r\n\r\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\r\n\r\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\r\n $targetEl = $(event.path[0]);\r\n }\r\n\r\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass)[0]) {\r\n swiper.allowClick = true;\r\n return;\r\n }\r\n\r\n if (params.swipeHandler) {\r\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\r\n }\r\n\r\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\r\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\r\n var startX = touches.currentX;\r\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\r\n\r\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\r\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\r\n\r\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.screen.width - edgeSwipeThreshold)) {\r\n return;\r\n }\r\n\r\n extend$1(data, {\r\n isTouched: true,\r\n isMoved: false,\r\n allowTouchCallbacks: true,\r\n isScrolling: undefined,\r\n startMoving: undefined\r\n });\r\n touches.startX = startX;\r\n touches.startY = startY;\r\n data.touchStartTime = now();\r\n swiper.allowClick = true;\r\n swiper.updateSize();\r\n swiper.swipeDirection = undefined;\r\n if (params.threshold > 0) data.allowThresholdMove = false;\r\n\r\n if (e.type !== 'touchstart') {\r\n var preventDefault = true;\r\n if ($targetEl.is(data.formElements)) preventDefault = false;\r\n\r\n if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {\r\n document.activeElement.blur();\r\n }\r\n\r\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\r\n\r\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n swiper.emit('touchStart', e);\r\n }\r\n\r\n function onTouchMove(event) {\r\n var document = getDocument();\r\n var swiper = this;\r\n var data = swiper.touchEventsData;\r\n var params = swiper.params,\r\n touches = swiper.touches,\r\n rtl = swiper.rtlTranslate;\r\n var e = event;\r\n if (e.originalEvent) e = e.originalEvent;\r\n\r\n if (!data.isTouched) {\r\n if (data.startMoving && data.isScrolling) {\r\n swiper.emit('touchMoveOpposite', e);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (data.isTouchEvent && e.type !== 'touchmove') return;\r\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\r\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\r\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\r\n\r\n if (e.preventedByNestedSwiper) {\r\n touches.startX = pageX;\r\n touches.startY = pageY;\r\n return;\r\n }\r\n\r\n if (!swiper.allowTouchMove) {\r\n // isMoved = true;\r\n swiper.allowClick = false;\r\n\r\n if (data.isTouched) {\r\n extend$1(touches, {\r\n startX: pageX,\r\n startY: pageY,\r\n currentX: pageX,\r\n currentY: pageY\r\n });\r\n data.touchStartTime = now();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\r\n if (swiper.isVertical()) {\r\n // Vertical\r\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n return;\r\n }\r\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\r\n return;\r\n }\r\n }\r\n\r\n if (data.isTouchEvent && document.activeElement) {\r\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\r\n data.isMoved = true;\r\n swiper.allowClick = false;\r\n return;\r\n }\r\n }\r\n\r\n if (data.allowTouchCallbacks) {\r\n swiper.emit('touchMove', e);\r\n }\r\n\r\n if (e.targetTouches && e.targetTouches.length > 1) return;\r\n touches.currentX = pageX;\r\n touches.currentY = pageY;\r\n var diffX = touches.currentX - touches.startX;\r\n var diffY = touches.currentY - touches.startY;\r\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\r\n\r\n if (typeof data.isScrolling === 'undefined') {\r\n var touchAngle;\r\n\r\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\r\n data.isScrolling = false;\r\n } else {\r\n // eslint-disable-next-line\r\n if (diffX * diffX + diffY * diffY >= 25) {\r\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\r\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\r\n }\r\n }\r\n }\r\n\r\n if (data.isScrolling) {\r\n swiper.emit('touchMoveOpposite', e);\r\n }\r\n\r\n if (typeof data.startMoving === 'undefined') {\r\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\r\n data.startMoving = true;\r\n }\r\n }\r\n\r\n if (data.isScrolling) {\r\n data.isTouched = false;\r\n return;\r\n }\r\n\r\n if (!data.startMoving) {\r\n return;\r\n }\r\n\r\n swiper.allowClick = false;\r\n\r\n if (!params.cssMode && e.cancelable) {\r\n e.preventDefault();\r\n }\r\n\r\n if (params.touchMoveStopPropagation && !params.nested) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (!data.isMoved) {\r\n if (params.loop) {\r\n swiper.loopFix();\r\n }\r\n\r\n data.startTranslate = swiper.getTranslate();\r\n swiper.setTransition(0);\r\n\r\n if (swiper.animating) {\r\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\r\n }\r\n\r\n data.allowMomentumBounce = false; // Grab Cursor\r\n\r\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\r\n swiper.setGrabCursor(true);\r\n }\r\n\r\n swiper.emit('sliderFirstMove', e);\r\n }\r\n\r\n swiper.emit('sliderMove', e);\r\n data.isMoved = true;\r\n var diff = swiper.isHorizontal() ? diffX : diffY;\r\n touches.diff = diff;\r\n diff *= params.touchRatio;\r\n if (rtl) diff = -diff;\r\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\r\n data.currentTranslate = diff + data.startTranslate;\r\n var disableParentSwiper = true;\r\n var resistanceRatio = params.resistanceRatio;\r\n\r\n if (params.touchReleaseOnEdges) {\r\n resistanceRatio = 0;\r\n }\r\n\r\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\r\n disableParentSwiper = false;\r\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\r\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\r\n disableParentSwiper = false;\r\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\r\n }\r\n\r\n if (disableParentSwiper) {\r\n e.preventedByNestedSwiper = true;\r\n } // Directions locks\r\n\r\n\r\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\r\n data.currentTranslate = data.startTranslate;\r\n }\r\n\r\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\r\n data.currentTranslate = data.startTranslate;\r\n } // Threshold\r\n\r\n\r\n if (params.threshold > 0) {\r\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\r\n if (!data.allowThresholdMove) {\r\n data.allowThresholdMove = true;\r\n touches.startX = touches.currentX;\r\n touches.startY = touches.currentY;\r\n data.currentTranslate = data.startTranslate;\r\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\r\n return;\r\n }\r\n } else {\r\n data.currentTranslate = data.startTranslate;\r\n return;\r\n }\r\n }\r\n\r\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\r\n\r\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n\r\n if (params.freeMode) {\r\n // Velocity\r\n if (data.velocities.length === 0) {\r\n data.velocities.push({\r\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\r\n time: data.touchStartTime\r\n });\r\n }\r\n\r\n data.velocities.push({\r\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\r\n time: now()\r\n });\r\n } // Update progress\r\n\r\n\r\n swiper.updateProgress(data.currentTranslate); // Update translate\r\n\r\n swiper.setTranslate(data.currentTranslate);\r\n }\r\n\r\n function onTouchEnd(event) {\r\n var swiper = this;\r\n var data = swiper.touchEventsData;\r\n var params = swiper.params,\r\n touches = swiper.touches,\r\n rtl = swiper.rtlTranslate,\r\n $wrapperEl = swiper.$wrapperEl,\r\n slidesGrid = swiper.slidesGrid,\r\n snapGrid = swiper.snapGrid;\r\n var e = event;\r\n if (e.originalEvent) e = e.originalEvent;\r\n\r\n if (data.allowTouchCallbacks) {\r\n swiper.emit('touchEnd', e);\r\n }\r\n\r\n data.allowTouchCallbacks = false;\r\n\r\n if (!data.isTouched) {\r\n if (data.isMoved && params.grabCursor) {\r\n swiper.setGrabCursor(false);\r\n }\r\n\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n return;\r\n } // Return Grab Cursor\r\n\r\n\r\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\r\n swiper.setGrabCursor(false);\r\n } // Time diff\r\n\r\n\r\n var touchEndTime = now();\r\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\r\n\r\n if (swiper.allowClick) {\r\n swiper.updateClickedSlide(e);\r\n swiper.emit('tap click', e);\r\n\r\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\r\n swiper.emit('doubleTap doubleClick', e);\r\n }\r\n }\r\n\r\n data.lastClickTime = now();\r\n nextTick(function () {\r\n if (!swiper.destroyed) swiper.allowClick = true;\r\n });\r\n\r\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n return;\r\n }\r\n\r\n data.isTouched = false;\r\n data.isMoved = false;\r\n data.startMoving = false;\r\n var currentPos;\r\n\r\n if (params.followFinger) {\r\n currentPos = rtl ? swiper.translate : -swiper.translate;\r\n } else {\r\n currentPos = -data.currentTranslate;\r\n }\r\n\r\n if (params.cssMode) {\r\n return;\r\n }\r\n\r\n if (params.freeMode) {\r\n if (currentPos < -swiper.minTranslate()) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n\r\n if (currentPos > -swiper.maxTranslate()) {\r\n if (swiper.slides.length < snapGrid.length) {\r\n swiper.slideTo(snapGrid.length - 1);\r\n } else {\r\n swiper.slideTo(swiper.slides.length - 1);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (params.freeModeMomentum) {\r\n if (data.velocities.length > 1) {\r\n var lastMoveEvent = data.velocities.pop();\r\n var velocityEvent = data.velocities.pop();\r\n var distance = lastMoveEvent.position - velocityEvent.position;\r\n var time = lastMoveEvent.time - velocityEvent.time;\r\n swiper.velocity = distance / time;\r\n swiper.velocity /= 2;\r\n\r\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\r\n swiper.velocity = 0;\r\n } // this implies that the user stopped moving a finger then released.\r\n // There would be no events with distance zero, so the last event is stale.\r\n\r\n\r\n if (time > 150 || now() - lastMoveEvent.time > 300) {\r\n swiper.velocity = 0;\r\n }\r\n } else {\r\n swiper.velocity = 0;\r\n }\r\n\r\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\r\n data.velocities.length = 0;\r\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\r\n var momentumDistance = swiper.velocity * momentumDuration;\r\n var newPosition = swiper.translate + momentumDistance;\r\n if (rtl) newPosition = -newPosition;\r\n var doBounce = false;\r\n var afterBouncePosition;\r\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\r\n var needsLoopFix;\r\n\r\n if (newPosition < swiper.maxTranslate()) {\r\n if (params.freeModeMomentumBounce) {\r\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\r\n newPosition = swiper.maxTranslate() - bounceAmount;\r\n }\r\n\r\n afterBouncePosition = swiper.maxTranslate();\r\n doBounce = true;\r\n data.allowMomentumBounce = true;\r\n } else {\r\n newPosition = swiper.maxTranslate();\r\n }\r\n\r\n if (params.loop && params.centeredSlides) needsLoopFix = true;\r\n } else if (newPosition > swiper.minTranslate()) {\r\n if (params.freeModeMomentumBounce) {\r\n if (newPosition - swiper.minTranslate() > bounceAmount) {\r\n newPosition = swiper.minTranslate() + bounceAmount;\r\n }\r\n\r\n afterBouncePosition = swiper.minTranslate();\r\n doBounce = true;\r\n data.allowMomentumBounce = true;\r\n } else {\r\n newPosition = swiper.minTranslate();\r\n }\r\n\r\n if (params.loop && params.centeredSlides) needsLoopFix = true;\r\n } else if (params.freeModeSticky) {\r\n var nextSlide;\r\n\r\n for (var j = 0; j < snapGrid.length; j += 1) {\r\n if (snapGrid[j] > -newPosition) {\r\n nextSlide = j;\r\n break;\r\n }\r\n }\r\n\r\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\r\n newPosition = snapGrid[nextSlide];\r\n } else {\r\n newPosition = snapGrid[nextSlide - 1];\r\n }\r\n\r\n newPosition = -newPosition;\r\n }\r\n\r\n if (needsLoopFix) {\r\n swiper.once('transitionEnd', function () {\r\n swiper.loopFix();\r\n });\r\n } // Fix duration\r\n\r\n\r\n if (swiper.velocity !== 0) {\r\n if (rtl) {\r\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\r\n } else {\r\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\r\n }\r\n\r\n if (params.freeModeSticky) {\r\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\r\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\r\n // It's easy to see this when simulating touch with mouse events. To fix this,\r\n // limit single-slide swipes to the default slide duration. This also has the\r\n // nice side effect of matching slide speed if the user stopped moving before\r\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\r\n // For faster swipes, also apply limits (albeit higher ones).\r\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\r\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\r\n\r\n if (moveDistance < currentSlideSize) {\r\n momentumDuration = params.speed;\r\n } else if (moveDistance < 2 * currentSlideSize) {\r\n momentumDuration = params.speed * 1.5;\r\n } else {\r\n momentumDuration = params.speed * 2.5;\r\n }\r\n }\r\n } else if (params.freeModeSticky) {\r\n swiper.slideToClosest();\r\n return;\r\n }\r\n\r\n if (params.freeModeMomentumBounce && doBounce) {\r\n swiper.updateProgress(afterBouncePosition);\r\n swiper.setTransition(momentumDuration);\r\n swiper.setTranslate(newPosition);\r\n swiper.transitionStart(true, swiper.swipeDirection);\r\n swiper.animating = true;\r\n $wrapperEl.transitionEnd(function () {\r\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\r\n swiper.emit('momentumBounce');\r\n swiper.setTransition(params.speed);\r\n setTimeout(function () {\r\n swiper.setTranslate(afterBouncePosition);\r\n $wrapperEl.transitionEnd(function () {\r\n if (!swiper || swiper.destroyed) return;\r\n swiper.transitionEnd();\r\n });\r\n }, 0);\r\n });\r\n } else if (swiper.velocity) {\r\n swiper.updateProgress(newPosition);\r\n swiper.setTransition(momentumDuration);\r\n swiper.setTranslate(newPosition);\r\n swiper.transitionStart(true, swiper.swipeDirection);\r\n\r\n if (!swiper.animating) {\r\n swiper.animating = true;\r\n $wrapperEl.transitionEnd(function () {\r\n if (!swiper || swiper.destroyed) return;\r\n swiper.transitionEnd();\r\n });\r\n }\r\n } else {\r\n swiper.updateProgress(newPosition);\r\n }\r\n\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n } else if (params.freeModeSticky) {\r\n swiper.slideToClosest();\r\n return;\r\n }\r\n\r\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\r\n swiper.updateProgress();\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n\r\n return;\r\n } // Find current slide\r\n\r\n\r\n var stopIndex = 0;\r\n var groupSize = swiper.slidesSizesGrid[0];\r\n\r\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\r\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n\r\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\r\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\r\n stopIndex = i;\r\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\r\n }\r\n } else if (currentPos >= slidesGrid[i]) {\r\n stopIndex = i;\r\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\r\n }\r\n } // Find current slide size\r\n\r\n\r\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\r\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\r\n\r\n if (timeDiff > params.longSwipesMs) {\r\n // Long touches\r\n if (!params.longSwipes) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n\r\n if (swiper.swipeDirection === 'next') {\r\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\r\n }\r\n\r\n if (swiper.swipeDirection === 'prev') {\r\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\r\n }\r\n } else {\r\n // Short swipes\r\n if (!params.shortSwipes) {\r\n swiper.slideTo(swiper.activeIndex);\r\n return;\r\n }\r\n\r\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\r\n\r\n if (!isNavButtonTarget) {\r\n if (swiper.swipeDirection === 'next') {\r\n swiper.slideTo(stopIndex + increment);\r\n }\r\n\r\n if (swiper.swipeDirection === 'prev') {\r\n swiper.slideTo(stopIndex);\r\n }\r\n } else if (e.target === swiper.navigation.nextEl) {\r\n swiper.slideTo(stopIndex + increment);\r\n } else {\r\n swiper.slideTo(stopIndex);\r\n }\r\n }\r\n }\r\n\r\n function onResize() {\r\n var swiper = this;\r\n var params = swiper.params,\r\n el = swiper.el;\r\n if (el && el.offsetWidth === 0) return; // Breakpoints\r\n\r\n if (params.breakpoints) {\r\n swiper.setBreakpoint();\r\n } // Save locks\r\n\r\n\r\n var allowSlideNext = swiper.allowSlideNext,\r\n allowSlidePrev = swiper.allowSlidePrev,\r\n snapGrid = swiper.snapGrid; // Disable locks on resize\r\n\r\n swiper.allowSlideNext = true;\r\n swiper.allowSlidePrev = true;\r\n swiper.updateSize();\r\n swiper.updateSlides();\r\n swiper.updateSlidesClasses();\r\n\r\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\r\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\r\n } else {\r\n swiper.slideTo(swiper.activeIndex, 0, false, true);\r\n }\r\n\r\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\r\n swiper.autoplay.run();\r\n } // Return locks after resize\r\n\r\n\r\n swiper.allowSlidePrev = allowSlidePrev;\r\n swiper.allowSlideNext = allowSlideNext;\r\n\r\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\r\n swiper.checkOverflow();\r\n }\r\n }\r\n\r\n function onClick(e) {\r\n var swiper = this;\r\n\r\n if (!swiper.allowClick) {\r\n if (swiper.params.preventClicks) e.preventDefault();\r\n\r\n if (swiper.params.preventClicksPropagation && swiper.animating) {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n }\r\n\r\n function onScroll() {\r\n var swiper = this;\r\n var wrapperEl = swiper.wrapperEl,\r\n rtlTranslate = swiper.rtlTranslate;\r\n swiper.previousTranslate = swiper.translate;\r\n\r\n if (swiper.isHorizontal()) {\r\n if (rtlTranslate) {\r\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\r\n } else {\r\n swiper.translate = -wrapperEl.scrollLeft;\r\n }\r\n } else {\r\n swiper.translate = -wrapperEl.scrollTop;\r\n } // eslint-disable-next-line\r\n\r\n\r\n if (swiper.translate === -0) swiper.translate = 0;\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n var newProgress;\r\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\r\n\r\n if (translatesDiff === 0) {\r\n newProgress = 0;\r\n } else {\r\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\r\n }\r\n\r\n if (newProgress !== swiper.progress) {\r\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\r\n }\r\n\r\n swiper.emit('setTranslate', swiper.translate, false);\r\n }\r\n\r\n var dummyEventAttached = false;\r\n\r\n function dummyEventListener() {}\r\n\r\n function attachEvents() {\r\n var swiper = this;\r\n var document = getDocument();\r\n var params = swiper.params,\r\n touchEvents = swiper.touchEvents,\r\n el = swiper.el,\r\n wrapperEl = swiper.wrapperEl,\r\n device = swiper.device,\r\n support = swiper.support;\r\n swiper.onTouchStart = onTouchStart.bind(swiper);\r\n swiper.onTouchMove = onTouchMove.bind(swiper);\r\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\r\n\r\n if (params.cssMode) {\r\n swiper.onScroll = onScroll.bind(swiper);\r\n }\r\n\r\n swiper.onClick = onClick.bind(swiper);\r\n var capture = !!params.nested; // Touch Events\r\n\r\n if (!support.touch && support.pointerEvents) {\r\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\r\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\r\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\r\n } else {\r\n if (support.touch) {\r\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\r\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\r\n passive: false,\r\n capture: capture\r\n } : capture);\r\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\r\n\r\n if (touchEvents.cancel) {\r\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\r\n }\r\n\r\n if (!dummyEventAttached) {\r\n document.addEventListener('touchstart', dummyEventListener);\r\n dummyEventAttached = true;\r\n }\r\n }\r\n\r\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\r\n el.addEventListener('mousedown', swiper.onTouchStart, false);\r\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\r\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\r\n }\r\n } // Prevent Links Clicks\r\n\r\n\r\n if (params.preventClicks || params.preventClicksPropagation) {\r\n el.addEventListener('click', swiper.onClick, true);\r\n }\r\n\r\n if (params.cssMode) {\r\n wrapperEl.addEventListener('scroll', swiper.onScroll);\r\n } // Resize handler\r\n\r\n\r\n if (params.updateOnWindowResize) {\r\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\r\n } else {\r\n swiper.on('observerUpdate', onResize, true);\r\n }\r\n }\r\n\r\n function detachEvents() {\r\n var swiper = this;\r\n var document = getDocument();\r\n var params = swiper.params,\r\n touchEvents = swiper.touchEvents,\r\n el = swiper.el,\r\n wrapperEl = swiper.wrapperEl,\r\n device = swiper.device,\r\n support = swiper.support;\r\n var capture = !!params.nested; // Touch Events\r\n\r\n if (!support.touch && support.pointerEvents) {\r\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\r\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\r\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\r\n } else {\r\n if (support.touch) {\r\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\r\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\r\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\r\n\r\n if (touchEvents.cancel) {\r\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\r\n }\r\n }\r\n\r\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\r\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\r\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\r\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\r\n }\r\n } // Prevent Links Clicks\r\n\r\n\r\n if (params.preventClicks || params.preventClicksPropagation) {\r\n el.removeEventListener('click', swiper.onClick, true);\r\n }\r\n\r\n if (params.cssMode) {\r\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\r\n } // Resize handler\r\n\r\n\r\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\r\n }\r\n\r\n var events = {\r\n attachEvents: attachEvents,\r\n detachEvents: detachEvents\r\n };\r\n\r\n function setBreakpoint() {\r\n var swiper = this;\r\n var activeIndex = swiper.activeIndex,\r\n initialized = swiper.initialized,\r\n _swiper$loopedSlides = swiper.loopedSlides,\r\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\r\n params = swiper.params,\r\n $el = swiper.$el;\r\n var breakpoints = params.breakpoints;\r\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\r\n\r\n var breakpoint = swiper.getBreakpoint(breakpoints);\r\n\r\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\r\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\r\n\r\n if (breakpointOnlyParams) {\r\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\r\n var paramValue = breakpointOnlyParams[param];\r\n if (typeof paramValue === 'undefined') return;\r\n\r\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\r\n breakpointOnlyParams[param] = 'auto';\r\n } else if (param === 'slidesPerView') {\r\n breakpointOnlyParams[param] = parseFloat(paramValue);\r\n } else {\r\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\r\n }\r\n });\r\n }\r\n\r\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\r\n var wasMultiRow = params.slidesPerColumn > 1;\r\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\r\n\r\n if (wasMultiRow && !isMultiRow) {\r\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\r\n swiper.emitContainerClasses();\r\n } else if (!wasMultiRow && isMultiRow) {\r\n $el.addClass(params.containerModifierClass + \"multirow\");\r\n\r\n if (breakpointParams.slidesPerColumnFill === 'column') {\r\n $el.addClass(params.containerModifierClass + \"multirow-column\");\r\n }\r\n\r\n swiper.emitContainerClasses();\r\n }\r\n\r\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\r\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\r\n\r\n if (directionChanged && initialized) {\r\n swiper.changeDirection();\r\n }\r\n\r\n extend$1(swiper.params, breakpointParams);\r\n extend$1(swiper, {\r\n allowTouchMove: swiper.params.allowTouchMove,\r\n allowSlideNext: swiper.params.allowSlideNext,\r\n allowSlidePrev: swiper.params.allowSlidePrev\r\n });\r\n swiper.currentBreakpoint = breakpoint;\r\n swiper.emit('_beforeBreakpoint', breakpointParams);\r\n\r\n if (needsReLoop && initialized) {\r\n swiper.loopDestroy();\r\n swiper.loopCreate();\r\n swiper.updateSlides();\r\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\r\n }\r\n\r\n swiper.emit('breakpoint', breakpointParams);\r\n }\r\n }\r\n\r\n function getBreakpoints(breakpoints) {\r\n var window = getWindow(); // Get breakpoint for window width\r\n\r\n if (!breakpoints) return undefined;\r\n var breakpoint = false;\r\n var points = Object.keys(breakpoints).map(function (point) {\r\n if (typeof point === 'string' && point.indexOf('@') === 0) {\r\n var minRatio = parseFloat(point.substr(1));\r\n var value = window.innerHeight * minRatio;\r\n return {\r\n value: value,\r\n point: point\r\n };\r\n }\r\n\r\n return {\r\n value: point,\r\n point: point\r\n };\r\n });\r\n points.sort(function (a, b) {\r\n return parseInt(a.value, 10) - parseInt(b.value, 10);\r\n });\r\n\r\n for (var i = 0; i < points.length; i += 1) {\r\n var _points$i = points[i],\r\n point = _points$i.point,\r\n value = _points$i.value;\r\n\r\n if (value <= window.innerWidth) {\r\n breakpoint = point;\r\n }\r\n }\r\n\r\n return breakpoint || 'max';\r\n }\r\n\r\n var breakpoints = {\r\n setBreakpoint: setBreakpoint,\r\n getBreakpoint: getBreakpoints\r\n };\r\n\r\n function addClasses() {\r\n var swiper = this;\r\n var classNames = swiper.classNames,\r\n params = swiper.params,\r\n rtl = swiper.rtl,\r\n $el = swiper.$el,\r\n device = swiper.device;\r\n var suffixes = [];\r\n suffixes.push('initialized');\r\n suffixes.push(params.direction);\r\n\r\n if (params.freeMode) {\r\n suffixes.push('free-mode');\r\n }\r\n\r\n if (params.autoHeight) {\r\n suffixes.push('autoheight');\r\n }\r\n\r\n if (rtl) {\r\n suffixes.push('rtl');\r\n }\r\n\r\n if (params.slidesPerColumn > 1) {\r\n suffixes.push('multirow');\r\n\r\n if (params.slidesPerColumnFill === 'column') {\r\n suffixes.push('multirow-column');\r\n }\r\n }\r\n\r\n if (device.android) {\r\n suffixes.push('android');\r\n }\r\n\r\n if (device.ios) {\r\n suffixes.push('ios');\r\n }\r\n\r\n if (params.cssMode) {\r\n suffixes.push('css-mode');\r\n }\r\n\r\n suffixes.forEach(function (suffix) {\r\n classNames.push(params.containerModifierClass + suffix);\r\n });\r\n $el.addClass(classNames.join(' '));\r\n swiper.emitContainerClasses();\r\n }\r\n\r\n function removeClasses() {\r\n var swiper = this;\r\n var $el = swiper.$el,\r\n classNames = swiper.classNames;\r\n $el.removeClass(classNames.join(' '));\r\n swiper.emitContainerClasses();\r\n }\r\n\r\n var classes = {\r\n addClasses: addClasses,\r\n removeClasses: removeClasses\r\n };\r\n\r\n function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\r\n var window = getWindow();\r\n var image;\r\n\r\n function onReady() {\r\n if (callback) callback();\r\n }\r\n\r\n var isPicture = $(imageEl).parent('picture')[0];\r\n\r\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\r\n if (src) {\r\n image = new window.Image();\r\n image.onload = onReady;\r\n image.onerror = onReady;\r\n\r\n if (sizes) {\r\n image.sizes = sizes;\r\n }\r\n\r\n if (srcset) {\r\n image.srcset = srcset;\r\n }\r\n\r\n if (src) {\r\n image.src = src;\r\n }\r\n } else {\r\n onReady();\r\n }\r\n } else {\r\n // image already loaded...\r\n onReady();\r\n }\r\n }\r\n\r\n function preloadImages() {\r\n var swiper = this;\r\n swiper.imagesToLoad = swiper.$el.find('img');\r\n\r\n function onReady() {\r\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\r\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\r\n\r\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\r\n if (swiper.params.updateOnImagesReady) swiper.update();\r\n swiper.emit('imagesReady');\r\n }\r\n }\r\n\r\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\r\n var imageEl = swiper.imagesToLoad[i];\r\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\r\n }\r\n }\r\n\r\n var images = {\r\n loadImage: loadImage,\r\n preloadImages: preloadImages\r\n };\r\n\r\n function checkOverflow() {\r\n var swiper = this;\r\n var params = swiper.params;\r\n var wasLocked = swiper.isLocked;\r\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\r\n\r\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\r\n swiper.isLocked = lastSlidePosition <= swiper.size;\r\n } else {\r\n swiper.isLocked = swiper.snapGrid.length === 1;\r\n }\r\n\r\n swiper.allowSlideNext = !swiper.isLocked;\r\n swiper.allowSlidePrev = !swiper.isLocked; // events\r\n\r\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\r\n\r\n if (wasLocked && wasLocked !== swiper.isLocked) {\r\n swiper.isEnd = false;\r\n if (swiper.navigation) swiper.navigation.update();\r\n }\r\n }\r\n\r\n var checkOverflow$1 = {\r\n checkOverflow: checkOverflow\r\n };\r\n\r\n var defaults = {\r\n init: true,\r\n direction: 'horizontal',\r\n touchEventsTarget: 'container',\r\n initialSlide: 0,\r\n speed: 300,\r\n cssMode: false,\r\n updateOnWindowResize: true,\r\n nested: false,\r\n // Overrides\r\n width: null,\r\n height: null,\r\n //\r\n preventInteractionOnTransition: false,\r\n // ssr\r\n userAgent: null,\r\n url: null,\r\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\r\n edgeSwipeDetection: false,\r\n edgeSwipeThreshold: 20,\r\n // Free mode\r\n freeMode: false,\r\n freeModeMomentum: true,\r\n freeModeMomentumRatio: 1,\r\n freeModeMomentumBounce: true,\r\n freeModeMomentumBounceRatio: 1,\r\n freeModeMomentumVelocityRatio: 1,\r\n freeModeSticky: false,\r\n freeModeMinimumVelocity: 0.02,\r\n // Autoheight\r\n autoHeight: false,\r\n // Set wrapper width\r\n setWrapperSize: false,\r\n // Virtual Translate\r\n virtualTranslate: false,\r\n // Effects\r\n effect: 'slide',\r\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\r\n // Breakpoints\r\n breakpoints: undefined,\r\n // Slides grid\r\n spaceBetween: 0,\r\n slidesPerView: 1,\r\n slidesPerColumn: 1,\r\n slidesPerColumnFill: 'column',\r\n slidesPerGroup: 1,\r\n slidesPerGroupSkip: 0,\r\n centeredSlides: false,\r\n centeredSlidesBounds: false,\r\n slidesOffsetBefore: 0,\r\n // in px\r\n slidesOffsetAfter: 0,\r\n // in px\r\n normalizeSlideIndex: true,\r\n centerInsufficientSlides: false,\r\n // Disable swiper and hide navigation when container not overflow\r\n watchOverflow: false,\r\n // Round length\r\n roundLengths: false,\r\n // Touches\r\n touchRatio: 1,\r\n touchAngle: 45,\r\n simulateTouch: true,\r\n shortSwipes: true,\r\n longSwipes: true,\r\n longSwipesRatio: 0.5,\r\n longSwipesMs: 300,\r\n followFinger: true,\r\n allowTouchMove: true,\r\n threshold: 0,\r\n touchMoveStopPropagation: false,\r\n touchStartPreventDefault: true,\r\n touchStartForcePreventDefault: false,\r\n touchReleaseOnEdges: false,\r\n // Unique Navigation Elements\r\n uniqueNavElements: true,\r\n // Resistance\r\n resistance: true,\r\n resistanceRatio: 0.85,\r\n // Progress\r\n watchSlidesProgress: false,\r\n watchSlidesVisibility: false,\r\n // Cursor\r\n grabCursor: false,\r\n // Clicks\r\n preventClicks: true,\r\n preventClicksPropagation: true,\r\n slideToClickedSlide: false,\r\n // Images\r\n preloadImages: true,\r\n updateOnImagesReady: true,\r\n // loop\r\n loop: false,\r\n loopAdditionalSlides: 0,\r\n loopedSlides: null,\r\n loopFillGroupWithBlank: false,\r\n loopPreventsSlide: true,\r\n // Swiping/no swiping\r\n allowSlidePrev: true,\r\n allowSlideNext: true,\r\n swipeHandler: null,\r\n // '.swipe-handler',\r\n noSwiping: true,\r\n noSwipingClass: 'swiper-no-swiping',\r\n noSwipingSelector: null,\r\n // Passive Listeners\r\n passiveListeners: true,\r\n // NS\r\n containerModifierClass: 'swiper-container-',\r\n // NEW\r\n slideClass: 'swiper-slide',\r\n slideBlankClass: 'swiper-slide-invisible-blank',\r\n slideActiveClass: 'swiper-slide-active',\r\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\r\n slideVisibleClass: 'swiper-slide-visible',\r\n slideDuplicateClass: 'swiper-slide-duplicate',\r\n slideNextClass: 'swiper-slide-next',\r\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\r\n slidePrevClass: 'swiper-slide-prev',\r\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\r\n wrapperClass: 'swiper-wrapper',\r\n // Callbacks\r\n runCallbacksOnInit: true,\r\n // Internals\r\n _emitClasses: false\r\n };\r\n\r\n var prototypes = {\r\n modular: modular,\r\n eventsEmitter: eventsEmitter,\r\n update: update,\r\n translate: translate,\r\n transition: transition$1,\r\n slide: slide,\r\n loop: loop,\r\n grabCursor: grabCursor,\r\n manipulation: manipulation,\r\n events: events,\r\n breakpoints: breakpoints,\r\n checkOverflow: checkOverflow$1,\r\n classes: classes,\r\n images: images\r\n };\r\n var extendedDefaults = {};\r\n\r\n var Swiper = /*#__PURE__*/function () {\r\n function Swiper() {\r\n var el;\r\n var params;\r\n\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\r\n params = args[0];\r\n } else {\r\n el = args[0];\r\n params = args[1];\r\n }\r\n\r\n if (!params) params = {};\r\n params = extend$1({}, params);\r\n if (el && !params.el) params.el = el; // Swiper Instance\r\n\r\n var swiper = this;\r\n swiper.support = getSupport();\r\n swiper.device = getDevice({\r\n userAgent: params.userAgent\r\n });\r\n swiper.browser = getBrowser();\r\n swiper.eventsListeners = {};\r\n swiper.eventsAnyListeners = [];\r\n\r\n if (typeof swiper.modules === 'undefined') {\r\n swiper.modules = {};\r\n }\r\n\r\n Object.keys(swiper.modules).forEach(function (moduleName) {\r\n var module = swiper.modules[moduleName];\r\n\r\n if (module.params) {\r\n var moduleParamName = Object.keys(module.params)[0];\r\n var moduleParams = module.params[moduleParamName];\r\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\r\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\r\n\r\n if (params[moduleParamName] === true) {\r\n params[moduleParamName] = {\r\n enabled: true\r\n };\r\n }\r\n\r\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\r\n params[moduleParamName].enabled = true;\r\n }\r\n\r\n if (!params[moduleParamName]) params[moduleParamName] = {\r\n enabled: false\r\n };\r\n }\r\n }); // Extend defaults with modules params\r\n\r\n var swiperParams = extend$1({}, defaults);\r\n swiper.useParams(swiperParams); // Extend defaults with passed params\r\n\r\n swiper.params = extend$1({}, swiperParams, extendedDefaults, params);\r\n swiper.originalParams = extend$1({}, swiper.params);\r\n swiper.passedParams = extend$1({}, params); // add event listeners\r\n\r\n if (swiper.params && swiper.params.on) {\r\n Object.keys(swiper.params.on).forEach(function (eventName) {\r\n swiper.on(eventName, swiper.params.on[eventName]);\r\n });\r\n }\r\n\r\n if (swiper.params && swiper.params.onAny) {\r\n swiper.onAny(swiper.params.onAny);\r\n } // Save Dom lib\r\n\r\n\r\n swiper.$ = $; // Find el\r\n\r\n var $el = $(swiper.params.el);\r\n el = $el[0];\r\n\r\n if (!el) {\r\n return undefined;\r\n }\r\n\r\n if ($el.length > 1) {\r\n var swipers = [];\r\n $el.each(function (containerEl) {\r\n var newParams = extend$1({}, params, {\r\n el: containerEl\r\n });\r\n swipers.push(new Swiper(newParams));\r\n });\r\n return swipers;\r\n }\r\n\r\n el.swiper = swiper; // Find Wrapper\r\n\r\n var $wrapperEl;\r\n\r\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\r\n $wrapperEl = $(el.shadowRoot.querySelector(\".\" + swiper.params.wrapperClass)); // Children needs to return slot items\r\n\r\n $wrapperEl.children = function (options) {\r\n return $el.children(options);\r\n };\r\n } else {\r\n $wrapperEl = $el.children(\".\" + swiper.params.wrapperClass);\r\n } // Extend Swiper\r\n\r\n\r\n extend$1(swiper, {\r\n $el: $el,\r\n el: el,\r\n $wrapperEl: $wrapperEl,\r\n wrapperEl: $wrapperEl[0],\r\n // Classes\r\n classNames: [],\r\n // Slides\r\n slides: $(),\r\n slidesGrid: [],\r\n snapGrid: [],\r\n slidesSizesGrid: [],\r\n // isDirection\r\n isHorizontal: function isHorizontal() {\r\n return swiper.params.direction === 'horizontal';\r\n },\r\n isVertical: function isVertical() {\r\n return swiper.params.direction === 'vertical';\r\n },\r\n // RTL\r\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\r\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\r\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\r\n // Indexes\r\n activeIndex: 0,\r\n realIndex: 0,\r\n //\r\n isBeginning: true,\r\n isEnd: false,\r\n // Props\r\n translate: 0,\r\n previousTranslate: 0,\r\n progress: 0,\r\n velocity: 0,\r\n animating: false,\r\n // Locks\r\n allowSlideNext: swiper.params.allowSlideNext,\r\n allowSlidePrev: swiper.params.allowSlidePrev,\r\n // Touch Events\r\n touchEvents: function touchEvents() {\r\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\r\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\r\n\r\n if (swiper.support.pointerEvents) {\r\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\r\n }\r\n\r\n swiper.touchEventsTouch = {\r\n start: touch[0],\r\n move: touch[1],\r\n end: touch[2],\r\n cancel: touch[3]\r\n };\r\n swiper.touchEventsDesktop = {\r\n start: desktop[0],\r\n move: desktop[1],\r\n end: desktop[2]\r\n };\r\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\r\n }(),\r\n touchEventsData: {\r\n isTouched: undefined,\r\n isMoved: undefined,\r\n allowTouchCallbacks: undefined,\r\n touchStartTime: undefined,\r\n isScrolling: undefined,\r\n currentTranslate: undefined,\r\n startTranslate: undefined,\r\n allowThresholdMove: undefined,\r\n // Form elements to match\r\n formElements: 'input, select, option, textarea, button, video, label',\r\n // Last click time\r\n lastClickTime: now(),\r\n clickTimeout: undefined,\r\n // Velocities\r\n velocities: [],\r\n allowMomentumBounce: undefined,\r\n isTouchEvent: undefined,\r\n startMoving: undefined\r\n },\r\n // Clicks\r\n allowClick: true,\r\n // Touches\r\n allowTouchMove: swiper.params.allowTouchMove,\r\n touches: {\r\n startX: 0,\r\n startY: 0,\r\n currentX: 0,\r\n currentY: 0,\r\n diff: 0\r\n },\r\n // Images\r\n imagesToLoad: [],\r\n imagesLoaded: 0\r\n }); // Install Modules\r\n\r\n swiper.useModules();\r\n swiper.emit('_swiper'); // Init\r\n\r\n if (swiper.params.init) {\r\n swiper.init();\r\n } // Return app instance\r\n\r\n\r\n return swiper;\r\n }\r\n\r\n var _proto = Swiper.prototype;\r\n\r\n _proto.emitContainerClasses = function emitContainerClasses() {\r\n var swiper = this;\r\n if (!swiper.params._emitClasses || !swiper.el) return;\r\n var classes = swiper.el.className.split(' ').filter(function (className) {\r\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\r\n });\r\n swiper.emit('_containerClasses', classes.join(' '));\r\n };\r\n\r\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\r\n var swiper = this;\r\n return slideEl.className.split(' ').filter(function (className) {\r\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\r\n }).join(' ');\r\n };\r\n\r\n _proto.emitSlidesClasses = function emitSlidesClasses() {\r\n var swiper = this;\r\n if (!swiper.params._emitClasses || !swiper.el) return;\r\n swiper.slides.each(function (slideEl) {\r\n var classNames = swiper.getSlideClasses(slideEl);\r\n swiper.emit('_slideClass', slideEl, classNames);\r\n });\r\n };\r\n\r\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\r\n var swiper = this;\r\n var params = swiper.params,\r\n slides = swiper.slides,\r\n slidesGrid = swiper.slidesGrid,\r\n swiperSize = swiper.size,\r\n activeIndex = swiper.activeIndex;\r\n var spv = 1;\r\n\r\n if (params.centeredSlides) {\r\n var slideSize = slides[activeIndex].swiperSlideSize;\r\n var breakLoop;\r\n\r\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\r\n if (slides[i] && !breakLoop) {\r\n slideSize += slides[i].swiperSlideSize;\r\n spv += 1;\r\n if (slideSize > swiperSize) breakLoop = true;\r\n }\r\n }\r\n\r\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\r\n if (slides[_i] && !breakLoop) {\r\n slideSize += slides[_i].swiperSlideSize;\r\n spv += 1;\r\n if (slideSize > swiperSize) breakLoop = true;\r\n }\r\n }\r\n } else {\r\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\r\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\r\n spv += 1;\r\n }\r\n }\r\n }\r\n\r\n return spv;\r\n };\r\n\r\n _proto.update = function update() {\r\n var swiper = this;\r\n if (!swiper || swiper.destroyed) return;\r\n var snapGrid = swiper.snapGrid,\r\n params = swiper.params; // Breakpoints\r\n\r\n if (params.breakpoints) {\r\n swiper.setBreakpoint();\r\n }\r\n\r\n swiper.updateSize();\r\n swiper.updateSlides();\r\n swiper.updateProgress();\r\n swiper.updateSlidesClasses();\r\n\r\n function setTranslate() {\r\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\r\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\r\n swiper.setTranslate(newTranslate);\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n }\r\n\r\n var translated;\r\n\r\n if (swiper.params.freeMode) {\r\n setTranslate();\r\n\r\n if (swiper.params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n } else {\r\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\r\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\r\n } else {\r\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\r\n }\r\n\r\n if (!translated) {\r\n setTranslate();\r\n }\r\n }\r\n\r\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\r\n swiper.checkOverflow();\r\n }\r\n\r\n swiper.emit('update');\r\n };\r\n\r\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\r\n if (needUpdate === void 0) {\r\n needUpdate = true;\r\n }\r\n\r\n var swiper = this;\r\n var currentDirection = swiper.params.direction;\r\n\r\n if (!newDirection) {\r\n // eslint-disable-next-line\r\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\r\n }\r\n\r\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\r\n return swiper;\r\n }\r\n\r\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\r\n swiper.emitContainerClasses();\r\n swiper.params.direction = newDirection;\r\n swiper.slides.each(function (slideEl) {\r\n if (newDirection === 'vertical') {\r\n slideEl.style.width = '';\r\n } else {\r\n slideEl.style.height = '';\r\n }\r\n });\r\n swiper.emit('changeDirection');\r\n if (needUpdate) swiper.update();\r\n return swiper;\r\n };\r\n\r\n _proto.init = function init() {\r\n var swiper = this;\r\n if (swiper.initialized) return;\r\n swiper.emit('beforeInit'); // Set breakpoint\r\n\r\n if (swiper.params.breakpoints) {\r\n swiper.setBreakpoint();\r\n } // Add Classes\r\n\r\n\r\n swiper.addClasses(); // Create loop\r\n\r\n if (swiper.params.loop) {\r\n swiper.loopCreate();\r\n } // Update size\r\n\r\n\r\n swiper.updateSize(); // Update slides\r\n\r\n swiper.updateSlides();\r\n\r\n if (swiper.params.watchOverflow) {\r\n swiper.checkOverflow();\r\n } // Set Grab Cursor\r\n\r\n\r\n if (swiper.params.grabCursor) {\r\n swiper.setGrabCursor();\r\n }\r\n\r\n if (swiper.params.preloadImages) {\r\n swiper.preloadImages();\r\n } // Slide To Initial Slide\r\n\r\n\r\n if (swiper.params.loop) {\r\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\r\n } else {\r\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\r\n } // Attach events\r\n\r\n\r\n swiper.attachEvents(); // Init Flag\r\n\r\n swiper.initialized = true; // Emit\r\n\r\n swiper.emit('init');\r\n swiper.emit('afterInit');\r\n };\r\n\r\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\r\n if (deleteInstance === void 0) {\r\n deleteInstance = true;\r\n }\r\n\r\n if (cleanStyles === void 0) {\r\n cleanStyles = true;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params,\r\n $el = swiper.$el,\r\n $wrapperEl = swiper.$wrapperEl,\r\n slides = swiper.slides;\r\n\r\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\r\n return null;\r\n }\r\n\r\n swiper.emit('beforeDestroy'); // Init Flag\r\n\r\n swiper.initialized = false; // Detach events\r\n\r\n swiper.detachEvents(); // Destroy loop\r\n\r\n if (params.loop) {\r\n swiper.loopDestroy();\r\n } // Cleanup styles\r\n\r\n\r\n if (cleanStyles) {\r\n swiper.removeClasses();\r\n $el.removeAttr('style');\r\n $wrapperEl.removeAttr('style');\r\n\r\n if (slides && slides.length) {\r\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\r\n }\r\n }\r\n\r\n swiper.emit('destroy'); // Detach emitter events\r\n\r\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\r\n swiper.off(eventName);\r\n });\r\n\r\n if (deleteInstance !== false) {\r\n swiper.$el[0].swiper = null;\r\n deleteProps(swiper);\r\n }\r\n\r\n swiper.destroyed = true;\r\n return null;\r\n };\r\n\r\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\r\n extend$1(extendedDefaults, newDefaults);\r\n };\r\n\r\n Swiper.installModule = function installModule(module) {\r\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\r\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\r\n Swiper.prototype.modules[name] = module;\r\n };\r\n\r\n Swiper.use = function use(module) {\r\n if (Array.isArray(module)) {\r\n module.forEach(function (m) {\r\n return Swiper.installModule(m);\r\n });\r\n return Swiper;\r\n }\r\n\r\n Swiper.installModule(module);\r\n return Swiper;\r\n };\r\n\r\n _createClass(Swiper, null, [{\r\n key: \"extendedDefaults\",\r\n get: function get() {\r\n return extendedDefaults;\r\n }\r\n }, {\r\n key: \"defaults\",\r\n get: function get() {\r\n return defaults;\r\n }\r\n }]);\r\n\r\n return Swiper;\r\n }();\r\n\r\n Object.keys(prototypes).forEach(function (prototypeGroup) {\r\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\r\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\r\n });\r\n });\r\n Swiper.use([Resize, Observer$1]);\r\n\r\n var Virtual = {\r\n update: function update(force) {\r\n var swiper = this;\r\n var _swiper$params = swiper.params,\r\n slidesPerView = _swiper$params.slidesPerView,\r\n slidesPerGroup = _swiper$params.slidesPerGroup,\r\n centeredSlides = _swiper$params.centeredSlides;\r\n var _swiper$params$virtua = swiper.params.virtual,\r\n addSlidesBefore = _swiper$params$virtua.addSlidesBefore,\r\n addSlidesAfter = _swiper$params$virtua.addSlidesAfter;\r\n var _swiper$virtual = swiper.virtual,\r\n previousFrom = _swiper$virtual.from,\r\n previousTo = _swiper$virtual.to,\r\n slides = _swiper$virtual.slides,\r\n previousSlidesGrid = _swiper$virtual.slidesGrid,\r\n renderSlide = _swiper$virtual.renderSlide,\r\n previousOffset = _swiper$virtual.offset;\r\n swiper.updateActiveIndex();\r\n var activeIndex = swiper.activeIndex || 0;\r\n var offsetProp;\r\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\r\n var slidesAfter;\r\n var slidesBefore;\r\n\r\n if (centeredSlides) {\r\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\r\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\r\n } else {\r\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\r\n slidesBefore = slidesPerGroup + addSlidesBefore;\r\n }\r\n\r\n var from = Math.max((activeIndex || 0) - slidesBefore, 0);\r\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\r\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\r\n extend$1(swiper.virtual, {\r\n from: from,\r\n to: to,\r\n offset: offset,\r\n slidesGrid: swiper.slidesGrid\r\n });\r\n\r\n function onRendered() {\r\n swiper.updateSlides();\r\n swiper.updateProgress();\r\n swiper.updateSlidesClasses();\r\n\r\n if (swiper.lazy && swiper.params.lazy.enabled) {\r\n swiper.lazy.load();\r\n }\r\n }\r\n\r\n if (previousFrom === from && previousTo === to && !force) {\r\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\r\n swiper.slides.css(offsetProp, offset + \"px\");\r\n }\r\n\r\n swiper.updateProgress();\r\n return;\r\n }\r\n\r\n if (swiper.params.virtual.renderExternal) {\r\n swiper.params.virtual.renderExternal.call(swiper, {\r\n offset: offset,\r\n from: from,\r\n to: to,\r\n slides: function getSlides() {\r\n var slidesToRender = [];\r\n\r\n for (var i = from; i <= to; i += 1) {\r\n slidesToRender.push(slides[i]);\r\n }\r\n\r\n return slidesToRender;\r\n }()\r\n });\r\n\r\n if (swiper.params.virtual.renderExternalUpdate) {\r\n onRendered();\r\n }\r\n\r\n return;\r\n }\r\n\r\n var prependIndexes = [];\r\n var appendIndexes = [];\r\n\r\n if (force) {\r\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass).remove();\r\n } else {\r\n for (var i = previousFrom; i <= previousTo; i += 1) {\r\n if (i < from || i > to) {\r\n swiper.$wrapperEl.find(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + i + \"\\\"]\").remove();\r\n }\r\n }\r\n }\r\n\r\n for (var _i = 0; _i < slides.length; _i += 1) {\r\n if (_i >= from && _i <= to) {\r\n if (typeof previousTo === 'undefined' || force) {\r\n appendIndexes.push(_i);\r\n } else {\r\n if (_i > previousTo) appendIndexes.push(_i);\r\n if (_i < previousFrom) prependIndexes.push(_i);\r\n }\r\n }\r\n }\r\n\r\n appendIndexes.forEach(function (index) {\r\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\r\n });\r\n prependIndexes.sort(function (a, b) {\r\n return b - a;\r\n }).forEach(function (index) {\r\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\r\n });\r\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + \"px\");\r\n onRendered();\r\n },\r\n renderSlide: function renderSlide(slide, index) {\r\n var swiper = this;\r\n var params = swiper.params.virtual;\r\n\r\n if (params.cache && swiper.virtual.cache[index]) {\r\n return swiper.virtual.cache[index];\r\n }\r\n\r\n var $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(\"
    \" + slide + \"
    \");\r\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\r\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\r\n return $slideEl;\r\n },\r\n appendSlide: function appendSlide(slides) {\r\n var swiper = this;\r\n\r\n if (typeof slides === 'object' && 'length' in slides) {\r\n for (var i = 0; i < slides.length; i += 1) {\r\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\r\n }\r\n } else {\r\n swiper.virtual.slides.push(slides);\r\n }\r\n\r\n swiper.virtual.update(true);\r\n },\r\n prependSlide: function prependSlide(slides) {\r\n var swiper = this;\r\n var activeIndex = swiper.activeIndex;\r\n var newActiveIndex = activeIndex + 1;\r\n var numberOfNewSlides = 1;\r\n\r\n if (Array.isArray(slides)) {\r\n for (var i = 0; i < slides.length; i += 1) {\r\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\r\n }\r\n\r\n newActiveIndex = activeIndex + slides.length;\r\n numberOfNewSlides = slides.length;\r\n } else {\r\n swiper.virtual.slides.unshift(slides);\r\n }\r\n\r\n if (swiper.params.virtual.cache) {\r\n var cache = swiper.virtual.cache;\r\n var newCache = {};\r\n Object.keys(cache).forEach(function (cachedIndex) {\r\n var $cachedEl = cache[cachedIndex];\r\n var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\r\n\r\n if (cachedElIndex) {\r\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\r\n }\r\n\r\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\r\n });\r\n swiper.virtual.cache = newCache;\r\n }\r\n\r\n swiper.virtual.update(true);\r\n swiper.slideTo(newActiveIndex, 0);\r\n },\r\n removeSlide: function removeSlide(slidesIndexes) {\r\n var swiper = this;\r\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\r\n var activeIndex = swiper.activeIndex;\r\n\r\n if (Array.isArray(slidesIndexes)) {\r\n for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {\r\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\r\n\r\n if (swiper.params.virtual.cache) {\r\n delete swiper.virtual.cache[slidesIndexes[i]];\r\n }\r\n\r\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\r\n activeIndex = Math.max(activeIndex, 0);\r\n }\r\n } else {\r\n swiper.virtual.slides.splice(slidesIndexes, 1);\r\n\r\n if (swiper.params.virtual.cache) {\r\n delete swiper.virtual.cache[slidesIndexes];\r\n }\r\n\r\n if (slidesIndexes < activeIndex) activeIndex -= 1;\r\n activeIndex = Math.max(activeIndex, 0);\r\n }\r\n\r\n swiper.virtual.update(true);\r\n swiper.slideTo(activeIndex, 0);\r\n },\r\n removeAllSlides: function removeAllSlides() {\r\n var swiper = this;\r\n swiper.virtual.slides = [];\r\n\r\n if (swiper.params.virtual.cache) {\r\n swiper.virtual.cache = {};\r\n }\r\n\r\n swiper.virtual.update(true);\r\n swiper.slideTo(0, 0);\r\n }\r\n };\r\n var Virtual$1 = {\r\n name: 'virtual',\r\n params: {\r\n virtual: {\r\n enabled: false,\r\n slides: [],\r\n cache: true,\r\n renderSlide: null,\r\n renderExternal: null,\r\n renderExternalUpdate: true,\r\n addSlidesBefore: 0,\r\n addSlidesAfter: 0\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n virtual: _extends(_extends({}, Virtual), {}, {\r\n slides: swiper.params.virtual.slides,\r\n cache: {}\r\n })\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (!swiper.params.virtual.enabled) return;\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"virtual\");\r\n var overwriteParams = {\r\n watchSlidesProgress: true\r\n };\r\n extend$1(swiper.params, overwriteParams);\r\n extend$1(swiper.originalParams, overwriteParams);\r\n\r\n if (!swiper.params.initialSlide) {\r\n swiper.virtual.update();\r\n }\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (!swiper.params.virtual.enabled) return;\r\n swiper.virtual.update();\r\n }\r\n }\r\n };\r\n\r\n var Keyboard = {\r\n handle: function handle(event) {\r\n var swiper = this;\r\n var window = getWindow();\r\n var document = getDocument();\r\n var rtl = swiper.rtlTranslate;\r\n var e = event;\r\n if (e.originalEvent) e = e.originalEvent; // jquery fix\r\n\r\n var kc = e.keyCode || e.charCode;\r\n var pageUpDown = swiper.params.keyboard.pageUpDown;\r\n var isPageUp = pageUpDown && kc === 33;\r\n var isPageDown = pageUpDown && kc === 34;\r\n var isArrowLeft = kc === 37;\r\n var isArrowRight = kc === 39;\r\n var isArrowUp = kc === 38;\r\n var isArrowDown = kc === 40; // Directions locks\r\n\r\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\r\n return false;\r\n }\r\n\r\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\r\n return false;\r\n }\r\n\r\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\r\n return undefined;\r\n }\r\n\r\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\r\n return undefined;\r\n }\r\n\r\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\r\n var inView = false; // Check that swiper should be inside of visible area of window\r\n\r\n if (swiper.$el.parents(\".\" + swiper.params.slideClass).length > 0 && swiper.$el.parents(\".\" + swiper.params.slideActiveClass).length === 0) {\r\n return undefined;\r\n }\r\n\r\n var windowWidth = window.innerWidth;\r\n var windowHeight = window.innerHeight;\r\n var swiperOffset = swiper.$el.offset();\r\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\r\n var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\r\n\r\n for (var i = 0; i < swiperCoord.length; i += 1) {\r\n var point = swiperCoord[i];\r\n\r\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\r\n inView = true;\r\n }\r\n }\r\n\r\n if (!inView) return undefined;\r\n }\r\n\r\n if (swiper.isHorizontal()) {\r\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\r\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\r\n }\r\n\r\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\r\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\r\n } else {\r\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\r\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\r\n }\r\n\r\n if (isPageDown || isArrowDown) swiper.slideNext();\r\n if (isPageUp || isArrowUp) swiper.slidePrev();\r\n }\r\n\r\n swiper.emit('keyPress', kc);\r\n return undefined;\r\n },\r\n enable: function enable() {\r\n var swiper = this;\r\n var document = getDocument();\r\n if (swiper.keyboard.enabled) return;\r\n $(document).on('keydown', swiper.keyboard.handle);\r\n swiper.keyboard.enabled = true;\r\n },\r\n disable: function disable() {\r\n var swiper = this;\r\n var document = getDocument();\r\n if (!swiper.keyboard.enabled) return;\r\n $(document).off('keydown', swiper.keyboard.handle);\r\n swiper.keyboard.enabled = false;\r\n }\r\n };\r\n var Keyboard$1 = {\r\n name: 'keyboard',\r\n params: {\r\n keyboard: {\r\n enabled: false,\r\n onlyInViewport: true,\r\n pageUpDown: true\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n keyboard: _extends({\r\n enabled: false\r\n }, Keyboard)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (swiper.params.keyboard.enabled) {\r\n swiper.keyboard.enable();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n if (swiper.keyboard.enabled) {\r\n swiper.keyboard.disable();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function isEventSupported() {\r\n var document = getDocument();\r\n var eventName = 'onwheel';\r\n var isSupported = (eventName in document);\r\n\r\n if (!isSupported) {\r\n var element = document.createElement('div');\r\n element.setAttribute(eventName, 'return;');\r\n isSupported = typeof element[eventName] === 'function';\r\n }\r\n\r\n if (!isSupported && document.implementation && document.implementation.hasFeature && // always returns true in newer browsers as per the standard.\r\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\r\n document.implementation.hasFeature('', '') !== true) {\r\n // This is the only way to test support for the `wheel` event in IE9+.\r\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\r\n }\r\n\r\n return isSupported;\r\n }\r\n\r\n var Mousewheel = {\r\n lastScrollTime: now(),\r\n lastEventBeforeSnap: undefined,\r\n recentWheelEvents: [],\r\n event: function event() {\r\n var window = getWindow();\r\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\r\n return isEventSupported() ? 'wheel' : 'mousewheel';\r\n },\r\n normalize: function normalize(e) {\r\n // Reasonable defaults\r\n var PIXEL_STEP = 10;\r\n var LINE_HEIGHT = 40;\r\n var PAGE_HEIGHT = 800;\r\n var sX = 0;\r\n var sY = 0; // spinX, spinY\r\n\r\n var pX = 0;\r\n var pY = 0; // pixelX, pixelY\r\n // Legacy\r\n\r\n if ('detail' in e) {\r\n sY = e.detail;\r\n }\r\n\r\n if ('wheelDelta' in e) {\r\n sY = -e.wheelDelta / 120;\r\n }\r\n\r\n if ('wheelDeltaY' in e) {\r\n sY = -e.wheelDeltaY / 120;\r\n }\r\n\r\n if ('wheelDeltaX' in e) {\r\n sX = -e.wheelDeltaX / 120;\r\n } // side scrolling on FF with DOMMouseScroll\r\n\r\n\r\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\r\n sX = sY;\r\n sY = 0;\r\n }\r\n\r\n pX = sX * PIXEL_STEP;\r\n pY = sY * PIXEL_STEP;\r\n\r\n if ('deltaY' in e) {\r\n pY = e.deltaY;\r\n }\r\n\r\n if ('deltaX' in e) {\r\n pX = e.deltaX;\r\n }\r\n\r\n if (e.shiftKey && !pX) {\r\n // if user scrolls with shift he wants horizontal scroll\r\n pX = pY;\r\n pY = 0;\r\n }\r\n\r\n if ((pX || pY) && e.deltaMode) {\r\n if (e.deltaMode === 1) {\r\n // delta in LINE units\r\n pX *= LINE_HEIGHT;\r\n pY *= LINE_HEIGHT;\r\n } else {\r\n // delta in PAGE units\r\n pX *= PAGE_HEIGHT;\r\n pY *= PAGE_HEIGHT;\r\n }\r\n } // Fall-back if spin cannot be determined\r\n\r\n\r\n if (pX && !sX) {\r\n sX = pX < 1 ? -1 : 1;\r\n }\r\n\r\n if (pY && !sY) {\r\n sY = pY < 1 ? -1 : 1;\r\n }\r\n\r\n return {\r\n spinX: sX,\r\n spinY: sY,\r\n pixelX: pX,\r\n pixelY: pY\r\n };\r\n },\r\n handleMouseEnter: function handleMouseEnter() {\r\n var swiper = this;\r\n swiper.mouseEntered = true;\r\n },\r\n handleMouseLeave: function handleMouseLeave() {\r\n var swiper = this;\r\n swiper.mouseEntered = false;\r\n },\r\n handle: function handle(event) {\r\n var e = event;\r\n var swiper = this;\r\n var params = swiper.params.mousewheel;\r\n\r\n if (swiper.params.cssMode) {\r\n e.preventDefault();\r\n }\r\n\r\n var target = swiper.$el;\r\n\r\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\r\n target = $(swiper.params.mousewheel.eventsTarget);\r\n }\r\n\r\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\r\n if (e.originalEvent) e = e.originalEvent; // jquery fix\r\n\r\n var delta = 0;\r\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\r\n var data = Mousewheel.normalize(e);\r\n\r\n if (params.forceToAxis) {\r\n if (swiper.isHorizontal()) {\r\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\r\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\r\n } else {\r\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\r\n }\r\n\r\n if (delta === 0) return true;\r\n if (params.invert) delta = -delta;\r\n\r\n if (!swiper.params.freeMode) {\r\n // Register the new event in a variable which stores the relevant data\r\n var newEvent = {\r\n time: now(),\r\n delta: Math.abs(delta),\r\n direction: Math.sign(delta),\r\n raw: event\r\n }; // Keep the most recent events\r\n\r\n var recentWheelEvents = swiper.mousewheel.recentWheelEvents;\r\n\r\n if (recentWheelEvents.length >= 2) {\r\n recentWheelEvents.shift(); // only store the last N events\r\n }\r\n\r\n var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\r\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\r\n // If direction has changed or\r\n // if the scroll is quicker than the previous one:\r\n // Animate the slider.\r\n // Else (this is the first time the wheel is moved):\r\n // Animate the slider.\r\n\r\n if (prevEvent) {\r\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\r\n swiper.mousewheel.animateSlider(newEvent);\r\n }\r\n } else {\r\n swiper.mousewheel.animateSlider(newEvent);\r\n } // If it's time to release the scroll:\r\n // Return now so you don't hit the preventDefault.\r\n\r\n\r\n if (swiper.mousewheel.releaseScroll(newEvent)) {\r\n return true;\r\n }\r\n } else {\r\n // Freemode or scrollContainer:\r\n // If we recently snapped after a momentum scroll, then ignore wheel events\r\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\r\n // or if it's a new scroll (larger delta or inverse sign as last event before\r\n // an end-of-momentum snap).\r\n var _newEvent = {\r\n time: now(),\r\n delta: Math.abs(delta),\r\n direction: Math.sign(delta)\r\n };\r\n var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;\r\n var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;\r\n\r\n if (!ignoreWheelEvents) {\r\n swiper.mousewheel.lastEventBeforeSnap = undefined;\r\n\r\n if (swiper.params.loop) {\r\n swiper.loopFix();\r\n }\r\n\r\n var position = swiper.getTranslate() + delta * params.sensitivity;\r\n var wasBeginning = swiper.isBeginning;\r\n var wasEnd = swiper.isEnd;\r\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\r\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\r\n swiper.setTransition(0);\r\n swiper.setTranslate(position);\r\n swiper.updateProgress();\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n\r\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\r\n swiper.updateSlidesClasses();\r\n }\r\n\r\n if (swiper.params.freeModeSticky) {\r\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\r\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\r\n // 1. do all N events have decreasing or same (absolute value) delta?\r\n // 2. did all N events arrive in the last M (M=500?) msecs?\r\n // 3. does the earliest event have an (absolute value) delta that's\r\n // at least P (P=1?) larger than the most recent event's delta?\r\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\r\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\r\n // Snap immediately and ignore remaining wheel events in this scroll.\r\n // See comment above for \"remaining wheel events in this scroll\" determination.\r\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\r\n clearTimeout(swiper.mousewheel.timeout);\r\n swiper.mousewheel.timeout = undefined;\r\n var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;\r\n\r\n if (_recentWheelEvents.length >= 15) {\r\n _recentWheelEvents.shift(); // only store the last N events\r\n\r\n }\r\n\r\n var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;\r\n\r\n var firstEvent = _recentWheelEvents[0];\r\n\r\n _recentWheelEvents.push(_newEvent);\r\n\r\n if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {\r\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\r\n _recentWheelEvents.splice(0);\r\n } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {\r\n // We're at the end of the deceleration of a momentum scroll, so there's no need\r\n // to wait for more events. Snap ASAP on the next tick.\r\n // Also, because there's some remaining momentum we'll bias the snap in the\r\n // direction of the ongoing scroll because it's better UX for the scroll to snap\r\n // in the same direction as the scroll instead of reversing to snap. Therefore,\r\n // if it's already scrolled more than 20% in the current direction, keep going.\r\n var snapToThreshold = delta > 0 ? 0.8 : 0.2;\r\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\r\n\r\n _recentWheelEvents.splice(0);\r\n\r\n swiper.mousewheel.timeout = nextTick(function () {\r\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\r\n }, 0); // no delay; move on next tick\r\n }\r\n\r\n if (!swiper.mousewheel.timeout) {\r\n // if we get here, then we haven't detected the end of a momentum scroll, so\r\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\r\n // for 500ms.\r\n swiper.mousewheel.timeout = nextTick(function () {\r\n var snapToThreshold = 0.5;\r\n swiper.mousewheel.lastEventBeforeSnap = _newEvent;\r\n\r\n _recentWheelEvents.splice(0);\r\n\r\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\r\n }, 500);\r\n }\r\n } // Emit event\r\n\r\n\r\n if (!ignoreWheelEvents) swiper.emit('scroll', e); // Stop autoplay\r\n\r\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\r\n\r\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\r\n }\r\n }\r\n\r\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\r\n return false;\r\n },\r\n animateSlider: function animateSlider(newEvent) {\r\n var swiper = this;\r\n var window = getWindow();\r\n\r\n if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {\r\n // Prevent if delta of wheel scroll delta is below configured threshold\r\n return false;\r\n }\r\n\r\n if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {\r\n // Prevent if time between scrolls is below configured threshold\r\n return false;\r\n } // If the movement is NOT big enough and\r\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\r\n // Don't go any further (avoid insignificant scroll movement).\r\n\r\n\r\n if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {\r\n // Return false as a default\r\n return true;\r\n } // If user is scrolling towards the end:\r\n // If the slider hasn't hit the latest slide or\r\n // if the slider is a loop and\r\n // if the slider isn't moving right now:\r\n // Go to next slide and\r\n // emit a scroll event.\r\n // Else (the user is scrolling towards the beginning) and\r\n // if the slider hasn't hit the first slide or\r\n // if the slider is a loop and\r\n // if the slider isn't moving right now:\r\n // Go to prev slide and\r\n // emit a scroll event.\r\n\r\n\r\n if (newEvent.direction < 0) {\r\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\r\n swiper.slideNext();\r\n swiper.emit('scroll', newEvent.raw);\r\n }\r\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\r\n swiper.slidePrev();\r\n swiper.emit('scroll', newEvent.raw);\r\n } // If you got here is because an animation has been triggered so store the current time\r\n\r\n\r\n swiper.mousewheel.lastScrollTime = new window.Date().getTime(); // Return false as a default\r\n\r\n return false;\r\n },\r\n releaseScroll: function releaseScroll(newEvent) {\r\n var swiper = this;\r\n var params = swiper.params.mousewheel;\r\n\r\n if (newEvent.direction < 0) {\r\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\r\n // Return true to animate scroll on edges\r\n return true;\r\n }\r\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\r\n // Return true to animate scroll on edges\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n enable: function enable() {\r\n var swiper = this;\r\n var event = Mousewheel.event();\r\n\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\r\n return true;\r\n }\r\n\r\n if (!event) return false;\r\n if (swiper.mousewheel.enabled) return false;\r\n var target = swiper.$el;\r\n\r\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\r\n target = $(swiper.params.mousewheel.eventsTarget);\r\n }\r\n\r\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\r\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\r\n target.on(event, swiper.mousewheel.handle);\r\n swiper.mousewheel.enabled = true;\r\n return true;\r\n },\r\n disable: function disable() {\r\n var swiper = this;\r\n var event = Mousewheel.event();\r\n\r\n if (swiper.params.cssMode) {\r\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\r\n return true;\r\n }\r\n\r\n if (!event) return false;\r\n if (!swiper.mousewheel.enabled) return false;\r\n var target = swiper.$el;\r\n\r\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\r\n target = $(swiper.params.mousewheel.eventsTarget);\r\n }\r\n\r\n target.off(event, swiper.mousewheel.handle);\r\n swiper.mousewheel.enabled = false;\r\n return true;\r\n }\r\n };\r\n var Mousewheel$1 = {\r\n name: 'mousewheel',\r\n params: {\r\n mousewheel: {\r\n enabled: false,\r\n releaseOnEdges: false,\r\n invert: false,\r\n forceToAxis: false,\r\n sensitivity: 1,\r\n eventsTarget: 'container',\r\n thresholdDelta: null,\r\n thresholdTime: null\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n mousewheel: {\r\n enabled: false,\r\n lastScrollTime: now(),\r\n lastEventBeforeSnap: undefined,\r\n recentWheelEvents: [],\r\n enable: Mousewheel.enable,\r\n disable: Mousewheel.disable,\r\n handle: Mousewheel.handle,\r\n handleMouseEnter: Mousewheel.handleMouseEnter,\r\n handleMouseLeave: Mousewheel.handleMouseLeave,\r\n animateSlider: Mousewheel.animateSlider,\r\n releaseScroll: Mousewheel.releaseScroll\r\n }\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\r\n swiper.mousewheel.disable();\r\n }\r\n\r\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\r\n },\r\n destroy: function destroy(swiper) {\r\n if (swiper.params.cssMode) {\r\n swiper.mousewheel.enable();\r\n }\r\n\r\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\r\n }\r\n }\r\n };\r\n\r\n var Navigation = {\r\n update: function update() {\r\n // Update Navigation Buttons\r\n var swiper = this;\r\n var params = swiper.params.navigation;\r\n if (swiper.params.loop) return;\r\n var _swiper$navigation = swiper.navigation,\r\n $nextEl = _swiper$navigation.$nextEl,\r\n $prevEl = _swiper$navigation.$prevEl;\r\n\r\n if ($prevEl && $prevEl.length > 0) {\r\n if (swiper.isBeginning) {\r\n $prevEl.addClass(params.disabledClass);\r\n } else {\r\n $prevEl.removeClass(params.disabledClass);\r\n }\r\n\r\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\r\n }\r\n\r\n if ($nextEl && $nextEl.length > 0) {\r\n if (swiper.isEnd) {\r\n $nextEl.addClass(params.disabledClass);\r\n } else {\r\n $nextEl.removeClass(params.disabledClass);\r\n }\r\n\r\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\r\n }\r\n },\r\n onPrevClick: function onPrevClick(e) {\r\n var swiper = this;\r\n e.preventDefault();\r\n if (swiper.isBeginning && !swiper.params.loop) return;\r\n swiper.slidePrev();\r\n },\r\n onNextClick: function onNextClick(e) {\r\n var swiper = this;\r\n e.preventDefault();\r\n if (swiper.isEnd && !swiper.params.loop) return;\r\n swiper.slideNext();\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n var params = swiper.params.navigation;\r\n if (!(params.nextEl || params.prevEl)) return;\r\n var $nextEl;\r\n var $prevEl;\r\n\r\n if (params.nextEl) {\r\n $nextEl = $(params.nextEl);\r\n\r\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\r\n $nextEl = swiper.$el.find(params.nextEl);\r\n }\r\n }\r\n\r\n if (params.prevEl) {\r\n $prevEl = $(params.prevEl);\r\n\r\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\r\n $prevEl = swiper.$el.find(params.prevEl);\r\n }\r\n }\r\n\r\n if ($nextEl && $nextEl.length > 0) {\r\n $nextEl.on('click', swiper.navigation.onNextClick);\r\n }\r\n\r\n if ($prevEl && $prevEl.length > 0) {\r\n $prevEl.on('click', swiper.navigation.onPrevClick);\r\n }\r\n\r\n extend$1(swiper.navigation, {\r\n $nextEl: $nextEl,\r\n nextEl: $nextEl && $nextEl[0],\r\n $prevEl: $prevEl,\r\n prevEl: $prevEl && $prevEl[0]\r\n });\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n var _swiper$navigation2 = swiper.navigation,\r\n $nextEl = _swiper$navigation2.$nextEl,\r\n $prevEl = _swiper$navigation2.$prevEl;\r\n\r\n if ($nextEl && $nextEl.length) {\r\n $nextEl.off('click', swiper.navigation.onNextClick);\r\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\r\n }\r\n\r\n if ($prevEl && $prevEl.length) {\r\n $prevEl.off('click', swiper.navigation.onPrevClick);\r\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\r\n }\r\n }\r\n };\r\n var Navigation$1 = {\r\n name: 'navigation',\r\n params: {\r\n navigation: {\r\n nextEl: null,\r\n prevEl: null,\r\n hideOnClick: false,\r\n disabledClass: 'swiper-button-disabled',\r\n hiddenClass: 'swiper-button-hidden',\r\n lockClass: 'swiper-button-lock'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n navigation: _extends({}, Navigation)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n swiper.navigation.init();\r\n swiper.navigation.update();\r\n },\r\n toEdge: function toEdge(swiper) {\r\n swiper.navigation.update();\r\n },\r\n fromEdge: function fromEdge(swiper) {\r\n swiper.navigation.update();\r\n },\r\n destroy: function destroy(swiper) {\r\n swiper.navigation.destroy();\r\n },\r\n click: function click(swiper, e) {\r\n var _swiper$navigation3 = swiper.navigation,\r\n $nextEl = _swiper$navigation3.$nextEl,\r\n $prevEl = _swiper$navigation3.$prevEl;\r\n\r\n if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) {\r\n var isHidden;\r\n\r\n if ($nextEl) {\r\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\r\n } else if ($prevEl) {\r\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\r\n }\r\n\r\n if (isHidden === true) {\r\n swiper.emit('navigationShow');\r\n } else {\r\n swiper.emit('navigationHide');\r\n }\r\n\r\n if ($nextEl) {\r\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\r\n }\r\n\r\n if ($prevEl) {\r\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n var Pagination = {\r\n update: function update() {\r\n // Render || Update Pagination bullets/items\r\n var swiper = this;\r\n var rtl = swiper.rtl;\r\n var params = swiper.params.pagination;\r\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\r\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\r\n var $el = swiper.pagination.$el; // Current/Total\r\n\r\n var current;\r\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\r\n\r\n if (swiper.params.loop) {\r\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\r\n\r\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\r\n current -= slidesLength - swiper.loopedSlides * 2;\r\n }\r\n\r\n if (current > total - 1) current -= total;\r\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\r\n } else if (typeof swiper.snapIndex !== 'undefined') {\r\n current = swiper.snapIndex;\r\n } else {\r\n current = swiper.activeIndex || 0;\r\n } // Types\r\n\r\n\r\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\r\n var bullets = swiper.pagination.bullets;\r\n var firstIndex;\r\n var lastIndex;\r\n var midIndex;\r\n\r\n if (params.dynamicBullets) {\r\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\r\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\r\n\r\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\r\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\r\n\r\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\r\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\r\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\r\n swiper.pagination.dynamicBulletIndex = 0;\r\n }\r\n }\r\n\r\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\r\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\r\n midIndex = (lastIndex + firstIndex) / 2;\r\n }\r\n\r\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\r\n\r\n if ($el.length > 1) {\r\n bullets.each(function (bullet) {\r\n var $bullet = $(bullet);\r\n var bulletIndex = $bullet.index();\r\n\r\n if (bulletIndex === current) {\r\n $bullet.addClass(params.bulletActiveClass);\r\n }\r\n\r\n if (params.dynamicBullets) {\r\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\r\n $bullet.addClass(params.bulletActiveClass + \"-main\");\r\n }\r\n\r\n if (bulletIndex === firstIndex) {\r\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\r\n }\r\n\r\n if (bulletIndex === lastIndex) {\r\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\r\n }\r\n }\r\n });\r\n } else {\r\n var $bullet = bullets.eq(current);\r\n var bulletIndex = $bullet.index();\r\n $bullet.addClass(params.bulletActiveClass);\r\n\r\n if (params.dynamicBullets) {\r\n var $firstDisplayedBullet = bullets.eq(firstIndex);\r\n var $lastDisplayedBullet = bullets.eq(lastIndex);\r\n\r\n for (var i = firstIndex; i <= lastIndex; i += 1) {\r\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\r\n }\r\n\r\n if (swiper.params.loop) {\r\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\r\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\r\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\r\n }\r\n\r\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\r\n } else {\r\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\r\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\r\n }\r\n } else {\r\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\r\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\r\n }\r\n }\r\n }\r\n\r\n if (params.dynamicBullets) {\r\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\r\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\r\n var offsetProp = rtl ? 'right' : 'left';\r\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\r\n }\r\n }\r\n\r\n if (params.type === 'fraction') {\r\n $el.find(\".\" + params.currentClass).text(params.formatFractionCurrent(current + 1));\r\n $el.find(\".\" + params.totalClass).text(params.formatFractionTotal(total));\r\n }\r\n\r\n if (params.type === 'progressbar') {\r\n var progressbarDirection;\r\n\r\n if (params.progressbarOpposite) {\r\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\r\n } else {\r\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\r\n }\r\n\r\n var scale = (current + 1) / total;\r\n var scaleX = 1;\r\n var scaleY = 1;\r\n\r\n if (progressbarDirection === 'horizontal') {\r\n scaleX = scale;\r\n } else {\r\n scaleY = scale;\r\n }\r\n\r\n $el.find(\".\" + params.progressbarFillClass).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\r\n }\r\n\r\n if (params.type === 'custom' && params.renderCustom) {\r\n $el.html(params.renderCustom(swiper, current + 1, total));\r\n swiper.emit('paginationRender', $el[0]);\r\n } else {\r\n swiper.emit('paginationUpdate', $el[0]);\r\n }\r\n\r\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\r\n },\r\n render: function render() {\r\n // Render Container\r\n var swiper = this;\r\n var params = swiper.params.pagination;\r\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\r\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\r\n var $el = swiper.pagination.$el;\r\n var paginationHTML = '';\r\n\r\n if (params.type === 'bullets') {\r\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\r\n\r\n for (var i = 0; i < numberOfBullets; i += 1) {\r\n if (params.renderBullet) {\r\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\r\n } else {\r\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\r\n }\r\n }\r\n\r\n $el.html(paginationHTML);\r\n swiper.pagination.bullets = $el.find(\".\" + params.bulletClass);\r\n }\r\n\r\n if (params.type === 'fraction') {\r\n if (params.renderFraction) {\r\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\r\n } else {\r\n paginationHTML = \"\" + ' / ' + (\"\");\r\n }\r\n\r\n $el.html(paginationHTML);\r\n }\r\n\r\n if (params.type === 'progressbar') {\r\n if (params.renderProgressbar) {\r\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\r\n } else {\r\n paginationHTML = \"\";\r\n }\r\n\r\n $el.html(paginationHTML);\r\n }\r\n\r\n if (params.type !== 'custom') {\r\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\r\n }\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n var params = swiper.params.pagination;\r\n if (!params.el) return;\r\n var $el = $(params.el);\r\n if ($el.length === 0) return;\r\n\r\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\r\n $el = swiper.$el.find(params.el);\r\n }\r\n\r\n if (params.type === 'bullets' && params.clickable) {\r\n $el.addClass(params.clickableClass);\r\n }\r\n\r\n $el.addClass(params.modifierClass + params.type);\r\n\r\n if (params.type === 'bullets' && params.dynamicBullets) {\r\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\r\n swiper.pagination.dynamicBulletIndex = 0;\r\n\r\n if (params.dynamicMainBullets < 1) {\r\n params.dynamicMainBullets = 1;\r\n }\r\n }\r\n\r\n if (params.type === 'progressbar' && params.progressbarOpposite) {\r\n $el.addClass(params.progressbarOppositeClass);\r\n }\r\n\r\n if (params.clickable) {\r\n $el.on('click', \".\" + params.bulletClass, function onClick(e) {\r\n e.preventDefault();\r\n var index = $(this).index() * swiper.params.slidesPerGroup;\r\n if (swiper.params.loop) index += swiper.loopedSlides;\r\n swiper.slideTo(index);\r\n });\r\n }\r\n\r\n extend$1(swiper.pagination, {\r\n $el: $el,\r\n el: $el[0]\r\n });\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n var params = swiper.params.pagination;\r\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\r\n var $el = swiper.pagination.$el;\r\n $el.removeClass(params.hiddenClass);\r\n $el.removeClass(params.modifierClass + params.type);\r\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\r\n\r\n if (params.clickable) {\r\n $el.off('click', \".\" + params.bulletClass);\r\n }\r\n }\r\n };\r\n var Pagination$1 = {\r\n name: 'pagination',\r\n params: {\r\n pagination: {\r\n el: null,\r\n bulletElement: 'span',\r\n clickable: false,\r\n hideOnClick: false,\r\n renderBullet: null,\r\n renderProgressbar: null,\r\n renderFraction: null,\r\n renderCustom: null,\r\n progressbarOpposite: false,\r\n type: 'bullets',\r\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\r\n dynamicBullets: false,\r\n dynamicMainBullets: 1,\r\n formatFractionCurrent: function formatFractionCurrent(number) {\r\n return number;\r\n },\r\n formatFractionTotal: function formatFractionTotal(number) {\r\n return number;\r\n },\r\n bulletClass: 'swiper-pagination-bullet',\r\n bulletActiveClass: 'swiper-pagination-bullet-active',\r\n modifierClass: 'swiper-pagination-',\r\n // NEW\r\n currentClass: 'swiper-pagination-current',\r\n totalClass: 'swiper-pagination-total',\r\n hiddenClass: 'swiper-pagination-hidden',\r\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\r\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\r\n clickableClass: 'swiper-pagination-clickable',\r\n // NEW\r\n lockClass: 'swiper-pagination-lock'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n pagination: _extends({\r\n dynamicBulletIndex: 0\r\n }, Pagination)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n swiper.pagination.init();\r\n swiper.pagination.render();\r\n swiper.pagination.update();\r\n },\r\n activeIndexChange: function activeIndexChange(swiper) {\r\n if (swiper.params.loop) {\r\n swiper.pagination.update();\r\n } else if (typeof swiper.snapIndex === 'undefined') {\r\n swiper.pagination.update();\r\n }\r\n },\r\n snapIndexChange: function snapIndexChange(swiper) {\r\n if (!swiper.params.loop) {\r\n swiper.pagination.update();\r\n }\r\n },\r\n slidesLengthChange: function slidesLengthChange(swiper) {\r\n if (swiper.params.loop) {\r\n swiper.pagination.render();\r\n swiper.pagination.update();\r\n }\r\n },\r\n snapGridLengthChange: function snapGridLengthChange(swiper) {\r\n if (!swiper.params.loop) {\r\n swiper.pagination.render();\r\n swiper.pagination.update();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n swiper.pagination.destroy();\r\n },\r\n click: function click(swiper, e) {\r\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {\r\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\r\n\r\n if (isHidden === true) {\r\n swiper.emit('paginationShow');\r\n } else {\r\n swiper.emit('paginationHide');\r\n }\r\n\r\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var Scrollbar = {\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\r\n var scrollbar = swiper.scrollbar,\r\n rtl = swiper.rtlTranslate,\r\n progress = swiper.progress;\r\n var dragSize = scrollbar.dragSize,\r\n trackSize = scrollbar.trackSize,\r\n $dragEl = scrollbar.$dragEl,\r\n $el = scrollbar.$el;\r\n var params = swiper.params.scrollbar;\r\n var newSize = dragSize;\r\n var newPos = (trackSize - dragSize) * progress;\r\n\r\n if (rtl) {\r\n newPos = -newPos;\r\n\r\n if (newPos > 0) {\r\n newSize = dragSize - newPos;\r\n newPos = 0;\r\n } else if (-newPos + dragSize > trackSize) {\r\n newSize = trackSize + newPos;\r\n }\r\n } else if (newPos < 0) {\r\n newSize = dragSize + newPos;\r\n newPos = 0;\r\n } else if (newPos + dragSize > trackSize) {\r\n newSize = trackSize - newPos;\r\n }\r\n\r\n if (swiper.isHorizontal()) {\r\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\r\n $dragEl[0].style.width = newSize + \"px\";\r\n } else {\r\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\r\n $dragEl[0].style.height = newSize + \"px\";\r\n }\r\n\r\n if (params.hide) {\r\n clearTimeout(swiper.scrollbar.timeout);\r\n $el[0].style.opacity = 1;\r\n swiper.scrollbar.timeout = setTimeout(function () {\r\n $el[0].style.opacity = 0;\r\n $el.transition(400);\r\n }, 1000);\r\n }\r\n },\r\n setTransition: function setTransition(duration) {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\r\n swiper.scrollbar.$dragEl.transition(duration);\r\n },\r\n updateSize: function updateSize() {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\r\n var scrollbar = swiper.scrollbar;\r\n var $dragEl = scrollbar.$dragEl,\r\n $el = scrollbar.$el;\r\n $dragEl[0].style.width = '';\r\n $dragEl[0].style.height = '';\r\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\r\n var divider = swiper.size / swiper.virtualSize;\r\n var moveDivider = divider * (trackSize / swiper.size);\r\n var dragSize;\r\n\r\n if (swiper.params.scrollbar.dragSize === 'auto') {\r\n dragSize = trackSize * divider;\r\n } else {\r\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\r\n }\r\n\r\n if (swiper.isHorizontal()) {\r\n $dragEl[0].style.width = dragSize + \"px\";\r\n } else {\r\n $dragEl[0].style.height = dragSize + \"px\";\r\n }\r\n\r\n if (divider >= 1) {\r\n $el[0].style.display = 'none';\r\n } else {\r\n $el[0].style.display = '';\r\n }\r\n\r\n if (swiper.params.scrollbar.hide) {\r\n $el[0].style.opacity = 0;\r\n }\r\n\r\n extend$1(scrollbar, {\r\n trackSize: trackSize,\r\n divider: divider,\r\n moveDivider: moveDivider,\r\n dragSize: dragSize\r\n });\r\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\r\n },\r\n getPointerPosition: function getPointerPosition(e) {\r\n var swiper = this;\r\n\r\n if (swiper.isHorizontal()) {\r\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\r\n }\r\n\r\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\r\n },\r\n setDragPosition: function setDragPosition(e) {\r\n var swiper = this;\r\n var scrollbar = swiper.scrollbar,\r\n rtl = swiper.rtlTranslate;\r\n var $el = scrollbar.$el,\r\n dragSize = scrollbar.dragSize,\r\n trackSize = scrollbar.trackSize,\r\n dragStartPos = scrollbar.dragStartPos;\r\n var positionRatio;\r\n positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\r\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\r\n\r\n if (rtl) {\r\n positionRatio = 1 - positionRatio;\r\n }\r\n\r\n var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\r\n swiper.updateProgress(position);\r\n swiper.setTranslate(position);\r\n swiper.updateActiveIndex();\r\n swiper.updateSlidesClasses();\r\n },\r\n onDragStart: function onDragStart(e) {\r\n var swiper = this;\r\n var params = swiper.params.scrollbar;\r\n var scrollbar = swiper.scrollbar,\r\n $wrapperEl = swiper.$wrapperEl;\r\n var $el = scrollbar.$el,\r\n $dragEl = scrollbar.$dragEl;\r\n swiper.scrollbar.isTouched = true;\r\n swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $wrapperEl.transition(100);\r\n $dragEl.transition(100);\r\n scrollbar.setDragPosition(e);\r\n clearTimeout(swiper.scrollbar.dragTimeout);\r\n $el.transition(0);\r\n\r\n if (params.hide) {\r\n $el.css('opacity', 1);\r\n }\r\n\r\n if (swiper.params.cssMode) {\r\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\r\n }\r\n\r\n swiper.emit('scrollbarDragStart', e);\r\n },\r\n onDragMove: function onDragMove(e) {\r\n var swiper = this;\r\n var scrollbar = swiper.scrollbar,\r\n $wrapperEl = swiper.$wrapperEl;\r\n var $el = scrollbar.$el,\r\n $dragEl = scrollbar.$dragEl;\r\n if (!swiper.scrollbar.isTouched) return;\r\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\r\n scrollbar.setDragPosition(e);\r\n $wrapperEl.transition(0);\r\n $el.transition(0);\r\n $dragEl.transition(0);\r\n swiper.emit('scrollbarDragMove', e);\r\n },\r\n onDragEnd: function onDragEnd(e) {\r\n var swiper = this;\r\n var params = swiper.params.scrollbar;\r\n var scrollbar = swiper.scrollbar,\r\n $wrapperEl = swiper.$wrapperEl;\r\n var $el = scrollbar.$el;\r\n if (!swiper.scrollbar.isTouched) return;\r\n swiper.scrollbar.isTouched = false;\r\n\r\n if (swiper.params.cssMode) {\r\n swiper.$wrapperEl.css('scroll-snap-type', '');\r\n $wrapperEl.transition('');\r\n }\r\n\r\n if (params.hide) {\r\n clearTimeout(swiper.scrollbar.dragTimeout);\r\n swiper.scrollbar.dragTimeout = nextTick(function () {\r\n $el.css('opacity', 0);\r\n $el.transition(400);\r\n }, 1000);\r\n }\r\n\r\n swiper.emit('scrollbarDragEnd', e);\r\n\r\n if (params.snapOnRelease) {\r\n swiper.slideToClosest();\r\n }\r\n },\r\n enableDraggable: function enableDraggable() {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el) return;\r\n var document = getDocument();\r\n var scrollbar = swiper.scrollbar,\r\n touchEventsTouch = swiper.touchEventsTouch,\r\n touchEventsDesktop = swiper.touchEventsDesktop,\r\n params = swiper.params,\r\n support = swiper.support;\r\n var $el = scrollbar.$el;\r\n var target = $el[0];\r\n var activeListener = support.passiveListener && params.passiveListeners ? {\r\n passive: false,\r\n capture: false\r\n } : false;\r\n var passiveListener = support.passiveListener && params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n\r\n if (!support.touch) {\r\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\r\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\r\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\r\n } else {\r\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\r\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\r\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\r\n }\r\n },\r\n disableDraggable: function disableDraggable() {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el) return;\r\n var document = getDocument();\r\n var scrollbar = swiper.scrollbar,\r\n touchEventsTouch = swiper.touchEventsTouch,\r\n touchEventsDesktop = swiper.touchEventsDesktop,\r\n params = swiper.params,\r\n support = swiper.support;\r\n var $el = scrollbar.$el;\r\n var target = $el[0];\r\n var activeListener = support.passiveListener && params.passiveListeners ? {\r\n passive: false,\r\n capture: false\r\n } : false;\r\n var passiveListener = support.passiveListener && params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n\r\n if (!support.touch) {\r\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\r\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\r\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\r\n } else {\r\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\r\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\r\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\r\n }\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n if (!swiper.params.scrollbar.el) return;\r\n var scrollbar = swiper.scrollbar,\r\n $swiperEl = swiper.$el;\r\n var params = swiper.params.scrollbar;\r\n var $el = $(params.el);\r\n\r\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\r\n $el = $swiperEl.find(params.el);\r\n }\r\n\r\n var $dragEl = $el.find(\".\" + swiper.params.scrollbar.dragClass);\r\n\r\n if ($dragEl.length === 0) {\r\n $dragEl = $(\"
    \");\r\n $el.append($dragEl);\r\n }\r\n\r\n extend$1(scrollbar, {\r\n $el: $el,\r\n el: $el[0],\r\n $dragEl: $dragEl,\r\n dragEl: $dragEl[0]\r\n });\r\n\r\n if (params.draggable) {\r\n scrollbar.enableDraggable();\r\n }\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n swiper.scrollbar.disableDraggable();\r\n }\r\n };\r\n var Scrollbar$1 = {\r\n name: 'scrollbar',\r\n params: {\r\n scrollbar: {\r\n el: null,\r\n dragSize: 'auto',\r\n hide: false,\r\n draggable: false,\r\n snapOnRelease: true,\r\n lockClass: 'swiper-scrollbar-lock',\r\n dragClass: 'swiper-scrollbar-drag'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n scrollbar: _extends({\r\n isTouched: false,\r\n timeout: null,\r\n dragTimeout: null\r\n }, Scrollbar)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n swiper.scrollbar.init();\r\n swiper.scrollbar.updateSize();\r\n swiper.scrollbar.setTranslate();\r\n },\r\n update: function update(swiper) {\r\n swiper.scrollbar.updateSize();\r\n },\r\n resize: function resize(swiper) {\r\n swiper.scrollbar.updateSize();\r\n },\r\n observerUpdate: function observerUpdate(swiper) {\r\n swiper.scrollbar.updateSize();\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n swiper.scrollbar.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n swiper.scrollbar.setTransition(duration);\r\n },\r\n destroy: function destroy(swiper) {\r\n swiper.scrollbar.destroy();\r\n }\r\n }\r\n };\r\n\r\n var Parallax = {\r\n setTransform: function setTransform(el, progress) {\r\n var swiper = this;\r\n var rtl = swiper.rtl;\r\n var $el = $(el);\r\n var rtlFactor = rtl ? -1 : 1;\r\n var p = $el.attr('data-swiper-parallax') || '0';\r\n var x = $el.attr('data-swiper-parallax-x');\r\n var y = $el.attr('data-swiper-parallax-y');\r\n var scale = $el.attr('data-swiper-parallax-scale');\r\n var opacity = $el.attr('data-swiper-parallax-opacity');\r\n\r\n if (x || y) {\r\n x = x || '0';\r\n y = y || '0';\r\n } else if (swiper.isHorizontal()) {\r\n x = p;\r\n y = '0';\r\n } else {\r\n y = p;\r\n x = '0';\r\n }\r\n\r\n if (x.indexOf('%') >= 0) {\r\n x = parseInt(x, 10) * progress * rtlFactor + \"%\";\r\n } else {\r\n x = x * progress * rtlFactor + \"px\";\r\n }\r\n\r\n if (y.indexOf('%') >= 0) {\r\n y = parseInt(y, 10) * progress + \"%\";\r\n } else {\r\n y = y * progress + \"px\";\r\n }\r\n\r\n if (typeof opacity !== 'undefined' && opacity !== null) {\r\n var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\r\n $el[0].style.opacity = currentOpacity;\r\n }\r\n\r\n if (typeof scale === 'undefined' || scale === null) {\r\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px)\");\r\n } else {\r\n var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\r\n $el.transform(\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\");\r\n }\r\n },\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n var $el = swiper.$el,\r\n slides = swiper.slides,\r\n progress = swiper.progress,\r\n snapGrid = swiper.snapGrid;\r\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\r\n swiper.parallax.setTransform(el, progress);\r\n });\r\n slides.each(function (slideEl, slideIndex) {\r\n var slideProgress = slideEl.progress;\r\n\r\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\r\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\r\n }\r\n\r\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\r\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {\r\n swiper.parallax.setTransform(el, slideProgress);\r\n });\r\n });\r\n },\r\n setTransition: function setTransition(duration) {\r\n if (duration === void 0) {\r\n duration = this.params.speed;\r\n }\r\n\r\n var swiper = this;\r\n var $el = swiper.$el;\r\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {\r\n var $parallaxEl = $(parallaxEl);\r\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\r\n if (duration === 0) parallaxDuration = 0;\r\n $parallaxEl.transition(parallaxDuration);\r\n });\r\n }\r\n };\r\n var Parallax$1 = {\r\n name: 'parallax',\r\n params: {\r\n parallax: {\r\n enabled: false\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n parallax: _extends({}, Parallax)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (!swiper.params.parallax.enabled) return;\r\n swiper.params.watchSlidesProgress = true;\r\n swiper.originalParams.watchSlidesProgress = true;\r\n },\r\n init: function init(swiper) {\r\n if (!swiper.params.parallax.enabled) return;\r\n swiper.parallax.setTranslate();\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (!swiper.params.parallax.enabled) return;\r\n swiper.parallax.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n if (!swiper.params.parallax.enabled) return;\r\n swiper.parallax.setTransition(duration);\r\n }\r\n }\r\n };\r\n\r\n var Zoom = {\r\n // Calc Scale From Multi-touches\r\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\r\n if (e.targetTouches.length < 2) return 1;\r\n var x1 = e.targetTouches[0].pageX;\r\n var y1 = e.targetTouches[0].pageY;\r\n var x2 = e.targetTouches[1].pageX;\r\n var y2 = e.targetTouches[1].pageY;\r\n var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\r\n return distance;\r\n },\r\n // Events\r\n onGestureStart: function onGestureStart(e) {\r\n var swiper = this;\r\n var support = swiper.support;\r\n var params = swiper.params.zoom;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture;\r\n zoom.fakeGestureTouched = false;\r\n zoom.fakeGestureMoved = false;\r\n\r\n if (!support.gestures) {\r\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\r\n return;\r\n }\r\n\r\n zoom.fakeGestureTouched = true;\r\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\r\n }\r\n\r\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\r\n gesture.$slideEl = $(e.target).closest(\".\" + swiper.params.slideClass);\r\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\r\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\r\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\r\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\r\n\r\n if (gesture.$imageWrapEl.length === 0) {\r\n gesture.$imageEl = undefined;\r\n return;\r\n }\r\n }\r\n\r\n if (gesture.$imageEl) {\r\n gesture.$imageEl.transition(0);\r\n }\r\n\r\n swiper.zoom.isScaling = true;\r\n },\r\n onGestureChange: function onGestureChange(e) {\r\n var swiper = this;\r\n var support = swiper.support;\r\n var params = swiper.params.zoom;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture;\r\n\r\n if (!support.gestures) {\r\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\r\n return;\r\n }\r\n\r\n zoom.fakeGestureMoved = true;\r\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\r\n }\r\n\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\r\n if (e.type === 'gesturechange') zoom.onGestureStart(e);\r\n return;\r\n }\r\n\r\n if (support.gestures) {\r\n zoom.scale = e.scale * zoom.currentScale;\r\n } else {\r\n zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;\r\n }\r\n\r\n if (zoom.scale > gesture.maxRatio) {\r\n zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);\r\n }\r\n\r\n if (zoom.scale < params.minRatio) {\r\n zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);\r\n }\r\n\r\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\r\n },\r\n onGestureEnd: function onGestureEnd(e) {\r\n var swiper = this;\r\n var device = swiper.device;\r\n var support = swiper.support;\r\n var params = swiper.params.zoom;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture;\r\n\r\n if (!support.gestures) {\r\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\r\n return;\r\n }\r\n\r\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\r\n return;\r\n }\r\n\r\n zoom.fakeGestureTouched = false;\r\n zoom.fakeGestureMoved = false;\r\n }\r\n\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\r\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\r\n zoom.currentScale = zoom.scale;\r\n zoom.isScaling = false;\r\n if (zoom.scale === 1) gesture.$slideEl = undefined;\r\n },\r\n onTouchStart: function onTouchStart(e) {\r\n var swiper = this;\r\n var device = swiper.device;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture,\r\n image = zoom.image;\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n if (image.isTouched) return;\r\n if (device.android && e.cancelable) e.preventDefault();\r\n image.isTouched = true;\r\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\r\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\r\n },\r\n onTouchMove: function onTouchMove(e) {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture,\r\n image = zoom.image,\r\n velocity = zoom.velocity;\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n swiper.allowClick = false;\r\n if (!image.isTouched || !gesture.$slideEl) return;\r\n\r\n if (!image.isMoved) {\r\n image.width = gesture.$imageEl[0].offsetWidth;\r\n image.height = gesture.$imageEl[0].offsetHeight;\r\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\r\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\r\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\r\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\r\n gesture.$imageWrapEl.transition(0);\r\n\r\n if (swiper.rtl) {\r\n image.startX = -image.startX;\r\n image.startY = -image.startY;\r\n }\r\n } // Define if we need image drag\r\n\r\n\r\n var scaledWidth = image.width * zoom.scale;\r\n var scaledHeight = image.height * zoom.scale;\r\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\r\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n image.maxX = -image.minX;\r\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n image.maxY = -image.minY;\r\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\r\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\r\n\r\n if (!image.isMoved && !zoom.isScaling) {\r\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\r\n image.isTouched = false;\r\n return;\r\n }\r\n\r\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\r\n image.isTouched = false;\r\n return;\r\n }\r\n }\r\n\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n\r\n e.stopPropagation();\r\n image.isMoved = true;\r\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\r\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\r\n\r\n if (image.currentX < image.minX) {\r\n image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);\r\n }\r\n\r\n if (image.currentX > image.maxX) {\r\n image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);\r\n }\r\n\r\n if (image.currentY < image.minY) {\r\n image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);\r\n }\r\n\r\n if (image.currentY > image.maxY) {\r\n image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);\r\n } // Velocity\r\n\r\n\r\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\r\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\r\n if (!velocity.prevTime) velocity.prevTime = Date.now();\r\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\r\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\r\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\r\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\r\n velocity.prevPositionX = image.touchesCurrent.x;\r\n velocity.prevPositionY = image.touchesCurrent.y;\r\n velocity.prevTime = Date.now();\r\n gesture.$imageWrapEl.transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\r\n },\r\n onTouchEnd: function onTouchEnd() {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture,\r\n image = zoom.image,\r\n velocity = zoom.velocity;\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n\r\n if (!image.isTouched || !image.isMoved) {\r\n image.isTouched = false;\r\n image.isMoved = false;\r\n return;\r\n }\r\n\r\n image.isTouched = false;\r\n image.isMoved = false;\r\n var momentumDurationX = 300;\r\n var momentumDurationY = 300;\r\n var momentumDistanceX = velocity.x * momentumDurationX;\r\n var newPositionX = image.currentX + momentumDistanceX;\r\n var momentumDistanceY = velocity.y * momentumDurationY;\r\n var newPositionY = image.currentY + momentumDistanceY; // Fix duration\r\n\r\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\r\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\r\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\r\n image.currentX = newPositionX;\r\n image.currentY = newPositionY; // Define if we need image drag\r\n\r\n var scaledWidth = image.width * zoom.scale;\r\n var scaledHeight = image.height * zoom.scale;\r\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\r\n image.maxX = -image.minX;\r\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\r\n image.maxY = -image.minY;\r\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\r\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\r\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\r\n },\r\n onTransitionEnd: function onTransitionEnd() {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var gesture = zoom.gesture;\r\n\r\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\r\n if (gesture.$imageEl) {\r\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\r\n }\r\n\r\n if (gesture.$imageWrapEl) {\r\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\r\n }\r\n\r\n zoom.scale = 1;\r\n zoom.currentScale = 1;\r\n gesture.$slideEl = undefined;\r\n gesture.$imageEl = undefined;\r\n gesture.$imageWrapEl = undefined;\r\n }\r\n },\r\n // Toggle Zoom\r\n toggle: function toggle(e) {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n\r\n if (zoom.scale && zoom.scale !== 1) {\r\n // Zoom Out\r\n zoom.out();\r\n } else {\r\n // Zoom In\r\n zoom.in(e);\r\n }\r\n },\r\n in: function _in(e) {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var params = swiper.params.zoom;\r\n var gesture = zoom.gesture,\r\n image = zoom.image;\r\n\r\n if (!gesture.$slideEl) {\r\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\r\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\r\n } else {\r\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\r\n }\r\n\r\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\r\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\r\n }\r\n\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\r\n var touchX;\r\n var touchY;\r\n var offsetX;\r\n var offsetY;\r\n var diffX;\r\n var diffY;\r\n var translateX;\r\n var translateY;\r\n var imageWidth;\r\n var imageHeight;\r\n var scaledWidth;\r\n var scaledHeight;\r\n var translateMinX;\r\n var translateMinY;\r\n var translateMaxX;\r\n var translateMaxY;\r\n var slideWidth;\r\n var slideHeight;\r\n\r\n if (typeof image.touchesStart.x === 'undefined' && e) {\r\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\r\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\r\n } else {\r\n touchX = image.touchesStart.x;\r\n touchY = image.touchesStart.y;\r\n }\r\n\r\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\r\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\r\n\r\n if (e) {\r\n slideWidth = gesture.$slideEl[0].offsetWidth;\r\n slideHeight = gesture.$slideEl[0].offsetHeight;\r\n offsetX = gesture.$slideEl.offset().left;\r\n offsetY = gesture.$slideEl.offset().top;\r\n diffX = offsetX + slideWidth / 2 - touchX;\r\n diffY = offsetY + slideHeight / 2 - touchY;\r\n imageWidth = gesture.$imageEl[0].offsetWidth;\r\n imageHeight = gesture.$imageEl[0].offsetHeight;\r\n scaledWidth = imageWidth * zoom.scale;\r\n scaledHeight = imageHeight * zoom.scale;\r\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\r\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\r\n translateMaxX = -translateMinX;\r\n translateMaxY = -translateMinY;\r\n translateX = diffX * zoom.scale;\r\n translateY = diffY * zoom.scale;\r\n\r\n if (translateX < translateMinX) {\r\n translateX = translateMinX;\r\n }\r\n\r\n if (translateX > translateMaxX) {\r\n translateX = translateMaxX;\r\n }\r\n\r\n if (translateY < translateMinY) {\r\n translateY = translateMinY;\r\n }\r\n\r\n if (translateY > translateMaxY) {\r\n translateY = translateMaxY;\r\n }\r\n } else {\r\n translateX = 0;\r\n translateY = 0;\r\n }\r\n\r\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\");\r\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\r\n },\r\n out: function out() {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var params = swiper.params.zoom;\r\n var gesture = zoom.gesture;\r\n\r\n if (!gesture.$slideEl) {\r\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\r\n gesture.$slideEl = swiper.$wrapperEl.children(\".\" + swiper.params.slideActiveClass);\r\n } else {\r\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\r\n }\r\n\r\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\r\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\r\n }\r\n\r\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\r\n zoom.scale = 1;\r\n zoom.currentScale = 1;\r\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\r\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\r\n gesture.$slideEl.removeClass(\"\" + params.zoomedSlideClass);\r\n gesture.$slideEl = undefined;\r\n },\r\n toggleGestures: function toggleGestures(method) {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n var selector = zoom.slideSelector,\r\n passive = zoom.passiveListener;\r\n swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);\r\n swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);\r\n swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);\r\n },\r\n enableGestures: function enableGestures() {\r\n if (this.zoom.gesturesEnabled) return;\r\n this.zoom.gesturesEnabled = true;\r\n this.zoom.toggleGestures('on');\r\n },\r\n disableGestures: function disableGestures() {\r\n if (!this.zoom.gesturesEnabled) return;\r\n this.zoom.gesturesEnabled = false;\r\n this.zoom.toggleGestures('off');\r\n },\r\n // Attach/Detach Events\r\n enable: function enable() {\r\n var swiper = this;\r\n var support = swiper.support;\r\n var zoom = swiper.zoom;\r\n if (zoom.enabled) return;\r\n zoom.enabled = true;\r\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n var activeListenerWithCapture = support.passiveListener ? {\r\n passive: false,\r\n capture: true\r\n } : true;\r\n var slideSelector = \".\" + swiper.params.slideClass;\r\n swiper.zoom.passiveListener = passiveListener;\r\n swiper.zoom.slideSelector = slideSelector; // Scale image\r\n\r\n if (support.gestures) {\r\n swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\r\n swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\r\n } else if (swiper.touchEvents.start === 'touchstart') {\r\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\r\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\r\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\r\n\r\n if (swiper.touchEvents.cancel) {\r\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\r\n }\r\n } // Move image\r\n\r\n\r\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\r\n },\r\n disable: function disable() {\r\n var swiper = this;\r\n var zoom = swiper.zoom;\r\n if (!zoom.enabled) return;\r\n var support = swiper.support;\r\n swiper.zoom.enabled = false;\r\n var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\r\n passive: true,\r\n capture: false\r\n } : false;\r\n var activeListenerWithCapture = support.passiveListener ? {\r\n passive: false,\r\n capture: true\r\n } : true;\r\n var slideSelector = \".\" + swiper.params.slideClass; // Scale image\r\n\r\n if (support.gestures) {\r\n swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);\r\n swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);\r\n } else if (swiper.touchEvents.start === 'touchstart') {\r\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\r\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\r\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\r\n\r\n if (swiper.touchEvents.cancel) {\r\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\r\n }\r\n } // Move image\r\n\r\n\r\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);\r\n }\r\n };\r\n var Zoom$1 = {\r\n name: 'zoom',\r\n params: {\r\n zoom: {\r\n enabled: false,\r\n maxRatio: 3,\r\n minRatio: 1,\r\n toggle: true,\r\n containerClass: 'swiper-zoom-container',\r\n zoomedSlideClass: 'swiper-slide-zoomed'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n zoom: _extends({\r\n enabled: false,\r\n scale: 1,\r\n currentScale: 1,\r\n isScaling: false,\r\n gesture: {\r\n $slideEl: undefined,\r\n slideWidth: undefined,\r\n slideHeight: undefined,\r\n $imageEl: undefined,\r\n $imageWrapEl: undefined,\r\n maxRatio: 3\r\n },\r\n image: {\r\n isTouched: undefined,\r\n isMoved: undefined,\r\n currentX: undefined,\r\n currentY: undefined,\r\n minX: undefined,\r\n minY: undefined,\r\n maxX: undefined,\r\n maxY: undefined,\r\n width: undefined,\r\n height: undefined,\r\n startX: undefined,\r\n startY: undefined,\r\n touchesStart: {},\r\n touchesCurrent: {}\r\n },\r\n velocity: {\r\n x: undefined,\r\n y: undefined,\r\n prevPositionX: undefined,\r\n prevPositionY: undefined,\r\n prevTime: undefined\r\n }\r\n }, Zoom)\r\n });\r\n var scale = 1;\r\n Object.defineProperty(swiper.zoom, 'scale', {\r\n get: function get() {\r\n return scale;\r\n },\r\n set: function set(value) {\r\n if (scale !== value) {\r\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\r\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\r\n swiper.emit('zoomChange', value, imageEl, slideEl);\r\n }\r\n\r\n scale = value;\r\n }\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (swiper.params.zoom.enabled) {\r\n swiper.zoom.enable();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n swiper.zoom.disable();\r\n },\r\n touchStart: function touchStart(swiper, e) {\r\n if (!swiper.zoom.enabled) return;\r\n swiper.zoom.onTouchStart(e);\r\n },\r\n touchEnd: function touchEnd(swiper, e) {\r\n if (!swiper.zoom.enabled) return;\r\n swiper.zoom.onTouchEnd(e);\r\n },\r\n doubleTap: function doubleTap(swiper, e) {\r\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\r\n swiper.zoom.toggle(e);\r\n }\r\n },\r\n transitionEnd: function transitionEnd(swiper) {\r\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\r\n swiper.zoom.onTransitionEnd();\r\n }\r\n },\r\n slideChange: function slideChange(swiper) {\r\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\r\n swiper.zoom.onTransitionEnd();\r\n }\r\n }\r\n }\r\n };\r\n\r\n var Lazy = {\r\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\r\n if (loadInDuplicate === void 0) {\r\n loadInDuplicate = true;\r\n }\r\n\r\n var swiper = this;\r\n var params = swiper.params.lazy;\r\n if (typeof index === 'undefined') return;\r\n if (swiper.slides.length === 0) return;\r\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n var $slideEl = isVirtual ? swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\") : swiper.slides.eq(index);\r\n var $images = $slideEl.find(\".\" + params.elementClass + \":not(.\" + params.loadedClass + \"):not(.\" + params.loadingClass + \")\");\r\n\r\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\r\n $images.push($slideEl[0]);\r\n }\r\n\r\n if ($images.length === 0) return;\r\n $images.each(function (imageEl) {\r\n var $imageEl = $(imageEl);\r\n $imageEl.addClass(params.loadingClass);\r\n var background = $imageEl.attr('data-background');\r\n var src = $imageEl.attr('data-src');\r\n var srcset = $imageEl.attr('data-srcset');\r\n var sizes = $imageEl.attr('data-sizes');\r\n var $pictureEl = $imageEl.parent('picture');\r\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {\r\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\r\n\r\n if (background) {\r\n $imageEl.css('background-image', \"url(\\\"\" + background + \"\\\")\");\r\n $imageEl.removeAttr('data-background');\r\n } else {\r\n if (srcset) {\r\n $imageEl.attr('srcset', srcset);\r\n $imageEl.removeAttr('data-srcset');\r\n }\r\n\r\n if (sizes) {\r\n $imageEl.attr('sizes', sizes);\r\n $imageEl.removeAttr('data-sizes');\r\n }\r\n\r\n if ($pictureEl.length) {\r\n $pictureEl.children('source').each(function (sourceEl) {\r\n var $source = $(sourceEl);\r\n\r\n if ($source.attr('data-srcset')) {\r\n $source.attr('srcset', $source.attr('data-srcset'));\r\n $source.removeAttr('data-srcset');\r\n }\r\n });\r\n }\r\n\r\n if (src) {\r\n $imageEl.attr('src', src);\r\n $imageEl.removeAttr('data-src');\r\n }\r\n }\r\n\r\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\r\n $slideEl.find(\".\" + params.preloaderClass).remove();\r\n\r\n if (swiper.params.loop && loadInDuplicate) {\r\n var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\r\n\r\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\r\n var originalSlide = swiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + swiper.params.slideDuplicateClass + \")\");\r\n swiper.lazy.loadInSlide(originalSlide.index(), false);\r\n } else {\r\n var duplicatedSlide = swiper.$wrapperEl.children(\".\" + swiper.params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]\");\r\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\r\n }\r\n }\r\n\r\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\r\n\r\n if (swiper.params.autoHeight) {\r\n swiper.updateAutoHeight();\r\n }\r\n });\r\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\r\n });\r\n },\r\n load: function load() {\r\n var swiper = this;\r\n var $wrapperEl = swiper.$wrapperEl,\r\n swiperParams = swiper.params,\r\n slides = swiper.slides,\r\n activeIndex = swiper.activeIndex;\r\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\r\n var params = swiperParams.lazy;\r\n var slidesPerView = swiperParams.slidesPerView;\r\n\r\n if (slidesPerView === 'auto') {\r\n slidesPerView = 0;\r\n }\r\n\r\n function slideExist(index) {\r\n if (isVirtual) {\r\n if ($wrapperEl.children(\".\" + swiperParams.slideClass + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\").length) {\r\n return true;\r\n }\r\n } else if (slides[index]) return true;\r\n\r\n return false;\r\n }\r\n\r\n function slideIndex(slideEl) {\r\n if (isVirtual) {\r\n return $(slideEl).attr('data-swiper-slide-index');\r\n }\r\n\r\n return $(slideEl).index();\r\n }\r\n\r\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\r\n\r\n if (swiper.params.watchSlidesVisibility) {\r\n $wrapperEl.children(\".\" + swiperParams.slideVisibleClass).each(function (slideEl) {\r\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\r\n swiper.lazy.loadInSlide(index);\r\n });\r\n } else if (slidesPerView > 1) {\r\n for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\r\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\r\n }\r\n } else {\r\n swiper.lazy.loadInSlide(activeIndex);\r\n }\r\n\r\n if (params.loadPrevNext) {\r\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\r\n var amount = params.loadPrevNextAmount;\r\n var spv = slidesPerView;\r\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\r\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\r\n\r\n for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {\r\n if (slideExist(_i)) swiper.lazy.loadInSlide(_i);\r\n } // Prev Slides\r\n\r\n\r\n for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {\r\n if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);\r\n }\r\n } else {\r\n var nextSlide = $wrapperEl.children(\".\" + swiperParams.slideNextClass);\r\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\r\n var prevSlide = $wrapperEl.children(\".\" + swiperParams.slidePrevClass);\r\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\r\n }\r\n }\r\n }\r\n };\r\n var Lazy$1 = {\r\n name: 'lazy',\r\n params: {\r\n lazy: {\r\n enabled: false,\r\n loadPrevNext: false,\r\n loadPrevNextAmount: 1,\r\n loadOnTransitionStart: false,\r\n elementClass: 'swiper-lazy',\r\n loadingClass: 'swiper-lazy-loading',\r\n loadedClass: 'swiper-lazy-loaded',\r\n preloaderClass: 'swiper-lazy-preloader'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n lazy: _extends({\r\n initialImageLoaded: false\r\n }, Lazy)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\r\n swiper.params.preloadImages = false;\r\n }\r\n },\r\n init: function init(swiper) {\r\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\r\n swiper.lazy.load();\r\n }\r\n },\r\n scroll: function scroll(swiper) {\r\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\r\n swiper.lazy.load();\r\n }\r\n },\r\n resize: function resize(swiper) {\r\n if (swiper.params.lazy.enabled) {\r\n swiper.lazy.load();\r\n }\r\n },\r\n scrollbarDragMove: function scrollbarDragMove(swiper) {\r\n if (swiper.params.lazy.enabled) {\r\n swiper.lazy.load();\r\n }\r\n },\r\n transitionStart: function transitionStart(swiper) {\r\n if (swiper.params.lazy.enabled) {\r\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {\r\n swiper.lazy.load();\r\n }\r\n }\r\n },\r\n transitionEnd: function transitionEnd(swiper) {\r\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\r\n swiper.lazy.load();\r\n }\r\n },\r\n slideChange: function slideChange(swiper) {\r\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\r\n swiper.lazy.load();\r\n }\r\n }\r\n }\r\n };\r\n\r\n var Controller = {\r\n LinearSpline: function LinearSpline(x, y) {\r\n var binarySearch = function search() {\r\n var maxIndex;\r\n var minIndex;\r\n var guess;\r\n return function (array, val) {\r\n minIndex = -1;\r\n maxIndex = array.length;\r\n\r\n while (maxIndex - minIndex > 1) {\r\n guess = maxIndex + minIndex >> 1;\r\n\r\n if (array[guess] <= val) {\r\n minIndex = guess;\r\n } else {\r\n maxIndex = guess;\r\n }\r\n }\r\n\r\n return maxIndex;\r\n };\r\n }();\r\n\r\n this.x = x;\r\n this.y = y;\r\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\r\n // (x1,y1) is the known point before given value,\r\n // (x3,y3) is the known point after given value.\r\n\r\n var i1;\r\n var i3;\r\n\r\n this.interpolate = function interpolate(x2) {\r\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\r\n\r\n i3 = binarySearch(this.x, x2);\r\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\r\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\r\n\r\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\r\n };\r\n\r\n return this;\r\n },\r\n // xxx: for now i will just save one spline function to to\r\n getInterpolateFunction: function getInterpolateFunction(c) {\r\n var swiper = this;\r\n\r\n if (!swiper.controller.spline) {\r\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\r\n }\r\n },\r\n setTranslate: function setTranslate(_setTranslate, byController) {\r\n var swiper = this;\r\n var controlled = swiper.controller.control;\r\n var multiplier;\r\n var controlledTranslate;\r\n var Swiper = swiper.constructor;\r\n\r\n function setControlledTranslate(c) {\r\n // this will create an Interpolate function based on the snapGrids\r\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\r\n // it makes sense to create this only once and recall it for the interpolation\r\n // the function does a lot of value caching for performance\r\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\r\n\r\n if (swiper.params.controller.by === 'slide') {\r\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\r\n // but it did not work out\r\n\r\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\r\n }\r\n\r\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\r\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\r\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\r\n }\r\n\r\n if (swiper.params.controller.inverse) {\r\n controlledTranslate = c.maxTranslate() - controlledTranslate;\r\n }\r\n\r\n c.updateProgress(controlledTranslate);\r\n c.setTranslate(controlledTranslate, swiper);\r\n c.updateActiveIndex();\r\n c.updateSlidesClasses();\r\n }\r\n\r\n if (Array.isArray(controlled)) {\r\n for (var i = 0; i < controlled.length; i += 1) {\r\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\r\n setControlledTranslate(controlled[i]);\r\n }\r\n }\r\n } else if (controlled instanceof Swiper && byController !== controlled) {\r\n setControlledTranslate(controlled);\r\n }\r\n },\r\n setTransition: function setTransition(duration, byController) {\r\n var swiper = this;\r\n var Swiper = swiper.constructor;\r\n var controlled = swiper.controller.control;\r\n var i;\r\n\r\n function setControlledTransition(c) {\r\n c.setTransition(duration, swiper);\r\n\r\n if (duration !== 0) {\r\n c.transitionStart();\r\n\r\n if (c.params.autoHeight) {\r\n nextTick(function () {\r\n c.updateAutoHeight();\r\n });\r\n }\r\n\r\n c.$wrapperEl.transitionEnd(function () {\r\n if (!controlled) return;\r\n\r\n if (c.params.loop && swiper.params.controller.by === 'slide') {\r\n c.loopFix();\r\n }\r\n\r\n c.transitionEnd();\r\n });\r\n }\r\n }\r\n\r\n if (Array.isArray(controlled)) {\r\n for (i = 0; i < controlled.length; i += 1) {\r\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\r\n setControlledTransition(controlled[i]);\r\n }\r\n }\r\n } else if (controlled instanceof Swiper && byController !== controlled) {\r\n setControlledTransition(controlled);\r\n }\r\n }\r\n };\r\n var Controller$1 = {\r\n name: 'controller',\r\n params: {\r\n controller: {\r\n control: undefined,\r\n inverse: false,\r\n by: 'slide' // or 'container'\r\n\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n controller: _extends({\r\n control: swiper.params.controller.control\r\n }, Controller)\r\n });\r\n },\r\n on: {\r\n update: function update(swiper) {\r\n if (!swiper.controller.control) return;\r\n\r\n if (swiper.controller.spline) {\r\n swiper.controller.spline = undefined;\r\n delete swiper.controller.spline;\r\n }\r\n },\r\n resize: function resize(swiper) {\r\n if (!swiper.controller.control) return;\r\n\r\n if (swiper.controller.spline) {\r\n swiper.controller.spline = undefined;\r\n delete swiper.controller.spline;\r\n }\r\n },\r\n observerUpdate: function observerUpdate(swiper) {\r\n if (!swiper.controller.control) return;\r\n\r\n if (swiper.controller.spline) {\r\n swiper.controller.spline = undefined;\r\n delete swiper.controller.spline;\r\n }\r\n },\r\n setTranslate: function setTranslate(swiper, translate, byController) {\r\n if (!swiper.controller.control) return;\r\n swiper.controller.setTranslate(translate, byController);\r\n },\r\n setTransition: function setTransition(swiper, duration, byController) {\r\n if (!swiper.controller.control) return;\r\n swiper.controller.setTransition(duration, byController);\r\n }\r\n }\r\n };\r\n\r\n var A11y = {\r\n getRandomNumber: function getRandomNumber(size) {\r\n if (size === void 0) {\r\n size = 16;\r\n }\r\n\r\n var randomChar = function randomChar() {\r\n return Math.round(16 * Math.random()).toString(16);\r\n };\r\n\r\n return 'x'.repeat(size).replace(/x/g, randomChar);\r\n },\r\n makeElFocusable: function makeElFocusable($el) {\r\n $el.attr('tabIndex', '0');\r\n return $el;\r\n },\r\n makeElNotFocusable: function makeElNotFocusable($el) {\r\n $el.attr('tabIndex', '-1');\r\n return $el;\r\n },\r\n addElRole: function addElRole($el, role) {\r\n $el.attr('role', role);\r\n return $el;\r\n },\r\n addElRoleDescription: function addElRoleDescription($el, description) {\r\n $el.attr('aria-role-description', description);\r\n return $el;\r\n },\r\n addElControls: function addElControls($el, controls) {\r\n $el.attr('aria-controls', controls);\r\n return $el;\r\n },\r\n addElLabel: function addElLabel($el, label) {\r\n $el.attr('aria-label', label);\r\n return $el;\r\n },\r\n addElId: function addElId($el, id) {\r\n $el.attr('id', id);\r\n return $el;\r\n },\r\n addElLive: function addElLive($el, live) {\r\n $el.attr('aria-live', live);\r\n return $el;\r\n },\r\n disableEl: function disableEl($el) {\r\n $el.attr('aria-disabled', true);\r\n return $el;\r\n },\r\n enableEl: function enableEl($el) {\r\n $el.attr('aria-disabled', false);\r\n return $el;\r\n },\r\n onEnterKey: function onEnterKey(e) {\r\n var swiper = this;\r\n var params = swiper.params.a11y;\r\n if (e.keyCode !== 13) return;\r\n var $targetEl = $(e.target);\r\n\r\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\r\n if (!(swiper.isEnd && !swiper.params.loop)) {\r\n swiper.slideNext();\r\n }\r\n\r\n if (swiper.isEnd) {\r\n swiper.a11y.notify(params.lastSlideMessage);\r\n } else {\r\n swiper.a11y.notify(params.nextSlideMessage);\r\n }\r\n }\r\n\r\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\r\n if (!(swiper.isBeginning && !swiper.params.loop)) {\r\n swiper.slidePrev();\r\n }\r\n\r\n if (swiper.isBeginning) {\r\n swiper.a11y.notify(params.firstSlideMessage);\r\n } else {\r\n swiper.a11y.notify(params.prevSlideMessage);\r\n }\r\n }\r\n\r\n if (swiper.pagination && $targetEl.is(\".\" + swiper.params.pagination.bulletClass)) {\r\n $targetEl[0].click();\r\n }\r\n },\r\n notify: function notify(message) {\r\n var swiper = this;\r\n var notification = swiper.a11y.liveRegion;\r\n if (notification.length === 0) return;\r\n notification.html('');\r\n notification.html(message);\r\n },\r\n updateNavigation: function updateNavigation() {\r\n var swiper = this;\r\n if (swiper.params.loop || !swiper.navigation) return;\r\n var _swiper$navigation = swiper.navigation,\r\n $nextEl = _swiper$navigation.$nextEl,\r\n $prevEl = _swiper$navigation.$prevEl;\r\n\r\n if ($prevEl && $prevEl.length > 0) {\r\n if (swiper.isBeginning) {\r\n swiper.a11y.disableEl($prevEl);\r\n swiper.a11y.makeElNotFocusable($prevEl);\r\n } else {\r\n swiper.a11y.enableEl($prevEl);\r\n swiper.a11y.makeElFocusable($prevEl);\r\n }\r\n }\r\n\r\n if ($nextEl && $nextEl.length > 0) {\r\n if (swiper.isEnd) {\r\n swiper.a11y.disableEl($nextEl);\r\n swiper.a11y.makeElNotFocusable($nextEl);\r\n } else {\r\n swiper.a11y.enableEl($nextEl);\r\n swiper.a11y.makeElFocusable($nextEl);\r\n }\r\n }\r\n },\r\n updatePagination: function updatePagination() {\r\n var swiper = this;\r\n var params = swiper.params.a11y;\r\n\r\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\r\n swiper.pagination.bullets.each(function (bulletEl) {\r\n var $bulletEl = $(bulletEl);\r\n swiper.a11y.makeElFocusable($bulletEl);\r\n\r\n if (!swiper.params.pagination.renderBullet) {\r\n swiper.a11y.addElRole($bulletEl, 'button');\r\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\r\n }\r\n });\r\n }\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n var params = swiper.params.a11y;\r\n swiper.$el.append(swiper.a11y.liveRegion); // Container\r\n\r\n var $containerEl = swiper.$el;\r\n\r\n if (params.containerRoleDescriptionMessage) {\r\n swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\r\n }\r\n\r\n if (params.containerMessage) {\r\n swiper.a11y.addElLabel($containerEl, params.containerMessage);\r\n } // Wrapper\r\n\r\n\r\n var $wrapperEl = swiper.$wrapperEl;\r\n var wrapperId = $wrapperEl.attr('id') || \"swiper-wrapper-\" + swiper.a11y.getRandomNumber(16);\r\n var live;\r\n swiper.a11y.addElId($wrapperEl, wrapperId);\r\n\r\n if (swiper.params.autoplay && swiper.params.autoplay.enabled) {\r\n live = 'off';\r\n } else {\r\n live = 'polite';\r\n }\r\n\r\n swiper.a11y.addElLive($wrapperEl, live); // Slide\r\n\r\n if (params.itemRoleDescriptionMessage) {\r\n swiper.a11y.addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\r\n }\r\n\r\n swiper.a11y.addElRole($(swiper.slides), 'group');\r\n swiper.slides.each(function (slideEl) {\r\n var $slideEl = $(slideEl);\r\n swiper.a11y.addElLabel($slideEl, $slideEl.index() + 1 + \" / \" + swiper.slides.length);\r\n }); // Navigation\r\n\r\n var $nextEl;\r\n var $prevEl;\r\n\r\n if (swiper.navigation && swiper.navigation.$nextEl) {\r\n $nextEl = swiper.navigation.$nextEl;\r\n }\r\n\r\n if (swiper.navigation && swiper.navigation.$prevEl) {\r\n $prevEl = swiper.navigation.$prevEl;\r\n }\r\n\r\n if ($nextEl && $nextEl.length) {\r\n swiper.a11y.makeElFocusable($nextEl);\r\n\r\n if ($nextEl[0].tagName !== 'BUTTON') {\r\n swiper.a11y.addElRole($nextEl, 'button');\r\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\r\n }\r\n\r\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\r\n swiper.a11y.addElControls($nextEl, wrapperId);\r\n }\r\n\r\n if ($prevEl && $prevEl.length) {\r\n swiper.a11y.makeElFocusable($prevEl);\r\n\r\n if ($prevEl[0].tagName !== 'BUTTON') {\r\n swiper.a11y.addElRole($prevEl, 'button');\r\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\r\n }\r\n\r\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\r\n swiper.a11y.addElControls($prevEl, wrapperId);\r\n } // Pagination\r\n\r\n\r\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\r\n swiper.pagination.$el.on('keydown', \".\" + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);\r\n }\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\r\n var $nextEl;\r\n var $prevEl;\r\n\r\n if (swiper.navigation && swiper.navigation.$nextEl) {\r\n $nextEl = swiper.navigation.$nextEl;\r\n }\r\n\r\n if (swiper.navigation && swiper.navigation.$prevEl) {\r\n $prevEl = swiper.navigation.$prevEl;\r\n }\r\n\r\n if ($nextEl) {\r\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\r\n }\r\n\r\n if ($prevEl) {\r\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\r\n } // Pagination\r\n\r\n\r\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\r\n swiper.pagination.$el.off('keydown', \".\" + swiper.params.pagination.bulletClass, swiper.a11y.onEnterKey);\r\n }\r\n }\r\n };\r\n var A11y$1 = {\r\n name: 'a11y',\r\n params: {\r\n a11y: {\r\n enabled: true,\r\n notificationClass: 'swiper-notification',\r\n prevSlideMessage: 'Previous slide',\r\n nextSlideMessage: 'Next slide',\r\n firstSlideMessage: 'This is the first slide',\r\n lastSlideMessage: 'This is the last slide',\r\n paginationBulletMessage: 'Go to slide {{index}}',\r\n containerMessage: null,\r\n containerRoleDescriptionMessage: null,\r\n itemRoleDescriptionMessage: null\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n a11y: _extends(_extends({}, A11y), {}, {\r\n liveRegion: $(\"\")\r\n })\r\n });\r\n },\r\n on: {\r\n afterInit: function afterInit(swiper) {\r\n if (!swiper.params.a11y.enabled) return;\r\n swiper.a11y.init();\r\n swiper.a11y.updateNavigation();\r\n },\r\n toEdge: function toEdge(swiper) {\r\n if (!swiper.params.a11y.enabled) return;\r\n swiper.a11y.updateNavigation();\r\n },\r\n fromEdge: function fromEdge(swiper) {\r\n if (!swiper.params.a11y.enabled) return;\r\n swiper.a11y.updateNavigation();\r\n },\r\n paginationUpdate: function paginationUpdate(swiper) {\r\n if (!swiper.params.a11y.enabled) return;\r\n swiper.a11y.updatePagination();\r\n },\r\n destroy: function destroy(swiper) {\r\n if (!swiper.params.a11y.enabled) return;\r\n swiper.a11y.destroy();\r\n }\r\n }\r\n };\r\n\r\n var History = {\r\n init: function init() {\r\n var swiper = this;\r\n var window = getWindow();\r\n if (!swiper.params.history) return;\r\n\r\n if (!window.history || !window.history.pushState) {\r\n swiper.params.history.enabled = false;\r\n swiper.params.hashNavigation.enabled = true;\r\n return;\r\n }\r\n\r\n var history = swiper.history;\r\n history.initialized = true;\r\n history.paths = History.getPathValues(swiper.params.url);\r\n if (!history.paths.key && !history.paths.value) return;\r\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\r\n\r\n if (!swiper.params.history.replaceState) {\r\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\r\n }\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n var window = getWindow();\r\n\r\n if (!swiper.params.history.replaceState) {\r\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\r\n }\r\n },\r\n setHistoryPopState: function setHistoryPopState() {\r\n var swiper = this;\r\n swiper.history.paths = History.getPathValues(swiper.params.url);\r\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\r\n },\r\n getPathValues: function getPathValues(urlOverride) {\r\n var window = getWindow();\r\n var location;\r\n\r\n if (urlOverride) {\r\n location = new URL(urlOverride);\r\n } else {\r\n location = window.location;\r\n }\r\n\r\n var pathArray = location.pathname.slice(1).split('/').filter(function (part) {\r\n return part !== '';\r\n });\r\n var total = pathArray.length;\r\n var key = pathArray[total - 2];\r\n var value = pathArray[total - 1];\r\n return {\r\n key: key,\r\n value: value\r\n };\r\n },\r\n setHistory: function setHistory(key, index) {\r\n var swiper = this;\r\n var window = getWindow();\r\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\r\n var location;\r\n\r\n if (swiper.params.url) {\r\n location = new URL(swiper.params.url);\r\n } else {\r\n location = window.location;\r\n }\r\n\r\n var slide = swiper.slides.eq(index);\r\n var value = History.slugify(slide.attr('data-history'));\r\n\r\n if (!location.pathname.includes(key)) {\r\n value = key + \"/\" + value;\r\n }\r\n\r\n var currentState = window.history.state;\r\n\r\n if (currentState && currentState.value === value) {\r\n return;\r\n }\r\n\r\n if (swiper.params.history.replaceState) {\r\n window.history.replaceState({\r\n value: value\r\n }, null, value);\r\n } else {\r\n window.history.pushState({\r\n value: value\r\n }, null, value);\r\n }\r\n },\r\n slugify: function slugify(text) {\r\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\r\n },\r\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\r\n var swiper = this;\r\n\r\n if (value) {\r\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\r\n var slide = swiper.slides.eq(i);\r\n var slideHistory = History.slugify(slide.attr('data-history'));\r\n\r\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\r\n var index = slide.index();\r\n swiper.slideTo(index, speed, runCallbacks);\r\n }\r\n }\r\n } else {\r\n swiper.slideTo(0, speed, runCallbacks);\r\n }\r\n }\r\n };\r\n var History$1 = {\r\n name: 'history',\r\n params: {\r\n history: {\r\n enabled: false,\r\n replaceState: false,\r\n key: 'slides'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n history: _extends({}, History)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (swiper.params.history.enabled) {\r\n swiper.history.init();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n if (swiper.params.history.enabled) {\r\n swiper.history.destroy();\r\n }\r\n },\r\n transitionEnd: function transitionEnd(swiper) {\r\n if (swiper.history.initialized) {\r\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\r\n }\r\n },\r\n slideChange: function slideChange(swiper) {\r\n if (swiper.history.initialized && swiper.params.cssMode) {\r\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var HashNavigation = {\r\n onHashCange: function onHashCange() {\r\n var swiper = this;\r\n var document = getDocument();\r\n swiper.emit('hashChange');\r\n var newHash = document.location.hash.replace('#', '');\r\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\r\n\r\n if (newHash !== activeSlideHash) {\r\n var newIndex = swiper.$wrapperEl.children(\".\" + swiper.params.slideClass + \"[data-hash=\\\"\" + newHash + \"\\\"]\").index();\r\n if (typeof newIndex === 'undefined') return;\r\n swiper.slideTo(newIndex);\r\n }\r\n },\r\n setHash: function setHash() {\r\n var swiper = this;\r\n var window = getWindow();\r\n var document = getDocument();\r\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\r\n\r\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\r\n window.history.replaceState(null, null, \"#\" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');\r\n swiper.emit('hashSet');\r\n } else {\r\n var slide = swiper.slides.eq(swiper.activeIndex);\r\n var hash = slide.attr('data-hash') || slide.attr('data-history');\r\n document.location.hash = hash || '';\r\n swiper.emit('hashSet');\r\n }\r\n },\r\n init: function init() {\r\n var swiper = this;\r\n var document = getDocument();\r\n var window = getWindow();\r\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\r\n swiper.hashNavigation.initialized = true;\r\n var hash = document.location.hash.replace('#', '');\r\n\r\n if (hash) {\r\n var speed = 0;\r\n\r\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\r\n var slide = swiper.slides.eq(i);\r\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\r\n\r\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\r\n var index = slide.index();\r\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\r\n }\r\n }\r\n }\r\n\r\n if (swiper.params.hashNavigation.watchState) {\r\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\r\n }\r\n },\r\n destroy: function destroy() {\r\n var swiper = this;\r\n var window = getWindow();\r\n\r\n if (swiper.params.hashNavigation.watchState) {\r\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\r\n }\r\n }\r\n };\r\n var HashNavigation$1 = {\r\n name: 'hash-navigation',\r\n params: {\r\n hashNavigation: {\r\n enabled: false,\r\n replaceState: false,\r\n watchState: false\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n hashNavigation: _extends({\r\n initialized: false\r\n }, HashNavigation)\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (swiper.params.hashNavigation.enabled) {\r\n swiper.hashNavigation.init();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n if (swiper.params.hashNavigation.enabled) {\r\n swiper.hashNavigation.destroy();\r\n }\r\n },\r\n transitionEnd: function transitionEnd(swiper) {\r\n if (swiper.hashNavigation.initialized) {\r\n swiper.hashNavigation.setHash();\r\n }\r\n },\r\n slideChange: function slideChange(swiper) {\r\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\r\n swiper.hashNavigation.setHash();\r\n }\r\n }\r\n }\r\n };\r\n\r\n var Autoplay = {\r\n run: function run() {\r\n var swiper = this;\r\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\r\n var delay = swiper.params.autoplay.delay;\r\n\r\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\r\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\r\n }\r\n\r\n clearTimeout(swiper.autoplay.timeout);\r\n swiper.autoplay.timeout = nextTick(function () {\r\n var autoplayResult;\r\n\r\n if (swiper.params.autoplay.reverseDirection) {\r\n if (swiper.params.loop) {\r\n swiper.loopFix();\r\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else if (!swiper.isBeginning) {\r\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\r\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else {\r\n swiper.autoplay.stop();\r\n }\r\n } else if (swiper.params.loop) {\r\n swiper.loopFix();\r\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else if (!swiper.isEnd) {\r\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\r\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\r\n swiper.emit('autoplay');\r\n } else {\r\n swiper.autoplay.stop();\r\n }\r\n\r\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\r\n swiper.autoplay.run();\r\n }\r\n }, delay);\r\n },\r\n start: function start() {\r\n var swiper = this;\r\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\r\n if (swiper.autoplay.running) return false;\r\n swiper.autoplay.running = true;\r\n swiper.emit('autoplayStart');\r\n swiper.autoplay.run();\r\n return true;\r\n },\r\n stop: function stop() {\r\n var swiper = this;\r\n if (!swiper.autoplay.running) return false;\r\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\r\n\r\n if (swiper.autoplay.timeout) {\r\n clearTimeout(swiper.autoplay.timeout);\r\n swiper.autoplay.timeout = undefined;\r\n }\r\n\r\n swiper.autoplay.running = false;\r\n swiper.emit('autoplayStop');\r\n return true;\r\n },\r\n pause: function pause(speed) {\r\n var swiper = this;\r\n if (!swiper.autoplay.running) return;\r\n if (swiper.autoplay.paused) return;\r\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\r\n swiper.autoplay.paused = true;\r\n\r\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\r\n swiper.autoplay.paused = false;\r\n swiper.autoplay.run();\r\n } else {\r\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\r\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\r\n }\r\n },\r\n onVisibilityChange: function onVisibilityChange() {\r\n var swiper = this;\r\n var document = getDocument();\r\n\r\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\r\n swiper.autoplay.pause();\r\n }\r\n\r\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\r\n swiper.autoplay.run();\r\n swiper.autoplay.paused = false;\r\n }\r\n },\r\n onTransitionEnd: function onTransitionEnd(e) {\r\n var swiper = this;\r\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\r\n if (e.target !== swiper.$wrapperEl[0]) return;\r\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\r\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\r\n swiper.autoplay.paused = false;\r\n\r\n if (!swiper.autoplay.running) {\r\n swiper.autoplay.stop();\r\n } else {\r\n swiper.autoplay.run();\r\n }\r\n }\r\n };\r\n var Autoplay$1 = {\r\n name: 'autoplay',\r\n params: {\r\n autoplay: {\r\n enabled: false,\r\n delay: 3000,\r\n waitForTransition: true,\r\n disableOnInteraction: true,\r\n stopOnLastSlide: false,\r\n reverseDirection: false\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n autoplay: _extends(_extends({}, Autoplay), {}, {\r\n running: false,\r\n paused: false\r\n })\r\n });\r\n },\r\n on: {\r\n init: function init(swiper) {\r\n if (swiper.params.autoplay.enabled) {\r\n swiper.autoplay.start();\r\n var document = getDocument();\r\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\r\n }\r\n },\r\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\r\n if (swiper.autoplay.running) {\r\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\r\n swiper.autoplay.pause(speed);\r\n } else {\r\n swiper.autoplay.stop();\r\n }\r\n }\r\n },\r\n sliderFirstMove: function sliderFirstMove(swiper) {\r\n if (swiper.autoplay.running) {\r\n if (swiper.params.autoplay.disableOnInteraction) {\r\n swiper.autoplay.stop();\r\n } else {\r\n swiper.autoplay.pause();\r\n }\r\n }\r\n },\r\n touchEnd: function touchEnd(swiper) {\r\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\r\n swiper.autoplay.run();\r\n }\r\n },\r\n destroy: function destroy(swiper) {\r\n if (swiper.autoplay.running) {\r\n swiper.autoplay.stop();\r\n }\r\n\r\n var document = getDocument();\r\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\r\n }\r\n }\r\n };\r\n\r\n var Fade = {\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n var slides = swiper.slides;\r\n\r\n for (var i = 0; i < slides.length; i += 1) {\r\n var $slideEl = swiper.slides.eq(i);\r\n var offset = $slideEl[0].swiperSlideOffset;\r\n var tx = -offset;\r\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\r\n var ty = 0;\r\n\r\n if (!swiper.isHorizontal()) {\r\n ty = tx;\r\n tx = 0;\r\n }\r\n\r\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\r\n $slideEl.css({\r\n opacity: slideOpacity\r\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\r\n }\r\n },\r\n setTransition: function setTransition(duration) {\r\n var swiper = this;\r\n var slides = swiper.slides,\r\n $wrapperEl = swiper.$wrapperEl;\r\n slides.transition(duration);\r\n\r\n if (swiper.params.virtualTranslate && duration !== 0) {\r\n var eventTriggered = false;\r\n slides.transitionEnd(function () {\r\n if (eventTriggered) return;\r\n if (!swiper || swiper.destroyed) return;\r\n eventTriggered = true;\r\n swiper.animating = false;\r\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\r\n\r\n for (var i = 0; i < triggerEvents.length; i += 1) {\r\n $wrapperEl.trigger(triggerEvents[i]);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n var EffectFade = {\r\n name: 'effect-fade',\r\n params: {\r\n fadeEffect: {\r\n crossFade: false\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n fadeEffect: _extends({}, Fade)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (swiper.params.effect !== 'fade') return;\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\r\n var overwriteParams = {\r\n slidesPerView: 1,\r\n slidesPerColumn: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n spaceBetween: 0,\r\n virtualTranslate: true\r\n };\r\n extend$1(swiper.params, overwriteParams);\r\n extend$1(swiper.originalParams, overwriteParams);\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (swiper.params.effect !== 'fade') return;\r\n swiper.fadeEffect.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n if (swiper.params.effect !== 'fade') return;\r\n swiper.fadeEffect.setTransition(duration);\r\n }\r\n }\r\n };\r\n\r\n var Cube = {\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n var $el = swiper.$el,\r\n $wrapperEl = swiper.$wrapperEl,\r\n slides = swiper.slides,\r\n swiperWidth = swiper.width,\r\n swiperHeight = swiper.height,\r\n rtl = swiper.rtlTranslate,\r\n swiperSize = swiper.size,\r\n browser = swiper.browser;\r\n var params = swiper.params.cubeEffect;\r\n var isHorizontal = swiper.isHorizontal();\r\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\r\n var wrapperRotate = 0;\r\n var $cubeShadowEl;\r\n\r\n if (params.shadow) {\r\n if (isHorizontal) {\r\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\r\n\r\n if ($cubeShadowEl.length === 0) {\r\n $cubeShadowEl = $('
    ');\r\n $wrapperEl.append($cubeShadowEl);\r\n }\r\n\r\n $cubeShadowEl.css({\r\n height: swiperWidth + \"px\"\r\n });\r\n } else {\r\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\r\n\r\n if ($cubeShadowEl.length === 0) {\r\n $cubeShadowEl = $('
    ');\r\n $el.append($cubeShadowEl);\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < slides.length; i += 1) {\r\n var $slideEl = slides.eq(i);\r\n var slideIndex = i;\r\n\r\n if (isVirtual) {\r\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\r\n }\r\n\r\n var slideAngle = slideIndex * 90;\r\n var round = Math.floor(slideAngle / 360);\r\n\r\n if (rtl) {\r\n slideAngle = -slideAngle;\r\n round = Math.floor(-slideAngle / 360);\r\n }\r\n\r\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\r\n var tx = 0;\r\n var ty = 0;\r\n var tz = 0;\r\n\r\n if (slideIndex % 4 === 0) {\r\n tx = -round * 4 * swiperSize;\r\n tz = 0;\r\n } else if ((slideIndex - 1) % 4 === 0) {\r\n tx = 0;\r\n tz = -round * 4 * swiperSize;\r\n } else if ((slideIndex - 2) % 4 === 0) {\r\n tx = swiperSize + round * 4 * swiperSize;\r\n tz = swiperSize;\r\n } else if ((slideIndex - 3) % 4 === 0) {\r\n tx = -swiperSize;\r\n tz = 3 * swiperSize + swiperSize * 4 * round;\r\n }\r\n\r\n if (rtl) {\r\n tx = -tx;\r\n }\r\n\r\n if (!isHorizontal) {\r\n ty = tx;\r\n tx = 0;\r\n }\r\n\r\n var transform = \"rotateX(\" + (isHorizontal ? 0 : -slideAngle) + \"deg) rotateY(\" + (isHorizontal ? slideAngle : 0) + \"deg) translate3d(\" + tx + \"px, \" + ty + \"px, \" + tz + \"px)\";\r\n\r\n if (progress <= 1 && progress > -1) {\r\n wrapperRotate = slideIndex * 90 + progress * 90;\r\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\r\n }\r\n\r\n $slideEl.transform(transform);\r\n\r\n if (params.slideShadows) {\r\n // Set shadows\r\n var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\r\n var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\r\n\r\n if (shadowBefore.length === 0) {\r\n shadowBefore = $(\"
    \");\r\n $slideEl.append(shadowBefore);\r\n }\r\n\r\n if (shadowAfter.length === 0) {\r\n shadowAfter = $(\"
    \");\r\n $slideEl.append(shadowAfter);\r\n }\r\n\r\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\r\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\r\n }\r\n }\r\n\r\n $wrapperEl.css({\r\n '-webkit-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\r\n '-moz-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\r\n '-ms-transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\",\r\n 'transform-origin': \"50% 50% -\" + swiperSize / 2 + \"px\"\r\n });\r\n\r\n if (params.shadow) {\r\n if (isHorizontal) {\r\n $cubeShadowEl.transform(\"translate3d(0px, \" + (swiperWidth / 2 + params.shadowOffset) + \"px, \" + -swiperWidth / 2 + \"px) rotateX(90deg) rotateZ(0deg) scale(\" + params.shadowScale + \")\");\r\n } else {\r\n var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\r\n var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\r\n var scale1 = params.shadowScale;\r\n var scale2 = params.shadowScale / multiplier;\r\n var offset = params.shadowOffset;\r\n $cubeShadowEl.transform(\"scale3d(\" + scale1 + \", 1, \" + scale2 + \") translate3d(0px, \" + (swiperHeight / 2 + offset) + \"px, \" + -swiperHeight / 2 / scale2 + \"px) rotateX(-90deg)\");\r\n }\r\n }\r\n\r\n var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\r\n $wrapperEl.transform(\"translate3d(0px,0,\" + zFactor + \"px) rotateX(\" + (swiper.isHorizontal() ? 0 : wrapperRotate) + \"deg) rotateY(\" + (swiper.isHorizontal() ? -wrapperRotate : 0) + \"deg)\");\r\n },\r\n setTransition: function setTransition(duration) {\r\n var swiper = this;\r\n var $el = swiper.$el,\r\n slides = swiper.slides;\r\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\r\n\r\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\r\n $el.find('.swiper-cube-shadow').transition(duration);\r\n }\r\n }\r\n };\r\n var EffectCube = {\r\n name: 'effect-cube',\r\n params: {\r\n cubeEffect: {\r\n slideShadows: true,\r\n shadow: true,\r\n shadowOffset: 20,\r\n shadowScale: 0.94\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n cubeEffect: _extends({}, Cube)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (swiper.params.effect !== 'cube') return;\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"cube\");\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\r\n var overwriteParams = {\r\n slidesPerView: 1,\r\n slidesPerColumn: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n resistanceRatio: 0,\r\n spaceBetween: 0,\r\n centeredSlides: false,\r\n virtualTranslate: true\r\n };\r\n extend$1(swiper.params, overwriteParams);\r\n extend$1(swiper.originalParams, overwriteParams);\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (swiper.params.effect !== 'cube') return;\r\n swiper.cubeEffect.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n if (swiper.params.effect !== 'cube') return;\r\n swiper.cubeEffect.setTransition(duration);\r\n }\r\n }\r\n };\r\n\r\n var Flip = {\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n var slides = swiper.slides,\r\n rtl = swiper.rtlTranslate;\r\n\r\n for (var i = 0; i < slides.length; i += 1) {\r\n var $slideEl = slides.eq(i);\r\n var progress = $slideEl[0].progress;\r\n\r\n if (swiper.params.flipEffect.limitRotation) {\r\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\r\n }\r\n\r\n var offset = $slideEl[0].swiperSlideOffset;\r\n var rotate = -180 * progress;\r\n var rotateY = rotate;\r\n var rotateX = 0;\r\n var tx = -offset;\r\n var ty = 0;\r\n\r\n if (!swiper.isHorizontal()) {\r\n ty = tx;\r\n tx = 0;\r\n rotateX = -rotateY;\r\n rotateY = 0;\r\n } else if (rtl) {\r\n rotateY = -rotateY;\r\n }\r\n\r\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\r\n\r\n if (swiper.params.flipEffect.slideShadows) {\r\n // Set shadows\r\n var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\r\n var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\r\n\r\n if (shadowBefore.length === 0) {\r\n shadowBefore = $(\"
    \");\r\n $slideEl.append(shadowBefore);\r\n }\r\n\r\n if (shadowAfter.length === 0) {\r\n shadowAfter = $(\"
    \");\r\n $slideEl.append(shadowAfter);\r\n }\r\n\r\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\r\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\r\n }\r\n\r\n $slideEl.transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg)\");\r\n }\r\n },\r\n setTransition: function setTransition(duration) {\r\n var swiper = this;\r\n var slides = swiper.slides,\r\n activeIndex = swiper.activeIndex,\r\n $wrapperEl = swiper.$wrapperEl;\r\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\r\n\r\n if (swiper.params.virtualTranslate && duration !== 0) {\r\n var eventTriggered = false; // eslint-disable-next-line\r\n\r\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\r\n if (eventTriggered) return;\r\n if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\r\n\r\n eventTriggered = true;\r\n swiper.animating = false;\r\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\r\n\r\n for (var i = 0; i < triggerEvents.length; i += 1) {\r\n $wrapperEl.trigger(triggerEvents[i]);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n var EffectFlip = {\r\n name: 'effect-flip',\r\n params: {\r\n flipEffect: {\r\n slideShadows: true,\r\n limitRotation: true\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n flipEffect: _extends({}, Flip)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (swiper.params.effect !== 'flip') return;\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"flip\");\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\r\n var overwriteParams = {\r\n slidesPerView: 1,\r\n slidesPerColumn: 1,\r\n slidesPerGroup: 1,\r\n watchSlidesProgress: true,\r\n spaceBetween: 0,\r\n virtualTranslate: true\r\n };\r\n extend$1(swiper.params, overwriteParams);\r\n extend$1(swiper.originalParams, overwriteParams);\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (swiper.params.effect !== 'flip') return;\r\n swiper.flipEffect.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n if (swiper.params.effect !== 'flip') return;\r\n swiper.flipEffect.setTransition(duration);\r\n }\r\n }\r\n };\r\n\r\n var Coverflow = {\r\n setTranslate: function setTranslate() {\r\n var swiper = this;\r\n var swiperWidth = swiper.width,\r\n swiperHeight = swiper.height,\r\n slides = swiper.slides,\r\n slidesSizesGrid = swiper.slidesSizesGrid;\r\n var params = swiper.params.coverflowEffect;\r\n var isHorizontal = swiper.isHorizontal();\r\n var transform = swiper.translate;\r\n var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\r\n var rotate = isHorizontal ? params.rotate : -params.rotate;\r\n var translate = params.depth; // Each slide offset from center\r\n\r\n for (var i = 0, length = slides.length; i < length; i += 1) {\r\n var $slideEl = slides.eq(i);\r\n var slideSize = slidesSizesGrid[i];\r\n var slideOffset = $slideEl[0].swiperSlideOffset;\r\n var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\r\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\r\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\r\n\r\n var translateZ = -translate * Math.abs(offsetMultiplier);\r\n var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\r\n\r\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\r\n stretch = parseFloat(params.stretch) / 100 * slideSize;\r\n }\r\n\r\n var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\r\n var translateX = isHorizontal ? stretch * offsetMultiplier : 0;\r\n var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\r\n\r\n if (Math.abs(translateX) < 0.001) translateX = 0;\r\n if (Math.abs(translateY) < 0.001) translateY = 0;\r\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\r\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\r\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\r\n if (Math.abs(scale) < 0.001) scale = 0;\r\n var slideTransform = \"translate3d(\" + translateX + \"px,\" + translateY + \"px,\" + translateZ + \"px) rotateX(\" + rotateX + \"deg) rotateY(\" + rotateY + \"deg) scale(\" + scale + \")\";\r\n $slideEl.transform(slideTransform);\r\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\r\n\r\n if (params.slideShadows) {\r\n // Set shadows\r\n var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\r\n var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\r\n\r\n if ($shadowBeforeEl.length === 0) {\r\n $shadowBeforeEl = $(\"
    \");\r\n $slideEl.append($shadowBeforeEl);\r\n }\r\n\r\n if ($shadowAfterEl.length === 0) {\r\n $shadowAfterEl = $(\"
    \");\r\n $slideEl.append($shadowAfterEl);\r\n }\r\n\r\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\r\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\r\n }\r\n }\r\n },\r\n setTransition: function setTransition(duration) {\r\n var swiper = this;\r\n swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\r\n }\r\n };\r\n var EffectCoverflow = {\r\n name: 'effect-coverflow',\r\n params: {\r\n coverflowEffect: {\r\n rotate: 50,\r\n stretch: 0,\r\n depth: 100,\r\n scale: 1,\r\n modifier: 1,\r\n slideShadows: true\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n coverflowEffect: _extends({}, Coverflow)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n if (swiper.params.effect !== 'coverflow') return;\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"coverflow\");\r\n swiper.classNames.push(swiper.params.containerModifierClass + \"3d\");\r\n swiper.params.watchSlidesProgress = true;\r\n swiper.originalParams.watchSlidesProgress = true;\r\n },\r\n setTranslate: function setTranslate(swiper) {\r\n if (swiper.params.effect !== 'coverflow') return;\r\n swiper.coverflowEffect.setTranslate();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n if (swiper.params.effect !== 'coverflow') return;\r\n swiper.coverflowEffect.setTransition(duration);\r\n }\r\n }\r\n };\r\n\r\n var Thumbs = {\r\n init: function init() {\r\n var swiper = this;\r\n var thumbsParams = swiper.params.thumbs;\r\n if (swiper.thumbs.initialized) return false;\r\n swiper.thumbs.initialized = true;\r\n var SwiperClass = swiper.constructor;\r\n\r\n if (thumbsParams.swiper instanceof SwiperClass) {\r\n swiper.thumbs.swiper = thumbsParams.swiper;\r\n extend$1(swiper.thumbs.swiper.originalParams, {\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n });\r\n extend$1(swiper.thumbs.swiper.params, {\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n });\r\n } else if (isObject$1(thumbsParams.swiper)) {\r\n swiper.thumbs.swiper = new SwiperClass(extend$1({}, thumbsParams.swiper, {\r\n watchSlidesVisibility: true,\r\n watchSlidesProgress: true,\r\n slideToClickedSlide: false\r\n }));\r\n swiper.thumbs.swiperCreated = true;\r\n }\r\n\r\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\r\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\r\n return true;\r\n },\r\n onThumbClick: function onThumbClick() {\r\n var swiper = this;\r\n var thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper) return;\r\n var clickedIndex = thumbsSwiper.clickedIndex;\r\n var clickedSlide = thumbsSwiper.clickedSlide;\r\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\r\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\r\n var slideToIndex;\r\n\r\n if (thumbsSwiper.params.loop) {\r\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\r\n } else {\r\n slideToIndex = clickedIndex;\r\n }\r\n\r\n if (swiper.params.loop) {\r\n var currentIndex = swiper.activeIndex;\r\n\r\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\r\n swiper.loopFix(); // eslint-disable-next-line\r\n\r\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\r\n currentIndex = swiper.activeIndex;\r\n }\r\n\r\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\r\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\r\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\r\n }\r\n\r\n swiper.slideTo(slideToIndex);\r\n },\r\n update: function update(initial) {\r\n var swiper = this;\r\n var thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper) return;\r\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\r\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\r\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\r\n\r\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\r\n var currentThumbsIndex = thumbsSwiper.activeIndex;\r\n var newThumbsIndex;\r\n var direction;\r\n\r\n if (thumbsSwiper.params.loop) {\r\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\r\n thumbsSwiper.loopFix(); // eslint-disable-next-line\r\n\r\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\r\n currentThumbsIndex = thumbsSwiper.activeIndex;\r\n } // Find actual thumbs index to slide to\r\n\r\n\r\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\r\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\r\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;\r\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\r\n } else {\r\n newThumbsIndex = swiper.realIndex;\r\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\r\n }\r\n\r\n if (useOffset) {\r\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\r\n }\r\n\r\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\r\n if (thumbsSwiper.params.centeredSlides) {\r\n if (newThumbsIndex > currentThumbsIndex) {\r\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\r\n } else {\r\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\r\n }\r\n } else if (newThumbsIndex > currentThumbsIndex) {\r\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\r\n }\r\n\r\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\r\n }\r\n } // Activate thumbs\r\n\r\n\r\n var thumbsToActivate = 1;\r\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\r\n\r\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\r\n thumbsToActivate = swiper.params.slidesPerView;\r\n }\r\n\r\n if (!swiper.params.thumbs.multipleActiveThumbs) {\r\n thumbsToActivate = 1;\r\n }\r\n\r\n thumbsToActivate = Math.floor(thumbsToActivate);\r\n thumbsSwiper.slides.removeClass(thumbActiveClass);\r\n\r\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\r\n for (var i = 0; i < thumbsToActivate; i += 1) {\r\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\r\n }\r\n } else {\r\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\r\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\r\n }\r\n }\r\n }\r\n };\r\n var Thumbs$1 = {\r\n name: 'thumbs',\r\n params: {\r\n thumbs: {\r\n swiper: null,\r\n multipleActiveThumbs: true,\r\n autoScrollOffset: 0,\r\n slideThumbActiveClass: 'swiper-slide-thumb-active',\r\n thumbsContainerClass: 'swiper-container-thumbs'\r\n }\r\n },\r\n create: function create() {\r\n var swiper = this;\r\n bindModuleMethods(swiper, {\r\n thumbs: _extends({\r\n swiper: null,\r\n initialized: false\r\n }, Thumbs)\r\n });\r\n },\r\n on: {\r\n beforeInit: function beforeInit(swiper) {\r\n var thumbs = swiper.params.thumbs;\r\n if (!thumbs || !thumbs.swiper) return;\r\n swiper.thumbs.init();\r\n swiper.thumbs.update(true);\r\n },\r\n slideChange: function slideChange(swiper) {\r\n if (!swiper.thumbs.swiper) return;\r\n swiper.thumbs.update();\r\n },\r\n update: function update(swiper) {\r\n if (!swiper.thumbs.swiper) return;\r\n swiper.thumbs.update();\r\n },\r\n resize: function resize(swiper) {\r\n if (!swiper.thumbs.swiper) return;\r\n swiper.thumbs.update();\r\n },\r\n observerUpdate: function observerUpdate(swiper) {\r\n if (!swiper.thumbs.swiper) return;\r\n swiper.thumbs.update();\r\n },\r\n setTransition: function setTransition(swiper, duration) {\r\n var thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper) return;\r\n thumbsSwiper.setTransition(duration);\r\n },\r\n beforeDestroy: function beforeDestroy(swiper) {\r\n var thumbsSwiper = swiper.thumbs.swiper;\r\n if (!thumbsSwiper) return;\r\n\r\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\r\n thumbsSwiper.destroy();\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Swiper Class\r\n var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];\r\n Swiper.use(components);\r\n\r\n return Swiper;\r\n\r\n})));\r\n//# sourceMappingURL=swiper-bundle.js.map\r\n","(function($) {\r\n\t/*---------------\r\n\t\tMAIN MENU\r\n\t---------------*/\r\n\tvar $mainMenu = $('#main-menu').children('ul').children('li'),\r\n\t\t$submenuSmall = $('.submenu-small').children('li');\r\n\r\n\t$mainMenu.bind('mouseenter', showMenuDropdown);\r\n\t$mainMenu.bind('mouseleave', hideMenuDropdown);\r\n\r\n\tfunction hideMenuDropdown() {\r\n\t\t$(this)\r\n\t\t\t.children('ul')\r\n\t\t\t.stop()\r\n\t\t\t.animate({\r\n\t\t\t\topacity: 0,\r\n\t\t\t\theight: 'toggle'\r\n\t\t\t}, 300);\r\n\t}\r\n\r\n\tfunction showMenuDropdown() {\r\n\t\t$(this)\r\n\t\t\t.children('ul')\r\n\t\t\t.stop()\r\n\t\t\t.animate({\r\n\t\t\t\topacity: 1,\r\n\t\t\t\theight: 'toggle'\r\n\t\t\t}, 300);\r\n\t}\r\n\r\n\t/*------------------\r\n\t\tMOBILE MENU\r\n\t------------------*/\r\n\tvar $mobileMenu = $('.mobile-menu'),\r\n\t\t$pullNav = $('.pull-nav'),\r\n\t\t$selectableMenu = $mobileMenu.find('.selectable');\r\n\r\n\t\t$pullNav.bind('click', toggleMobileMenu);\r\n\r\n\t\tfunction toggleMobileMenu() {\r\n\t\t\tif($mobileMenu.hasClass('open')) {\r\n\t\t\t\t// Desktop enable scroll\r\n\t\t\t\t$('body').removeClass('no-scroll');\r\n\r\n\t\t\t\t// Mobile enable scroll\r\n\t\t\t\t// $('body').unbind('touchmove');\r\n\r\n\t\t\t\t// Hide dark cover\r\n\t\t\t\t$('.mobile-menu-cover').removeClass('visible');\r\n\t\t\t\t// Close mobile menu\r\n\t\t\t\t$mobileMenu.removeClass('open');\r\n\t\t\t} else {\r\n\t\t\t\t// Desktop disable scroll\r\n\t\t\t\t$('body').addClass('no-scroll');\r\n\r\n\t\t\t\t// Mobile disable scroll\r\n\t\t\t\t// $('body').bind('touchmove', function(e){e.preventDefault()});\r\n\r\n\t\t\t\t// Show dark cover\r\n\t\t\t\t$('.mobile-menu-cover').addClass('visible');\r\n\t\t\t\t// Open mobile menu\r\n\t\t\t\t$mobileMenu.addClass('open');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$mobileMenu.children('ul').children('li').bind('click', toggleMobileSubmenu);\r\n\r\n\t\tfunction toggleMobileSubmenu(e) {\r\n\t\t\tvar $me = $(this);\r\n\r\n\t\t\t$me.children('ul').slideToggle(300, 'swing');\r\n\t\t}\r\n\r\n\t\t$selectableMenu.children('li').bind('click', selectMenuOption);\r\n\r\n\t\tfunction selectMenuOption(e) {\r\n\t\t\tvar $me = $(this),\r\n\t\t\t\t$selectedOption = $me.children('a'),\r\n\t\t\t\tvalue = $selectedOption.text();\r\n\r\n\t\t\tif($me.hasClass('selected')) return;\r\n\r\n\t\t\tremoveMenuSelection($me.parent());\r\n\r\n\t\t\t$me.addClass('selected');\r\n\t\t\t$selectedOption.parents().eq(2).children('a').children('span').text(value);\r\n\t\t}\r\n\r\n\t\tfunction removeMenuSelection(menu) {\r\n\t\t\tmenu.children('li').each(function() {\r\n\t\t\t\t$(this).removeClass('selected');\r\n\t\t\t});\r\n\t\t}\r\n})(jQuery);\r\n","function pesquisacep(string){\r\n\tvar cep = string.replace(/\\D/g, '');\r\n\tif(cep != ''){\r\n\t\tvar validacep = /^[0-9]{8}$/;\r\n\t\tif(validacep.test(cep)){\r\n\t\t\t$('.logradouro').val('Carregando...');\r\n\t\t\t$('.bairro').val('Carregando...');\r\n\t\t\t$('.cidade').val('Carregando...');\r\n\t\t\t$('.uf').val('Carregando...');\r\n\t\t\tvar script = document.createElement('script');\r\n\t\t\tscript.src = 'https://viacep.com.br/ws/'+ cep + '/json/?callback=meu_callback';\r\n\t\t\tdocument.body.appendChild(script);\r\n\t\t}\r\n\t\telse{\r\n\t\t\tlimpa_formulario_cep();\r\n\t\t\talert('Formato de CEP inválido.');\r\n\t\t}\r\n\t}\r\n\telse\r\n\t\tlimpa_formulario_cep();\r\n}\r\n\r\nfunction limpa_formulario_cep(){\r\n\t$('.logradouro').val('');\r\n\t$('.bairro').val('');\r\n\t$('.cidade').val('');\r\n\t$('.uf').val('');\r\n}\r\n\r\nfunction meu_callback(conteudo) {\r\n\tif (!(\"erro\" in conteudo)){\r\n\t\t$('.logradouro').val(conteudo.logradouro).focus();\r\n\t\t$('.bairro').val(conteudo.bairro).focus();\r\n\t\t$('.cidade').val(conteudo.localidade).focus();\r\n\t\t$('.uf').val(conteudo.uf).focus();\r\n\t\t$('.numero').focus(); //VAI PARA DIGITAR O NÚMERO\r\n\t}\r\n\telse{\r\n\t\tlimpa_formulario_cep();\r\n\t\talert('CEP não encontrado.');\r\n\t}\r\n}","\r\n//banner\r\nvar swiper = new Swiper(\"#swiperBanner\", {\r\n\tspaceBetween: 0,\r\n\tcenteredSlides: true,\r\n\tautoplay: {\r\n\t\tdelay: 3000,\r\n\t\tdisableOnInteraction: false,\r\n\t},\r\n\tpagination: {\r\n\t\tel: \".swiper-pagination\",\r\n\t\tclickable: true,\r\n\t},\r\n\tnavigation: {\r\n\t\tnextEl: \".swiper-button-next\",\r\n\t\tprevEl: \".swiper-button-prev\",\r\n\t},\r\n});"]}