{"version":3,"file":"/assets/scripts/app.js","mappings":"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AEA,OAAO,IAAIL,EAAYA,EAAY5rE,OAAOue,GAC5C,EAEOqtD,CACT,IAEAlM,EAAGE,OAAO,qBAAqB,IAE5B,WA80BD,MA70BiB,CACf,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./src/scripts/vendors/select2-flip.js","webpack:///./src/scripts/helpers/lazy.js","webpack:///./src/scripts/helpers/helpers.js","webpack:///./src/scripts/helpers/popups.js","webpack:///./node_modules/sticky-sidebar-v2/src/sticky-sidebar.js","webpack:///./src/scripts/helpers/sidebar.js","webpack:///./src/scripts/helpers/select.js","webpack:///./src/scripts/blocks/product-filter.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./src/scripts/blocks/sliders.js","webpack:///./src/scripts/blocks/loadmore-posts.js","webpack:///./src/scripts/blocks/counter.js","webpack:///./src/scripts/app.js","webpack:///./src/scripts/blocks/accordion.js","webpack:///./src/scripts/blocks/contact-form.js","webpack:///./src/scripts/blocks/videos.js","webpack:///./src/scripts/helpers/map.js","webpack:///./src/scripts/helpers/read_more.js","webpack:///./src/scripts/sigle-product.js","webpack:///./src/scripts/vendors/jquery.ui.touch-punch.min.js","webpack:///./node_modules/jquery-ui/ui/ie.js","webpack:///./node_modules/jquery-ui/ui/keycode.js","webpack:///./node_modules/jquery-ui/ui/version.js","webpack:///./node_modules/jquery-ui/ui/widget.js","webpack:///./node_modules/jquery-ui/ui/widgets/mouse.js","webpack:///./node_modules/jquery-ui/ui/widgets/slider.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import 'select2';\r\n\r\n(function($) {\r\n\r\n var Defaults = $.fn.select2.amd.require('select2/defaults');\r\n\r\n $.extend(Defaults.defaults, {\r\n dropdownPosition: 'auto'\r\n });\r\n\r\n var AttachBody = $.fn.select2.amd.require('select2/dropdown/attachBody');\r\n\r\n var _positionDropdown = AttachBody.prototype._positionDropdown;\r\n\r\n AttachBody.prototype._positionDropdown = function() {\r\n\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n // Determine what the parent element is to use for calciulating the offset\r\n var $offsetParent = this.$dropdownParent;\r\n\r\n // For statically positoned elements, we need to get the element\r\n // that is determining the offset\r\n if ($offsetParent.css('position') === 'static') {\r\n $offsetParent = $offsetParent.offsetParent();\r\n }\r\n\r\n var parentOffset = $offsetParent.offset();\r\n\r\n css.top -= parentOffset.top\r\n css.left -= parentOffset.left;\r\n\r\n var dropdownPositionOption = this.options.get('dropdownPosition');\r\n\r\n if (dropdownPositionOption === 'above' || dropdownPositionOption === 'below') {\r\n newDirection = dropdownPositionOption;\r\n } else {\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - parentOffset.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n\r\n };\r\n\r\n})(window.jQuery);","// create array of elements which need animate in\r\nlet fade_in_els = $('.js-fade-in')\r\n$.each(fade_in_els, function () {\r\n $(this).addClass('js-fade-in')\r\n})\r\n\r\nlet imgSize = 'data-img-src'\r\nif (window.innerWidth <= 600) {\r\n imgSize = 'data-img-phone'\r\n} else if (window.innerWidth <= 1024) {\r\n imgSize = 'data-img-tablet'\r\n}\r\n\r\n// global function for using in popups or after ajax\r\nfunction loadElementLazyImage(elem) {\r\n let imgSrc = elem.attr(imgSize)\r\n let nodname = elem[0]['nodeName']\r\n let position = elem.data('img-position')\r\n if (!imgSrc) {\r\n imgSrc = elem.attr('data-img-src')\r\n }\r\n if (!position) position = 'center'\r\n\r\n if (nodname !== 'IMG' && nodname !== 'IFRAME') {\r\n elem.css('background', 'url(' + imgSrc + ') no-repeat ' + position)\r\n elem.css('background-size', 'cover')\r\n } else {\r\n elem.attr('src', imgSrc)\r\n }\r\n}\r\n\r\n\r\n// check if in screeen\r\nfunction isScrolledIntoView(elem, offset) {\r\n let docViewTop = $(window).scrollTop()\r\n let docViewBottom = docViewTop + $(window).height()\r\n let elemTop = elem.offset().top - offset\r\n let elemBottom = elemTop + elem.outerHeight() + (offset * 2)\r\n\r\n return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom))\r\n}\r\n\r\n// add element class when scrolled in screen\r\nfunction addClassWhenInScreen(elem, addClass, offset = -150) {\r\n let animateOffset = window.innerWidth >= 1000 ? offset : 0;\r\n if (isScrolledIntoView(elem, animateOffset) && elem.offsetParent !== null) {\r\n elem.addClass(addClass)\r\n }\r\n}\r\n\r\n\r\nfunction loadLazyImages() {\r\n let lazy_els = $('.js-lazy:not([src])');\r\n fade_in_els = $('.js-fade-in:not(.faded-in)')\r\n\r\n $.each(lazy_els, function (i, l) {\r\n if (isScrolledIntoView($(this), 600) && this.offsetParent !== null) {\r\n loadElementLazyImage($(this))\r\n }\r\n })\r\n\r\n // Animate in when in screen\r\n $.each(fade_in_els, function () {\r\n let offset = -100;\r\n\r\n if ($(this).hasClass('js-late-scroll')) offset = -300;\r\n\r\n addClassWhenInScreen($(this), 'faded-in', offset)\r\n })\r\n\r\n}\r\n\r\n$(window).scroll(function () {\r\n loadLazyImages()\r\n})\r\n$(window).resize(function () {\r\n loadLazyImages()\r\n})\r\n\r\n$(window).on('load', function () {\r\n loadLazyImages()\r\n})\r\n\r\nexport {loadElementLazyImage, isScrolledIntoView, loadLazyImages}\r\n","import {loadElementLazyImage} from \"./lazy\";\r\n\r\n$(document).ready(function () {\r\n let navigation = $('.js-header')\r\n if (window.innerWidth >= 1260 && navigation.length) {\r\n document.addEventListener('scroll', function (event) {\r\n resizeHeader(navigation)\r\n }, true);\r\n }\r\n})\r\n\r\nexport function getCookie(cname) {\r\n var name = cname + '='\r\n var decodedCookie = decodeURIComponent(document.cookie)\r\n var ca = decodedCookie.split(';')\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i]\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1)\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length)\r\n }\r\n }\r\n return ''\r\n}\r\n\r\nexport function setCookie(cname, cValue, exDays) {\r\n let d = new Date()\r\n d.setTime(d.getTime() + (exDays * 24 * 60 * 60 * 1000))\r\n let expires = 'expires=' + d.toUTCString()\r\n document.cookie = cname + '=' + cValue + ';' + expires + ';path=/'\r\n}\r\n\r\n$(\".js-scroll-down\").click(function () {\r\n let nextSection = $(this).closest('section').nextAll().first();\r\n\r\n let offset = 50;\r\n let navBarHeight = 152;\r\n if (nextSection.length) {\r\n // Extend the offset if the element isn't faded in, the adittional value is the top offset before the element is scrolled into view.\r\n if (!nextSection.hasClass('faded-in'))\r\n offset += 120\r\n $('html, body').animate({\r\n scrollTop: nextSection.offset().top - offset - navBarHeight\r\n }, 630);\r\n }\r\n\r\n});\r\n\r\n\r\n$(\".js-contact-card a\").click(function (e) {\r\n if (!$(this).parent().parent().hasClass(\"card-toggled\")) {\r\n e.preventDefault();\r\n }\r\n});\r\n\r\n$(\".js-contact-card\").hover(\r\n function () {\r\n let infoWrapper = $(this).find('.card--member__info-wrapper')\r\n let infoContent = $(this).find('.card--member__info-wrapper, .card--member__info-wrapper a')\r\n infoContent.fadeIn(250, function () {\r\n infoWrapper.addClass('card-toggled')\r\n });\r\n }, function () {\r\n let infoWrapper = $(this).find('.card--member__info-wrapper')\r\n let infoContent = $(this).find('.card--member__info-wrapper, .card--member__info-wrapper a')\r\n infoContent.fadeOut(250, function () {\r\n infoWrapper.removeClass('card-toggled')\r\n });\r\n }\r\n);\r\n\r\n$(\".js-contact-card\").click(function () {\r\n let infoWrapper = $(this).find('.card--member__info-wrapper')\r\n let infoContent = $(this).find('.card--member__info-wrapper, .card--member__info-wrapper a')\r\n infoContent.fadeIn(250, function () {\r\n infoWrapper.addClass('card-toggled')\r\n })\r\n});\r\n\r\nexport function hideOnClickOutside(selector, dropdown, slideToggle) {\r\n const outsideClickListener = (event) => {\r\n const $target = $(event.target);\r\n\r\n // Checking if the targeted element is not an ancestor of the selector and if the dropdown is visible, hide it\r\n // and remove the listener, for off selector clicks.\r\n if (!$target.closest(selector).length && $(dropdown).is(':visible')) {\r\n $(selector).removeClass('opened');\r\n if (slideToggle) {\r\n dropdown.slideUp(300)\r\n }\r\n document.removeEventListener('click', outsideClickListener)\r\n }\r\n }\r\n\r\n // const removeClickListener = () => {\r\n // document.removeEventListener('click', outsideClickListener)\r\n // }\r\n\r\n document.addEventListener('click', outsideClickListener)\r\n}\r\n\r\nfunction resizeHeader(navigation) {\r\n var scroll = $(window).scrollTop();\r\n var topOffset = 500;\r\n\r\n if (scroll >= topOffset) {\r\n navigation.addClass('js-header-small')\r\n } else {\r\n navigation.removeClass('js-header-small')\r\n }\r\n}","import {setCookie, getCookie} from './helpers'\r\nimport {hideOnClickOutside} from './helpers'\r\nimport {loadLazyImages} from '../helpers/lazy'\r\n\r\n$('.js-toggle-menu').on('click', function (e) {\r\n $('body, html').toggleClass('modal-open mobile-menu-open')\r\n $('.js-mobile-menu').fadeToggle(300);\r\n});\r\n\r\n\r\n\r\nif (window.innerWidth < 1260) {\r\n $('.js-nav-dropdown').on('click', function (e) {\r\n let parent = $(this);\r\n let dropdown = $(this).find('.js-dropdown')\r\n let slideToggle = parent.hasClass('js-dropdown-slide-toggle')\r\n\r\n parent.toggleClass('opened')\r\n\r\n if (slideToggle) {\r\n dropdown.slideToggle(300)\r\n }\r\n\r\n hideOnClickOutside(parent, dropdown, slideToggle)\r\n });\r\n\r\n} else {\r\n\r\n $('.js-nav-dropdown').on('mouseenter', function (e) {\r\n let parent = $(this);\r\n let dropdown = $(this).find('.js-dropdown')\r\n let slideToggle = parent.hasClass('js-dropdown-slide-toggle')\r\n\r\n parent.addClass('opened')\r\n dropdown.slideDown(300)\r\n hideOnClickOutside(parent, dropdown, slideToggle)\r\n });\r\n $('.js-nav-dropdown .js-dropdown').on('mouseleave', function (e) {\r\n let parent = $(this).closest('.js-nav-dropdown')\r\n let dropdown = $(this)\r\n\r\n parent.removeClass('opened')\r\n dropdown.slideUp(300)\r\n });\r\n}\r\n\r\n$('.js-toggle-search').on('click', function () {\r\n $('.js-modal-cover').fadeToggle(470)\r\n $('.js-search').slideToggle(470)\r\n $('.js-search').toggleClass('js-opened-popup')\r\n $(\".js-search-input\").focus();\r\n});\r\n\r\n$('.js-modal-cover').on('click', function () {\r\n $('body').removeClass('modal-open')\r\n $('.js-modal-cover').fadeOut(470)\r\n $('.js-search').slideUp(470)\r\n});\r\n\r\n$(document).ready(function () {\r\n // setTimeout(function () {\r\n // if (!getCookie('cookies_accepted') && !getCookie('cookies_denied')) {\r\n // $('.js-cookies').fadeOut(300);\r\n // }\r\n // }, 3000);\r\n\r\n // setTimeout(function () {\r\n // if (!getCookie('cookies_accepted') && !getCookie('cookies_denied')) {\r\n // $('.js-cookies').fadeIn(300);\r\n // }\r\n // }, 3000);\r\n //\r\n //\r\n // $('.js-cookies-accept').on('click', function (e) {\r\n // e.preventDefault()\r\n // setCookie('cookies_accepted', 1, 30)\r\n // $('.js-cookies').fadeOut(300);\r\n // });\r\n //\r\n // $('.js-cookies-decline').on('click', function (e) {\r\n // e.preventDefault()\r\n // setCookie('cookies_denied', 1, 30)\r\n // $('.js-cookies').fadeOut(300);\r\n // });\r\n\r\n});\r\n\r\n// For product gallery popup\r\n\r\n$('.js-open-gallery-popup').click(function(){\r\n console.log('clicked')\r\n openPopup($('.js-gallery-popup'))\r\n\r\n let swiperInstance = $('.js-swiper-gallery-popup')\r\n swiperInstance[0].swiper.slideTo($('.js-swiper-gallery-with-popup')[0].swiper.realIndex + 1)\r\n loadLazyImages()\r\n\r\n})\r\n\r\n$('.js-close-popup').click(function(){\r\n closePopup($(this).closest('.js-popup'))\r\n})\r\n\r\n$('.popup').click(function(e){\r\n let target = $(e.target)\r\n if (target.hasClass('popup-flex'))\r\n closePopup(target.closest('.js-popup'))\r\n})\r\n\r\n$(document).keyup(function(e) {\r\n if (e.key === \"Escape\") { // escape key maps to keycode `27`\r\n closePopup($('.js-popup'))\r\n }\r\n});\r\n\r\nfunction openPopup(popup){\r\n popup.fadeIn()\r\n $('html').addClass('modal-open')\r\n}\r\n\r\nfunction closePopup(popup){\r\n popup.fadeOut()\r\n $('html').removeClass('modal-open')\r\n}\r\n\r\n\r\n\r\n\r\n","/**\n * Sticky Sidebar v2 JavaScript Plugin.\n * @version 1.0.1\n * @author Øystein Blixhavn \n * @license The MIT License (MIT)\n */\nconst StickySidebar = (() => {\n\n // ---------------------------------\n // # Define Constants\n // ---------------------------------\n //\n const EVENT_KEY = '.stickySidebar';\n const VERSION = '1.0.1';\n\n const DEFAULTS = {\n /**\n * Additional top spacing of the element when it becomes sticky.\n * @type {Numeric|Function}\n */\n topSpacing: 0,\n\n /**\n * Additional bottom spacing of the element when it becomes sticky.\n * @type {Numeric|Function}\n */\n bottomSpacing: 0,\n\n /**\n * Container sidebar selector to know what the beginning and end of sticky element.\n * @type {String|False}\n */\n containerSelector: false,\n\n /**\n * Parent element where the scrolling happens.\n */\n scrollContainer: false,\n\n /**\n * Inner wrapper selector.\n * @type {String}\n */\n innerWrapperSelector: '.inner-wrapper-sticky',\n\n /**\n * The name of CSS class to apply to elements when they have become stuck.\n * @type {String|False}\n */\n stickyClass: 'is-affixed',\n\n /**\n * The sidebar returns to its normal position if its width below this value.\n * @type {Numeric}\n */\n minWidth: false\n };\n\n // ---------------------------------\n // # Class Definition\n // ---------------------------------\n //\n /**\n * Sticky Sidebar Class.\n * @public\n */\n class StickySidebar{\n\n /**\n * Sticky Sidebar Constructor.\n * @constructor\n * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\n * @param {Object} options - The options of sticky sidebar.\n */\n constructor(sidebar, options = {}){\n this.options = StickySidebar.extend(DEFAULTS, options);\n\n // Sidebar element query if there's no one, throw error.\n this.sidebar = ('string' === typeof sidebar ) ? document.querySelector(sidebar) : sidebar;\n if( 'undefined' === typeof this.sidebar )\n throw new Error(\"There is no specific sidebar element.\");\n\n this.sidebarInner = false;\n this.container = this.sidebar.parentElement;\n\n // Current Affix Type of sidebar element.\n this.affixedType = 'STATIC';\n this.direction = 'down';\n this.support = {\n transform: false,\n transform3d: false\n };\n\n this._initialized = false;\n this._reStyle = false;\n this._breakpoint = false;\n\n // Dimensions of sidebar, container and screen viewport.\n this.dimensions = {\n translateY: 0,\n maxTranslateY: 0,\n topSpacing: 0,\n lastTopSpacing: 0,\n bottomSpacing: 0,\n lastBottomSpacing: 0,\n sidebarHeight: 0,\n sidebarWidth: 0,\n containerTop: 0,\n containerHeight: 0,\n viewportHeight: 0,\n viewportTop: 0,\n lastViewportTop: 0,\n };\n\n // Bind event handlers for referencability.\n ['handleEvent'].forEach( (method) => {\n this[method] = this[method].bind(this);\n });\n\n // Initialize sticky sidebar for first time.\n this.initialize();\n }\n\n /**\n * Initializes the sticky sidebar by adding inner wrapper, define its container,\n * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\n * @private\n */\n initialize(){\n this._setSupportFeatures();\n\n // Get sticky sidebar inner wrapper, if not found, will create one.\n if( this.options.innerWrapperSelector ){\n this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\n\n if( null === this.sidebarInner )\n this.sidebarInner = false;\n }\n\n if( ! this.sidebarInner ){\n let wrapper = document.createElement('div');\n wrapper.setAttribute('class', 'inner-wrapper-sticky');\n this.sidebar.appendChild(wrapper);\n\n while( this.sidebar.firstChild != wrapper )\n wrapper.appendChild(this.sidebar.firstChild);\n\n this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\n }\n\n // Container wrapper of the sidebar.\n if( this.options.containerSelector ){\n let containers = document.querySelectorAll(this.options.containerSelector);\n containers = Array.prototype.slice.call(containers);\n\n containers.forEach((container, item) => {\n if( ! container.contains(this.sidebar) ) return;\n this.container = container;\n });\n\n if( ! containers.length )\n throw new Error(\"The container does not contains on the sidebar.\");\n }\n\n // Get scroll container, if provided\n this.scrollContainer = this.options.scrollContainer ? document.querySelector(this.options.scrollContainer) : undefined;\n\n // If top/bottom spacing is not function parse value to integer.\n if( 'function' !== typeof this.options.topSpacing )\n this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\n\n if( 'function' !== typeof this.options.bottomSpacing )\n this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\n\n // Breakdown sticky sidebar if screen width below `options.minWidth`.\n this._widthBreakpoint();\n\n // Calculate dimensions of sidebar, container and viewport.\n this.calcDimensions();\n\n // Affix sidebar in proper position.\n this.stickyPosition();\n\n // Bind all events.\n this.bindEvents();\n\n // Inform other properties the sticky sidebar is initialized.\n this._initialized = true;\n }\n\n /**\n * Bind all events of sticky sidebar plugin.\n * @protected\n */\n bindEvents(){\n this.eventTarget = this.scrollContainer ? this.scrollContainer : window;\n\n this.eventTarget.addEventListener('resize', this, { passive: true, capture: false });\n this.eventTarget.addEventListener('scroll', this, { passive: true, capture: false });\n\n this.sidebar.addEventListener('update' + EVENT_KEY, this);\n\n if( 'undefined' !== typeof ResizeObserver ){\n const resizeObserver = new ResizeObserver(() => this.handleEvent())\n resizeObserver.observe(this.sidebarInner)\n resizeObserver.observe(this.container)\n }\n }\n\n /**\n * Handles all events of the plugin.\n * @param {Object} event - Event object passed from listener.\n */\n handleEvent(event){\n this.updateSticky(event);\n }\n\n /**\n * Calculates dimensions of sidebar, container and screen viewpoint\n * @public\n */\n calcDimensions(){\n if( this._breakpoint ) return;\n var dims = this.dimensions;\n\n // Container of sticky sidebar dimensions.\n dims.containerTop = StickySidebar.offsetRelative(this.container).top;\n dims.containerHeight = this.container.clientHeight;\n dims.containerBottom = dims.containerTop + dims.containerHeight;\n\n // Sidebar dimensions.\n dims.sidebarHeight = this.sidebarInner.offsetHeight;\n dims.sidebarWidth = this.sidebarInner.offsetWidth;\n\n // Screen viewport dimensions.\n dims.viewportHeight = window.innerHeight;\n\n // Maximum sidebar translate Y.\n dims.maxTranslateY = dims.containerHeight - dims.sidebarHeight;\n\n this._calcDimensionsWithScroll();\n }\n\n /**\n * Some dimensions values need to be up-to-date when scrolling the page.\n * @private\n */\n _calcDimensionsWithScroll(){\n var dims = this.dimensions;\n\n dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\n\n if (this.scrollContainer) {\n dims.viewportTop = this.scrollContainer.scrollTop;\n dims.viewportLeft = this.scrollContainer.scrollLeft;\n } else {\n dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\n dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n }\n dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\n\n dims.topSpacing = this.options.topSpacing;\n dims.bottomSpacing = this.options.bottomSpacing;\n\n if( 'function' === typeof dims.topSpacing )\n dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\n\n if( 'function' === typeof dims.bottomSpacing )\n dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\n\n if( 'VIEWPORT-TOP' === this.affixedType ){\n // Adjust translate Y in the case decrease top spacing value.\n if( dims.topSpacing < dims.lastTopSpacing ){\n dims.translateY += dims.lastTopSpacing - dims.topSpacing;\n this._reStyle = true;\n }\n } else if( 'VIEWPORT-BOTTOM' === this.affixedType ){\n // Adjust translate Y in the case decrease bottom spacing value.\n if( dims.bottomSpacing < dims.lastBottomSpacing ){\n dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\n this._reStyle = true;\n }\n }\n\n dims.lastTopSpacing = dims.topSpacing;\n dims.lastBottomSpacing = dims.bottomSpacing;\n }\n\n /**\n * Determine whether the sidebar is bigger than viewport.\n * @public\n * @return {Boolean}\n */\n isSidebarFitsViewport() {\n return this.dimensions.viewportHeight >= (\n this.dimensions.lastBottomSpacing +\n this.dimensions.lastTopSpacing +\n this.dimensions.sidebarHeight\n );\n }\n\n /**\n * Observe browser scrolling direction top and down.\n */\n observeScrollDir(){\n var dims = this.dimensions;\n if( dims.lastViewportTop === dims.viewportTop ) return;\n\n var furthest = 'down' === this.direction ? Math.min : Math.max;\n\n // If the browser is scrolling not in the same direction.\n if( dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop) )\n this.direction = 'down' === this.direction ? 'up' : 'down';\n }\n\n /**\n * Gets affix type of sidebar according to current scroll top and scrolling direction.\n * @public\n * @return {String|False} - Proper affix type.\n */\n getAffixType(){\n this._calcDimensionsWithScroll();\n var dims = this.dimensions;\n var colliderTop = dims.viewportTop + dims.topSpacing;\n var affixType = this.affixedType;\n\n if( colliderTop <= dims.containerTop || dims.containerHeight <= dims.sidebarHeight ){\n dims.translateY = 0;\n affixType = 'STATIC';\n } else {\n affixType = ( 'up' === this.direction ) ?\n this._getAffixTypeScrollingUp() : this._getAffixTypeScrollingDown();\n }\n\n // Make sure the translate Y is not bigger than container height.\n dims.translateY = Math.max(0, dims.translateY);\n dims.translateY = Math.min(dims.containerHeight, dims.translateY);\n dims.translateY = Math.round(dims.translateY);\n\n dims.lastViewportTop = dims.viewportTop;\n return affixType;\n }\n\n /**\n * Get affix type while scrolling down.\n * @private\n * @return {String} - Proper affix type of scrolling down direction.\n */\n _getAffixTypeScrollingDown(){\n var dims = this.dimensions;\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\n var colliderTop = dims.viewportTop + dims.topSpacing;\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\n var affixType = this.affixedType;\n\n if( this.isSidebarFitsViewport() ){\n if( dims.sidebarHeight + colliderTop >= dims.containerBottom ){\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n\n } else if( colliderTop >= dims.containerTop ){\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n }\n } else {\n if( dims.containerBottom <= colliderBottom ){\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n\n } else if( sidebarBottom + dims.translateY <= colliderBottom ){\n dims.translateY = colliderBottom - sidebarBottom;\n affixType = 'VIEWPORT-BOTTOM';\n\n } else if( dims.containerTop + dims.translateY <= colliderTop &&\n (0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) ){\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n }\n\n return affixType;\n }\n\n /**\n * Get affix type while scrolling up.\n * @private\n * @return {String} - Proper affix type of scrolling up direction.\n */\n _getAffixTypeScrollingUp(){\n var dims = this.dimensions;\n var sidebarBottom = dims.sidebarHeight + dims.containerTop;\n var colliderTop = dims.viewportTop + dims.topSpacing;\n var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\n var affixType = this.affixedType;\n\n if( colliderTop <= dims.translateY + dims.containerTop ){\n dims.translateY = colliderTop - dims.containerTop;\n affixType = 'VIEWPORT-TOP';\n\n } else if( dims.containerBottom <= colliderBottom ){\n dims.translateY = dims.containerBottom - sidebarBottom;\n affixType = 'CONTAINER-BOTTOM';\n\n } else if( ! this.isSidebarFitsViewport() ){\n\n if( dims.containerTop <= colliderTop &&\n (0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) ){\n affixType = 'VIEWPORT-UNBOTTOM';\n }\n }\n\n return affixType;\n }\n\n /**\n * Gets inline style of sticky sidebar wrapper and inner wrapper according\n * to its affix type.\n * @private\n * @param {String} affixType - Affix type of sticky sidebar.\n * @return {Object}\n */\n _getStyle(affixType){\n if( 'undefined' === typeof affixType ) return;\n\n var style = {inner: {}, outer: {}};\n var dims = this.dimensions;\n\n switch( affixType ){\n case 'VIEWPORT-TOP':\n style.inner = {position: 'fixed', top: dims.topSpacing,\n left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth};\n break;\n case 'VIEWPORT-BOTTOM':\n style.inner = {position: 'fixed', top: 'auto', left: dims.sidebarLeft,\n bottom: dims.bottomSpacing, width: dims.sidebarWidth};\n break;\n case 'CONTAINER-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n let translate = this._getTranslate(0, dims.translateY + 'px');\n\n if( translate )\n style.inner = {transform: translate};\n else\n style.inner = {position: 'absolute', top: dims.translateY, width: dims.sidebarWidth};\n break;\n }\n\n switch( affixType ){\n case 'VIEWPORT-TOP':\n case 'VIEWPORT-BOTTOM':\n case 'VIEWPORT-UNBOTTOM':\n case 'CONTAINER-BOTTOM':\n style.outer = {height: dims.sidebarHeight, position: 'relative'};\n break;\n }\n\n style.outer = StickySidebar.extend({height: '', position: ''}, style.outer);\n style.inner = StickySidebar.extend({position: 'relative', top: '', left: '',\n bottom: '', width: '', transform: ''}, style.inner);\n\n return style;\n }\n\n /**\n * Cause the sidebar to be sticky according to affix type by adding inline\n * style, adding helper class and trigger events.\n * @function\n * @protected\n * @param {string} force - Update sticky sidebar position by force.\n */\n stickyPosition(force){\n if( this._breakpoint ) return;\n\n force = this._reStyle || force || false;\n\n var offsetTop = this.options.topSpacing;\n var offsetBottom = this.options.bottomSpacing;\n\n var affixType = this.getAffixType();\n var style = this._getStyle(affixType);\n\n if( (this.affixedType != affixType || force) && affixType ){\n let affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixEvent);\n\n if( 'STATIC' === affixType )\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\n else\n StickySidebar.addClass(this.sidebar, this.options.stickyClass);\n\n for( let key in style.outer ){\n let unit = ('number' === typeof style.outer[key]) ? 'px' : '';\n this.sidebar.style[key] = style.outer[key] + unit;\n }\n\n for( let key in style.inner ){\n let unit = ('number' === typeof style.inner[key]) ? 'px' : '';\n this.sidebarInner.style[key] = style.inner[key] + unit;\n }\n\n let affixedEvent = 'affixed.'+ affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n StickySidebar.eventTrigger(this.sidebar, affixedEvent);\n } else {\n if( this._initialized ) this.sidebarInner.style.left = style.inner.left;\n }\n\n this.affixedType = affixType;\n }\n\n /**\n * Breakdown sticky sidebar when window width is below `options.minWidth` value.\n * @protected\n */\n _widthBreakpoint(){\n\n if( window.innerWidth <= this.options.minWidth ){\n this._breakpoint = true;\n this.affixedType = 'STATIC';\n\n this.sidebar.removeAttribute('style');\n StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\n this.sidebarInner.removeAttribute('style');\n } else {\n this._breakpoint = false;\n }\n }\n\n /**\n * Switches between functions stack for each event type, if there's no\n * event, it will re-initialize sticky sidebar.\n * @public\n */\n updateSticky(event = {}){\n if( this._running ) return;\n this._running = true;\n\n ((eventType) => {\n requestAnimationFrame(() => {\n switch( eventType ){\n // When browser is scrolling and re-calculate just dimensions\n // within scroll.\n case 'scroll':\n this._calcDimensionsWithScroll();\n this.observeScrollDir();\n this.stickyPosition();\n break;\n\n // When browser is resizing or there's no event, observe width\n // breakpoint and re-calculate dimensions.\n case 'resize':\n default:\n this._widthBreakpoint();\n this.calcDimensions();\n this.stickyPosition(true);\n break;\n }\n this._running = false;\n });\n })(event.type);\n }\n\n /**\n * Set browser support features to the public property.\n * @private\n */\n _setSupportFeatures(){\n var support = this.support;\n\n support.transform = StickySidebar.supportTransform();\n support.transform3d = StickySidebar.supportTransform(true);\n }\n\n /**\n * Get translate value, if the browser supports transfrom3d, it will adopt it.\n * and the same with translate. if browser doesn't support both return false.\n * @param {Number} y - Value of Y-axis.\n * @param {Number} x - Value of X-axis.\n * @param {Number} z - Value of Z-axis.\n * @return {String|False}\n */\n _getTranslate(y = 0, x = 0, z = 0){\n if( this.support.transform3d ) return 'translate3d(' + y +', '+ x +', '+ z +')';\n else if( this.support.translate ) return 'translate('+ y +', '+ x +')';\n else return false;\n }\n\n /**\n * Destroy sticky sidebar plugin.\n * @public\n */\n destroy(){\n window.removeEventListener('resize', this, {capture: false});\n window.removeEventListener('scroll', this, {capture: false});\n\n this.sidebar.classList.remove(this.options.stickyClass);\n this.sidebar.style.minHeight = '';\n\n this.sidebar.removeEventListener('update' + EVENT_KEY, this);\n\n var styleReset = {inner: {}, outer: {}};\n\n styleReset.inner = {position: '', top: '', left: '', bottom: '', width: '', transform: ''};\n styleReset.outer = {height: '', position: ''};\n\n for( let key in styleReset.outer )\n this.sidebar.style[key] = styleReset.outer[key];\n\n for( let key in styleReset.inner )\n this.sidebarInner.style[key] = styleReset.inner[key];\n\n if( this.options.resizeSensor && 'undefined' !== typeof ResizeSensor ){\n ResizeSensor.detach(this.sidebarInner, this.handleEvent);\n ResizeSensor.detach(this.container, this.handleEvent);\n }\n }\n\n /**\n * Determine if the browser supports CSS transform feature.\n * @function\n * @static\n * @param {Boolean} transform3d - Detect transform with translate3d.\n * @return {String}\n */\n static supportTransform(transform3d){\n var result = false,\n property = (transform3d) ? 'perspective' : 'transform',\n upper = property.charAt(0).toUpperCase() + property.slice(1),\n prefixes = ['Webkit', 'Moz', 'O', 'ms'],\n support = document.createElement('support'),\n style = support.style;\n\n (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function(property, i) {\n if (style[property] !== undefined) {\n result = property;\n return false;\n }\n });\n return result;\n }\n\n /**\n * Trigger custom event.\n * @static\n * @param {DOMObject} element - Target element on the DOM.\n * @param {String} eventName - Event name.\n * @param {Object} data -\n */\n static eventTrigger(element, eventName, data){\n try{\n var event = new CustomEvent(eventName, {detail: data});\n } catch(e){\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, data);\n }\n element.dispatchEvent(event);\n }\n\n /**\n * Extend options object with defaults.\n * @function\n * @static\n */\n static extend(defaults, options){\n var results = {};\n for( let key in defaults ){\n if( 'undefined' !== typeof options[key] ) results[key] = options[key];\n else results[key] = defaults[key];\n }\n return results;\n }\n\n /**\n * Get current coordinates left and top of specific element.\n * @static\n */\n static offsetRelative(element){\n var result = {left: 0, top: 0};\n\n do{\n let offsetTop = element.offsetTop;\n let offsetLeft = element.offsetLeft;\n\n if( ! isNaN(offsetTop) )\n result.top += offsetTop;\n\n if( ! isNaN(offsetLeft) )\n result.left += offsetLeft;\n\n element = ( 'BODY' === element.tagName ) ?\n element.parentElement : element.offsetParent;\n } while(element)\n return result;\n }\n\n /**\n * Add specific class name to specific element.\n * @static\n * @param {ObjectDOM} element\n * @param {String} className\n */\n static addClass(element, className){\n if( ! StickySidebar.hasClass(element, className) ){\n if (element.classList)\n element.classList.add(className);\n else\n element.className += ' ' + className;\n }\n }\n\n /**\n * Remove specific class name to specific element\n * @static\n * @param {ObjectDOM} element\n * @param {String} className\n */\n static removeClass(element, className){\n if( StickySidebar.hasClass(element, className) ){\n if (element.classList)\n element.classList.remove(className);\n else\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n /**\n * Determine weather the element has specific class name.\n * @static\n * @param {ObjectDOM} element\n * @param {String} className\n */\n static hasClass(element, className){\n if (element.classList)\n return element.classList.contains(className);\n else\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n\n /**\n * Gets default values of configuration options.\n * @static\n * @return {Object}\n */\n static get defaults(){\n return DEFAULTS;\n }\n }\n\n return StickySidebar;\n })();\n\n export default StickySidebar;\n\n // Global\n // -------------------------\n window.StickySidebar = StickySidebar;\n","import 'sticky-sidebar-v2/src/sticky-sidebar';\r\n\r\nvar sidebar = 0;\r\nvar W = window.innerWidth;\r\n\r\nvar conf = {\r\n topSpacing: 152,\r\n bottomSpacing: 0,\r\n containerSelector: '.product-filter__side',\r\n innerWrapperSelector: '.product-filter__filter',\r\n}\r\n\r\nif ($(\"#sidebar\").length > 0) {\r\n sidebar = new StickySidebar('#sidebar', conf)\r\n\r\n setTimeout(function () {\r\n sidebar.updateSticky()\r\n }, 500);\r\n\r\n $(document).on( 'scroll', function(){\r\n // console.log(sidebar)\r\n var st = $(this).scrollTop();\r\n\r\n if (sidebar.affixedType == \"VIEWPORT-TOP\") {\r\n $(\".product-filter__filter\").addClass(\"is-top\")\r\n } else {\r\n $(\".product-filter__filter\").removeClass(\"is-top\")\r\n }\r\n\r\n if (sidebar.affixedType == \"CONTAINER-BOTTOM\") {\r\n $(\".product-filter__filter\").addClass(\"is-bottom\")\r\n } else {\r\n $(\".product-filter__filter\").removeClass(\"is-bottom\")\r\n }\r\n\r\n sidebar.updateSticky()\r\n });\r\n\r\n}","import 'select2';\r\n\r\n$(document).ready(function() {\r\n $(\".js-select\").select2({\r\n width: '100%',\r\n dropdownPosition: 'below'\r\n });\r\n});","import 'jquery-ui/ui/widgets/slider'\r\nimport 'jquery-ui/ui/widgets/mouse'\r\nimport '../vendors/jquery.ui.touch-punch.min'\r\n\r\nimport {loadElementLazyImage} from \"../helpers/lazy\";\r\n\r\n\r\n\r\nexport function setValuesSliderHandles(slider, min_val, max_val) {\r\n slider.find('.js-min-slider-val-text span').text(min_val)\r\n slider.find('.js-max-slider-val-text span').text(max_val)\r\n}\r\n\r\nif ($('.js-values-slider').length) {\r\n $('.js-values-slider').each(function (index, el) {\r\n let $slider = $(this)\r\n\r\n let step = $slider.data('step')\r\n let values = []\r\n let min = Number($slider.data('min'))\r\n let max = Number($slider.data('max'))\r\n values = [min, max]\r\n\r\n $slider.slider({\r\n range: true,\r\n orientation: 'horizontal',\r\n min: min,\r\n max: max,\r\n values: values,\r\n step: step,\r\n stop: function (event, ui) {\r\n //set new filter values\r\n let filter = $(this).data('filter')\r\n filters[filter] = [ui.values[0], ui.values[1]]\r\n\r\n // load filtered products\r\n getProducts(data, filters, \"init\");\r\n },\r\n slide: function (event, ui) {\r\n setValuesSliderHandles($(this), ui.values[0], ui.values[1])\r\n\r\n },\r\n create: function (event, ui) {\r\n let me = $(this);\r\n\r\n // Set values and titles\r\n if (me.hasClass('js-price') && filters.price) {\r\n me.slider('values', 0, filters.price[0])\r\n me.slider('values', 1, filters.price[1])\r\n setValuesSliderHandles(me, filters.price[0], filters.price[1])\r\n }\r\n\r\n if (me.hasClass('js-area') && filters.area) {\r\n me.slider('values', 0, filters.area[0])\r\n me.slider('values', 1, filters.area[1])\r\n setValuesSliderHandles(me, filters.area[0], filters.area[1])\r\n }\r\n\r\n if (me.hasClass('js-wall') && filters.walls_values) {\r\n me.slider('values', 0, filters.walls_values[0])\r\n me.slider('values', 1, filters.walls_values[1])\r\n setValuesSliderHandles(me, filters.walls_values[0], filters.walls_values[1])\r\n }\r\n\r\n\r\n }\r\n })\r\n\r\n })\r\n}\r\n\r\n\r\n// Change roof type\r\n$(document).on(\"change\", \".js-roof-type-checkbox\", function () {\r\n let checkboxes = $('.js-roof-type-checkbox')\r\n let checkedArr = []\r\n\r\n checkboxes.each(function(){\r\n if ($(this).is(':checked')) checkedArr.push(parseInt( $(this).val() ));\r\n })\r\n filters.selected_roofs = checkedArr\r\n\r\n getProducts(data, filters, \"init\")\r\n});\r\n\r\n\r\n$(document).on(\"click tap\", \".js-load-more-products\", function () {\r\n let offset = $(\".product-item\").length;\r\n data.offset = offset;\r\n filters.page = filters.page + 1\r\n\r\n getProducts(data, filters, \"loadMore\")\r\n\r\n});\r\n\r\n\r\n// Phone category select\r\n$('.js-product-filter-select').change(function () {\r\n let selected = $('.js-product-filter-select').find(':selected')\r\n let url = selected.data('archive-link')\r\n window.location.href = url;\r\n});\r\n\r\n\r\n\r\n\r\n// Ajax getProducts\r\nexport function getProducts(data, filters, type) {\r\n let loadMoreButton = $('.js-load-more-products')\r\n let loader = $('.js-products-loader')\r\n\r\n // if changed filter not load more reset page and offset\r\n if (type === 'init'){\r\n filters.page = 1\r\n data.offset = 0\r\n }\r\n\r\n updateOrAddURLParametersFromObject(filters)\r\n\r\n // hide load more button and show loader\r\n loadMoreButton.hide()\r\n loader.show()\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: ajaxurl,\r\n cache: true,\r\n dataType: 'json',\r\n data: {\r\n action: 'getProducts',\r\n data: data,\r\n filters: filters,\r\n type: type,\r\n },\r\n success: function (data) {\r\n\r\n // append or replace products\r\n if (type === 'init') {\r\n $(\".product-filter__results.row.js-product-row\").html(data.html);\r\n }\r\n if (type === 'loadMore') {\r\n $(\".product-filter__results.row.js-product-row\").append(data.html);\r\n }\r\n $(\".product-filter__results\").removeClass(\"loading\");\r\n\r\n\r\n // Offset, load more\r\n let offset = $(\".product-item\").length;\r\n let load_more_button = $(\".js-load-more-products\");\r\n load_more_button.attr(\"data-offset\", offset)\r\n loader.hide()\r\n\r\n if (offset >= data.total) {\r\n load_more_button.hide();\r\n } else {\r\n load_more_button.show()\r\n }\r\n\r\n\r\n // Load lazy images, fade in effect\r\n $('.js-lazy:not([src])').each(function (i, l) {\r\n loadElementLazyImage($(this))\r\n })\r\n $('.js-fade-in:not(.faded-in)').each(function (i) {\r\n (function (self, j) {\r\n setTimeout(function () {\r\n $(self).addClass('faded-in');\r\n }, (j * 80) + 80);\r\n })(this, i);\r\n })\r\n\r\n\r\n },\r\n error: function (result) {\r\n console.log(\"kļūda getProducts\");\r\n }\r\n });\r\n\r\n}\r\n\r\n\r\n// Used to set filter parameters as url variables\r\nfunction updateOrAddURLParametersFromObject(paramsObject) {\r\n var currentUrl = window.location.href;\r\n var urlObj = new URL(currentUrl);\r\n var searchParams = urlObj.searchParams;\r\n\r\n for (var key in paramsObject) {\r\n if (paramsObject.hasOwnProperty(key)) {\r\n let newValues = paramsObject[key]\r\n if (Array.isArray(newValues)) newValues = newValues.join(',')\r\n searchParams.set(key, newValues);\r\n }\r\n }\r\n\r\n var updatedUrl = urlObj.toString();\r\n\r\n // Replace the current URL without reloading the page\r\n window.history.replaceState({}, document.title, updatedUrl);\r\n}\r\n\r\n\r\nfunction updateOrAddURLParameter(paramName, paramValue) {\r\n var currentUrl = window.location.href;\r\n var urlObj = new URL(currentUrl);\r\n var searchParams = urlObj.searchParams;\r\n\r\n // Update the parameter if it exists, otherwise set it\r\n searchParams.set(paramName, paramValue);\r\n\r\n // Get the updated URL with the modified parameters\r\n var updatedUrl = urlObj.toString();\r\n\r\n // Replace the current URL without reloading the page\r\n window.history.replaceState({}, document.title, updatedUrl);\r\n}\r\n","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getDocument, getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\n\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n var document = getDocument();\n\n if (createElements) {\n Object.keys(checkProps).forEach(function (key) {\n if (!params[key] && params.auto === true) {\n var element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n\n return params;\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector, createElementIfNotDefined };","import { getWindow, getDocument } from 'ssr-window';\nvar support;\n\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\n\nfunction calcBrowser() {\n var window = getWindow();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? params.spaceBetween && params.spaceBetween + \"px\" : '');\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(function (_, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n var getSlideByIndex = function getSlideByIndex(index) {\n if (isVirtual) {\n return swiper.slides.filter(function (el) {\n return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;\n })[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","export default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n var found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass;\n var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n var wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill && breakpointParams.slidesPerColumnFill === 'column' || !breakpointParams.slidesPerColumnFill && params.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n var isEnabled = swiper.params.enabled;\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (base === 'window') {\n if (window.matchMedia(\"(min-width: \" + value + \"px)\").matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default {\n checkOverflow: checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.enable = function enable() {\n var swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n };\n\n _proto.disable = function disable() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n };\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n var getWrapperSelector = function getWrapperSelector() {\n return \".\" + (swiper.params.wrapperClass || '').trim().split(' ').join('.');\n };\n\n var getWrapper = function getWrapper() {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n var res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = function (options) {\n return $el.children(options);\n };\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n var $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n var document = getDocument();\n var wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(\".\" + swiper.params.slideClass).each(function (slideEl) {\n $wrapperEl.append(slideEl);\n });\n }\n\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n onMouseEnter: function onMouseEnter() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n },\n onMouseLeave: function onMouseLeave() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n },\n attachMouseEvents: function attachMouseEvents() {\n var swiper = this;\n\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);\n }\n },\n detachMouseEvents: function detachMouseEvents() {\n var swiper = this;\n swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n swiper.autoplay.attachMouseEvents();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n swiper.autoplay.detachMouseEvents();\n\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector, createElementIfNotDefined } from '../../utils/utils';\nvar Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el; // Current/Total\n\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var midIndex;\n\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n if ($el.length > 1) {\n bullets.each(function (bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (bulletIndex === firstIndex) {\n $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n\n if (bulletIndex === lastIndex) {\n $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n } else {\n var $bullet = bullets.eq(current);\n var bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n } else {\n $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n }\n\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n var progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', $el[0]);\n } else {\n swiper.emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n render: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = \"\" + ' / ' + (\"\");\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = \"\";\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function init() {\n var swiper = this;\n swiper.params.pagination = createElementIfNotDefined(swiper.$el, swiper.params.pagination, swiper.params.createElements, {\n el: 'swiper-pagination'\n });\n var params = swiper.params.pagination;\n if (!params.el) return;\n var $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n extend(swiper.pagination, {\n $el: $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n};\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function formatFractionCurrent(number) {\n return number;\n },\n formatFractionTotal: function formatFractionTotal(number) {\n return number;\n },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n // NEW\n lockClass: 'swiper-pagination-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n pagination: _extends({\n dynamicBulletIndex: 0\n }, Pagination)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function snapIndexChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange(swiper) {\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange(swiper) {\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy(swiper) {\n swiper.pagination.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var $el = swiper.pagination.$el;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n },\n click: function click(swiper, e) {\n var targetEl = e.target;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n swiper.emit('paginationShow');\n } else {\n swiper.emit('paginationHide');\n }\n\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (array, val) {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n var i1;\n var i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction: function getInterpolateFunction(c) {\n var swiper = this;\n\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate: function setTranslate(_setTranslate, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var controlledTranslate;\n var Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (var i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n var Swiper = swiper.constructor;\n var controlled = swiper.controller.control;\n var i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(function () {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(function () {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n controller: _extends({\n control: swiper.params.controller.control\n }, Controller)\n });\n },\n on: {\n update: function update(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize: function resize(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate: function setTranslate(swiper, translate, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(swiper, duration, byController) {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\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);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};","import {Autoplay, Controller, EffectFade, Navigation, Pagination, Swiper} from 'swiper'\r\n\r\nSwiper.use([Autoplay, Navigation, Pagination, Controller, EffectFade]);\r\n\r\n// Array to keep indexes of already active sliders, used incase of dynamically added swipers, having matching instance indexes\r\nconst usedIndexes = [];\r\n\r\n$(document).ready(function () {\r\n initializeSwipers()\r\n});\r\n\r\n\r\nfunction initializeSwipers() {\r\n\r\n // When initializingSwipers(), ignore the ones that are already initalized\r\n $(\".swiper-container:not(.swiper-container-initialized)\").each(function (index, element) {\r\n var $this = $(this);\r\n\r\n //\r\n let lastIndex = usedIndexes[usedIndexes.length - 1];\r\n\r\n if (typeof lastIndex == 'undefined') {\r\n lastIndex = 0;\r\n } else {\r\n lastIndex += 1;\r\n }\r\n\r\n index = lastIndex\r\n usedIndexes.push(index);\r\n\r\n $this.addClass(\"instance-\" + index);\r\n $this.parent().find(\".js-slider-next\").addClass(\"next-\" + index);\r\n $this.parent().find(\".js-slider-prev\").addClass(\"prev-\" + index);\r\n $this.parent().find(\".swiper-pagination\").addClass(\"pagination-\" + index);\r\n\r\n if ($this.hasClass('js-swiper-main')) {\r\n\r\n\r\n var swiperMain = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n speed: 340,\r\n pagination: {\r\n el: '.pagination-' + index,\r\n clickable: true\r\n },\r\n\r\n breakpoints: {\r\n 976: {\r\n speed: 800,\r\n }\r\n },\r\n\r\n on: {\r\n slideChangeTransitionStart: function () {\r\n\r\n let controller = document.querySelector('.js-swiper-main-controller').swiper\r\n\r\n if (typeof controller !== \"undefined\") {\r\n controller.slideTo(this.activeIndex)\r\n }\r\n }\r\n }\r\n });\r\n } else if ($this.hasClass('js-swiper-main-controller')) {\r\n\r\n var mainController = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n disableOnInteraction: true,\r\n threshold: 10,\r\n edgeSwipeThreshold: 30,\r\n speed: 600,\r\n watchOverflow: true,\r\n slidesPerView: 1.17,\r\n\r\n on: {\r\n click: function () {\r\n let mainSlider = document.querySelector('.js-swiper-main').swiper\r\n mainSlider.slideTo($(this.clickedSlide).data(\"real-index\"))\r\n }\r\n },\r\n\r\n breakpoints: {\r\n 767: {\r\n slidesPerView: 3,\r\n slidesPerGroup: 2,\r\n }\r\n }\r\n\r\n });\r\n } else if ($this.hasClass('js-swiper-reviews')) {\r\n var reviewSlider = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n disableOnInteraction: true,\r\n speed: 800,\r\n spaceBetween: 40,\r\n watchOverflow: true,\r\n loop: true,\r\n threshold: 10,\r\n edgeSwipeThreshold: 30,\r\n\r\n autoplay: {\r\n delay: 4500,\r\n },\r\n\r\n pagination: {\r\n el: '.pagination-' + index,\r\n clickable: true\r\n },\r\n });\r\n } else if ($this.hasClass('js-swiper-projects')) {\r\n var projectSlider = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 2,\r\n slidesPerGroup: 2,\r\n disableOnInteraction: true,\r\n speed: 700,\r\n watchOverflow: true,\r\n spaceBetween: 16,\r\n\r\n navigation: {\r\n nextEl: '.next-' + index,\r\n prevEl: '.prev-' + index,\r\n },\r\n\r\n breakpoints: {\r\n 976: {\r\n spaceBetween: 41,\r\n }\r\n }\r\n\r\n });\r\n } else if ($this.hasClass('js-swiper-gallery')) {\r\n var factsSlider = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n disableOnInteraction: true,\r\n speed: 700,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n loop: true,\r\n\r\n pagination: {\r\n el: '.pagination-' + index,\r\n clickable: true\r\n },\r\n\r\n });\r\n } else if ($this.hasClass('js-swiper-img-right')) {\r\n var imgRight = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n disableOnInteraction: true,\r\n speed: 700,\r\n spaceBetween: 40,\r\n loop: true,\r\n\r\n navigation: {\r\n nextEl: '.next-' + index,\r\n prevEl: '.prev-' + index,\r\n },\r\n\r\n pagination: {\r\n el: '.pagination-' + index,\r\n type: \"fraction\",\r\n clickable: false\r\n },\r\n\r\n });\r\n } else if ($this.hasClass('js-swiper-project-gallery') && !$this.hasClass('js-swiper-disabled')) {\r\n var projectGallery = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 'auto',\r\n roundLengths: false,\r\n disableOnInteraction: true,\r\n speed: 700,\r\n spaceBetween: 30,\r\n watchOverflow: true,\r\n threshold: 10,\r\n edgeSwipeThreshold: 30,\r\n uniqueNavElements: false,\r\n\r\n navigation: {\r\n nextEl: '.next-' + index,\r\n prevEl: '.prev-' + index,\r\n },\r\n\r\n breakpoints: {\r\n 976: {\r\n spaceBetween: 61,\r\n }\r\n },\r\n\r\n });\r\n\r\n } else if ($this.hasClass('js-swiper-accordion')) {\r\n\r\n $this.closest('.js-accordion-container').attr('data-swiper-instance', index)\r\n\r\n var accordionSlider = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n speed: 800,\r\n noSwiping: true,\r\n allowTouchMove: false,\r\n effect: 'fade',\r\n fadeEffect: {\r\n crossFade: true\r\n },\r\n });\r\n } else if ($this.hasClass('js-swiper-gallery-with-popup')) {\r\n\r\n let galleryController = new Swiper($this[0], {\r\n observer: true,\r\n observeParents: true,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n disableOnInteraction: true,\r\n speed: 700,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n loop: true,\r\n noSwiping: false,\r\n allowTouchMove: true,\r\n\r\n // pagination: {\r\n // el: '.pagination-' + index,\r\n // clickable: true\r\n // },\r\n\r\n pagination: {\r\n el: '.pagination-' + index,\r\n type: \"fraction\"\r\n },\r\n\r\n navigation: {\r\n nextEl: '.next-' + index,\r\n prevEl: '.prev-' + index,\r\n },\r\n\r\n breakpoints: {\r\n 1260: {\r\n noSwiping: true,\r\n allowTouchMove: false,\r\n }\r\n },\r\n\r\n });\r\n\r\n $('.js-top-slider-prev').on('click', function (e) {\r\n galleryController.slidePrev()\r\n });\r\n\r\n $('.js-top-slider-next').on('click', function (e) {\r\n galleryController.slideNext()\r\n });\r\n\r\n\r\n }else if ($this.hasClass('js-swiper-gallery-popup')) {\r\n\r\n var galleryPopup = new Swiper(\".instance-\" + index, {\r\n observer: true,\r\n observeParents: true,\r\n disableOnInteraction: true,\r\n threshold: 10,\r\n edgeSwipeThreshold: 30,\r\n speed: 600,\r\n watchOverflow: true,\r\n slidesPerView: 1,\r\n autoHeight: true,\r\n spaceBetween: 70,\r\n loop: true,\r\n\r\n noSwiping: false,\r\n allowTouchMove: true,\r\n\r\n pagination: {\r\n el: '.pagination-' + index,\r\n clickable: true\r\n },\r\n\r\n navigation: {\r\n nextEl: '.next-' + index,\r\n prevEl: '.prev-' + index,\r\n },\r\n\r\n breakpoints: {\r\n 1260: {\r\n noSwiping: true,\r\n allowTouchMove: false,\r\n }\r\n },\r\n\r\n });\r\n\r\n // let mainSlider = document.querySelector('.js-swiper-gallery-with-popup').swiper\r\n // galleryPopup.controller.control = mainSlider;\r\n\r\n\r\n }\r\n\r\n\r\n });\r\n}\r\n\r\nexport {initializeSwipers}\r\n","import {loadLazyImages} from '../helpers/lazy'\r\nimport {initializeSwipers} from './sliders'\r\n\r\n\r\nif (typeof posts !== 'undefined') {\r\n\r\n $(document).ready(function () {\r\n showPosts($(\".js-load-more-posts\").data('type'))\r\n });\r\n\r\n}\r\n\r\n$('.js-category-select').on('change', function () {\r\n showPosts($(\".js-load-more-posts\").data('type'), posts, 0)\r\n});\r\n\r\n$(\".js-load-more-posts\").click(function () {\r\n console.log(\"js-load-more-posts\");\r\n showPosts($(this).data('type'), posts, $(this).data('offset'))\r\n});\r\n\r\n// For page news and page-catalog\r\nfunction showPosts(itemType = 'news', items = posts, offset = 0) {\r\n\r\n let itemLayout = '';\r\n let loadMoreButton = $('.js-load-more-posts');\r\n let perpage = $(\".js-load-more-posts\").data('per-page')\r\n let newPostCount = 0;\r\n\r\n if (itemType == 'projects') {\r\n items = filterPosts(items)\r\n }\r\n\r\n if (offset == false || offset == 0) {\r\n newPostCount = placePosts(offset, items, perpage, itemType, true)\r\n } else if (items.length > 0 && items.length > offset) {\r\n newPostCount = placePosts(offset, items, perpage, itemType)\r\n }\r\n\r\n if (newPostCount != 0 && items.length > newPostCount + offset) {\r\n loadMoreButton.data('offset', offset + newPostCount)\r\n loadMoreButton.fadeIn(200)\r\n } else {\r\n loadMoreButton.fadeOut(200)\r\n }\r\n\r\n setTimeout(function () {\r\n loadLazyImages()\r\n }, 300);\r\n\r\n initializeSwipers()\r\n}\r\n\r\nfunction placePosts(offset, items, perpage, itemType, clear = false) {\r\n let newPosts = 0;\r\n let resultsRow = $('.js-load-more-results');\r\n let delay = 0;\r\n\r\n if (clear && !resultsRow.hasClass('js-news-page')) {\r\n resultsRow.html('')\r\n resultsRow.fadeIn(200)\r\n }\r\n\r\n if (perpage == -1) {\r\n perpage = 9999;\r\n }\r\n\r\n for (let i = offset; i < items.length && i < offset + perpage; i++) {\r\n let item = items[i]\r\n\r\n let itemArray = [];\r\n\r\n for (const key in item) {\r\n itemArray[key] = item[key]\r\n }\r\n\r\n resultsRow.append(mapFields([itemArray], itemType))\r\n\r\n newPosts += 1;\r\n }\r\n\r\n return newPosts;\r\n\r\n}\r\n\r\n\r\n// Function to map an items fields to a specific item layout\r\nfunction mapFields(item, itemLayout) {\r\n\r\n // News post in page-news.php\r\n const newsLayout = ({title, excerpt, url, thumbnail}) => {\r\n return `\r\n
\r\n
\r\n
\r\n

${title}

\r\n

${excerpt}

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n `;\r\n };\r\n\r\n // Product post in page-catalog.php\r\n const productsLayout = ({fields, tags, url, thumbnail}) => {\r\n\r\n let ValueLayout = ({name, value}) => `

${name}: ${value}

`;\r\n\r\n let extraFields = fields['extra'];\r\n let areaHtml = '';\r\n let priceHtml = '';\r\n\r\n extraFields = extraFields.map(ValueLayout).join('');\r\n\r\n if (fields['area']['text'] && fields['area']['value'] && fields['area']['value'] != 0) {\r\n areaHtml = `

${fields['area']['text']}: ${fields['area']['value']} ${fields['area']['symbol']}

`;\r\n }\r\n\r\n if (fields['price']['text'] && fields['price']['value'] && fields['price']['value'] != 0 && fields['old_price']['value'] != 0) {\r\n priceHtml =\r\n `
\r\n

${fields['price']['text']}: ${fields['price']['value']} €

\r\n

${fields['old_price']['value']} €

\r\n
`;\r\n } else if (fields['price']['text'] && fields['price']['value'] && fields['price']['value'] != 0) {\r\n priceHtml = `

${fields['price']['text']}: ${fields['price']['value']} €

`;\r\n }\r\n\r\n return `\r\n
\r\n
\r\n
\r\n ${tags}\r\n \r\n
\r\n
\r\n

${fields['name']['value']}

\r\n ${areaHtml}\r\n ${extraFields}\r\n ${priceHtml}\r\n
\r\n \r\n
\r\n
\r\n `;\r\n };\r\n\r\n // Product post in page-catalog.php\r\n const projectsLayout = ({fields, gallery, single}) => {\r\n\r\n return `\r\n \r\n `;\r\n };\r\n\r\n // Search item in search.php\r\n const searchItemLayout = ({fields}) => {\r\n\r\n return `\r\n
\r\n \r\n
\r\n

${fields['title']}

\r\n

${fields['desc']}

\r\n
\r\n \r\n
\r\n `;\r\n };\r\n\r\n\r\n switch (itemLayout) {\r\n case 'news':\r\n return item.map(newsLayout).join('');\r\n case 'products':\r\n return item.map(productsLayout).join('');\r\n case 'projects':\r\n return item.map(projectsLayout).join('');\r\n case 'search':\r\n return item.map(searchItemLayout).join('');\r\n default:\r\n return item.map(newsLayout).join('');\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nfunction filterPosts(items) {\r\n\r\n let filters = refreshFilters();\r\n\r\n let filteredPosts = items.filter(function (currPost) {\r\n return matchesFilters(currPost, filters);\r\n });\r\n\r\n return filteredPosts;\r\n}\r\n\r\nfunction refreshFilters() {\r\n let newFilter = {};\r\n // Selected cateogory in select\r\n let term = $(\".js-category-select\").val();\r\n\r\n if (term == 0) {// show all posts\r\n return newFilter;\r\n }\r\n\r\n\r\n if (typeof term != 'undefined' && !isNaN(term))\r\n newFilter['terms'] = term\r\n\r\n return newFilter;\r\n}\r\n\r\nfunction matchesFilters(item, filters) {\r\n let matching = true;\r\n\r\n item = item['fields'];\r\n\r\n // For each filter key, check if the product has that property\r\n for (const key in filters) {\r\n if (item.hasOwnProperty(key)) {\r\n if (typeof item[key] == 'object') {\r\n // If the key of the filter is term, check if any of the terms or single term for the product match\r\n if (key == 'terms') {\r\n let hasAnyMatchingTerms = false;\r\n\r\n for (const inner in item[key]) {\r\n if (item[key].hasOwnProperty(inner)) {\r\n if (item[key][inner]['value'] == filters[key]) {\r\n hasAnyMatchingTerms = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n matching = hasAnyMatchingTerms;\r\n\r\n }\r\n // check if the single value matches the filter\r\n } else if (item[key]['value'] != filters[key]) {\r\n matching = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matching;\r\n}\r\n","import {isScrolledIntoView} from \"../helpers/lazy\";\r\n\r\nconst countNumbers = function () {\r\n let $startContainer = $('.js-stats')\r\n let $numbers = $('.js-count')\r\n let counted = 0\r\n\r\n if ($numbers.length) {\r\n\r\n if (isScrolledIntoView($startContainer, 400)) {\r\n if (counted === 0) {\r\n $numbers.each(function () {\r\n\r\n // Gets symbols that arent numeric\r\n let symbol = $(this).text().replace(/[0-9]/g, '');\r\n\r\n // If no symbol is found, makes it an empty string\r\n if(typeof symbol == \"undefined\" || symbol == null)\r\n symbol = ''\r\n\r\n $(this).prop('Counter', 0).animate({\r\n Counter: $(this).text().replace(/\\D/g, '')\r\n }, {\r\n duration: 2500,\r\n easing: 'swing',\r\n step: function (now) {\r\n $(this).text(Math.ceil(now) + symbol);\r\n }\r\n })\r\n })\r\n counted = 1\r\n }\r\n }\r\n\r\n $(window).scroll(function () {\r\n let hT = $startContainer.offset().top, // container for start when scrolled\r\n hH = $startContainer.outerHeight(),\r\n wH = $(window).height(),\r\n wS = $(this).scrollTop()\r\n if (wS > (hT + hH - wH)) {\r\n\r\n if (counted === 0) {\r\n $numbers.each(function () {\r\n\r\n // Gets symbols that arent numeric\r\n let symbol = $(this).text().replace(/[0-9]/g, '');\r\n\r\n // If no symbol is found, makes it an empty string\r\n if(typeof symbol == \"undefined\" || symbol == null)\r\n symbol = ''\r\n\r\n $(this).prop('Counter', 0).animate({\r\n Counter: $(this).text().replace(/\\D/g, '')\r\n }, {\r\n duration: 2500,\r\n easing: 'swing',\r\n step: function (now) {\r\n $(this).text(Math.ceil(now) + symbol);\r\n }\r\n })\r\n })\r\n counted = 1\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\n\r\n$(document).ready(function () {\r\n countNumbers()\r\n});\r\n","'use strict'\r\n\r\n/**\r\n * External Dependencies\r\n */\r\nimport 'jquery'\r\n\r\n\r\nimport './vendors/select2-flip'\r\n\r\nimport './helpers/lazy'\r\nimport './helpers/popups'\r\nimport './helpers/helpers'\r\nimport './helpers/map'\r\nimport './helpers/sidebar'\r\nimport './helpers/select'\r\nimport './helpers/read_more'\r\n\r\nimport './blocks/product-filter'\r\nimport './blocks/loadmore-posts'\r\nimport './blocks/videos'\r\nimport './blocks/sliders'\r\nimport './blocks/counter'\r\nimport './blocks/contact-form'\r\nimport './blocks/accordion'\r\n\r\nimport './sigle-product'\r\n\r\nvar body = $(\"body\");\r\n\r\nif (!body.hasClass(\"single-products\") && !body.hasClass(\"tax-product-category\") && !body.hasClass(\"page-template-default\") && body.hasClass(\"home\")) {\r\n localStorage.removeItem(\"filterConf\");\r\n}\r\n\r\nif(body.hasClass(\"home\")) {\r\n $(window).scrollTop(0)\r\n}","$(document).ready(function () {\r\n $('.js-accordion-item .js-toggle-block').first().click()\r\n});\r\n\r\n$('.js-toggle-block').click(function () {\r\n let $this = $(this)\r\n let prevText = $this.text()\r\n if($this.data('toggle-text')){\r\n $this.text($this.data('toggle-text'))\r\n $this.data('toggle-text', prevText)\r\n }\r\n\r\n\r\n let nextToggle = $(this).siblings('.js-toggled-block').first();\r\n\r\n if ($this.parent().hasClass('js-accordion-item')){\r\n $this.parent().toggleClass('accordion-active')\r\n $this.parent().siblings('.accordion-active').removeClass('accordion-active').find('.js-toggled-block').slideUp(320)\r\n }\r\n\r\n nextToggle.slideToggle(320)\r\n\r\n})\r\n\r\n$('.js-slide-to').on('click', function (e) {\r\n let instanceIndex = $(this).closest('.js-accordion-container').data('swiper-instance')\r\n let swiperInstance = $('.instance-' + instanceIndex)\r\n $('.instance-' + instanceIndex)[0].swiper.slideTo($(this).attr('data-slide-id'), 700, false)\r\n});\r\n","$('.js-form-validation').on('submit', function (e) {\r\n let scrollOffset = 120;\r\n\r\n let thisForm = $(this)\r\n let formContainer = thisForm.closest('.js-form-container')\r\n\r\n e.preventDefault()\r\n\r\n let validated = 1\r\n\r\n let formInputs = thisForm.find('input[type=\"text\"]')\r\n let formTextarea = thisForm.find('textarea')\r\n let formEmail = thisForm.find('input[name=\"email\"]')\r\n let formPhone = thisForm.find('input[name=\"phone\"]')\r\n let formCompany = thisForm.find('input[name=\"company\"]')\r\n let formFiles = thisForm.find('input[type=\"file[]\"]')\r\n let successForm = $('.js-success-form');\r\n\r\n // Is equal to n * .parent()\r\n let parentClassNesting = 0;\r\n\r\n formInputs.each(function () {\r\n\r\n let parent = $(this).parents().eq(parentClassNesting)\r\n if (parent.hasClass('js-required') && $(this).val() === '') {\r\n parent.addClass('js-error')\r\n } else {\r\n parent.removeClass('js-error')\r\n }\r\n\r\n })\r\n\r\n formTextarea.each(function () {\r\n let parent = $(this).parents().eq(parentClassNesting)\r\n\r\n if (parent.hasClass('js-required') && $(this).val() === '') {\r\n parent.addClass('js-error')\r\n } else {\r\n parent.removeClass('js-error')\r\n }\r\n\r\n })\r\n\r\n formPhone.each(function () {\r\n let parent = $(this).parents().eq(parentClassNesting)\r\n // If the field is js-required, but is empty show js-error, or if the field contains any invalid syntax show js-error.\r\n if ((parent.hasClass('js-required') && $(this).val() === '') || !formPhone.val().match(/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\\s\\./0-9]*$/g) || formPhone.val().length <= 4) {\r\n parent.addClass('js-error')\r\n } else {\r\n parent.removeClass('js-error')\r\n }\r\n })\r\n\r\n formEmail.each(function () {\r\n let parent = $(this).parents().eq(parentClassNesting)\r\n\r\n // If the field is js-required, but is empty show js-error, or if the field contains any invalid syntax show js-error.\r\n if ((parent.hasClass('js-required') && $(this).val() === '') || !validEmail(formEmail.val())) {\r\n parent.addClass('js-error')\r\n } else {\r\n parent.removeClass('js-error')\r\n }\r\n })\r\n\r\n formFiles.each(function () {\r\n // If the field is js-required, but is empty show js-error, or if the field contains any invalid syntax show js-error.\r\n if ((parent.hasClass('js-required') && $(this).val() === '')) {\r\n parent.addClass('js-error')\r\n } else {\r\n parent.removeClass('js-error')\r\n }\r\n })\r\n\r\n if (thisForm.find('.js-error').length == 0) {\r\n let formData = new FormData(thisForm[0]);\r\n $.ajax({\r\n url: localize_script.admin_ajax,\r\n type: 'POST',\r\n data: formData,\r\n async: false,\r\n cache: false,\r\n contentType: false,\r\n enctype: 'multipart/form-data',\r\n processData: false,\r\n success: function (results) {\r\n if (results.validated === 1) {\r\n //send google event\r\n if(results.userData){\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'form_submit_successful',\r\n 'data': [{\r\n 'name': results.userData.name,\r\n 'email': results.userData.email,\r\n 'phone': results.userData.phone,\r\n 'id': results.userData.page,\r\n }]\r\n });\r\n }\r\n successForm.fadeIn()\r\n setTimeout(function () {\r\n successForm.fadeOut()\r\n }, 7000);\r\n } else {\r\n }\r\n },\r\n });\r\n\r\n $('html, body').animate({\r\n scrollTop: formContainer.offset().top - scrollOffset\r\n }, 650);\r\n\r\n }else{\r\n $('html, body').animate({\r\n scrollTop: formContainer.find('form').offset().top - scrollOffset\r\n }, 650);\r\n }\r\n\r\n return false\r\n})\r\n\r\n$(document).on( 'change', 'input[type=\"file\"]', function(){\r\n var $this = $(this);\r\n let inputField = $this;\r\n let files = $this.get(0).files;\r\n let parentClassNesting = 1;\r\n\r\n let parent = $this.parents().eq(parentClassNesting)\r\n\r\n\r\n let badSizeMessage = $this.data('size-error')\r\n let badMimeMessage = $this.data('mime-error')\r\n\r\n let fileContainer = parent.parents().eq(1).find('.js-uploaded-file')\r\n let fileField = fileContainer.find('.js-file-name')\r\n let errorField = parent.parents().eq(1).find('.js-file-error')\r\n\r\n for (var i = 0; i < files.length; ++i) {\r\n let currFile = files[i];\r\n\r\n if (typeof currFile !== 'undefined') {\r\n\r\n // File too big\r\n if (currFile.size > 10 * 1000000) {\r\n\r\n errorField.text(badSizeMessage).fadeIn(0)\r\n resetFileInput(parent)\r\n\r\n continue;\r\n }\r\n\r\n // File mime invalid\r\n if (!checkFileMimeType(currFile)) {\r\n\r\n errorField.text(badMimeMessage).fadeIn(0)\r\n resetFileInput(parent)\r\n\r\n continue;\r\n }\r\n\r\n errorField.text('').fadeOut(0)\r\n fileField.text(currFile.name)\r\n fileContainer.fadeIn(0)\r\n\r\n }\r\n }\r\n} );\r\n// $('input[type=\"file\"]').change(function () {\r\n//\r\n// });\r\n\r\n$('.js-file-reset').on('click', function (e) {\r\n let parent = $(this).parents().eq(3)\r\n resetFileInput(parent)\r\n parent.removeClass('js-error')\r\n})\r\n\r\nfunction resetFileInput(columnContainer){\r\n columnContainer.find('input[type=\"file\"]').val('').clone(true);\r\n columnContainer.find('.js-uploaded-file').fadeOut(0)\r\n}\r\n\r\n//-- validate email\r\nfunction validEmail(e) {\r\n let filter = /^\\s*[\\w\\-\\+_]+(\\.[\\w\\-\\+_]+)*\\@[\\w\\-\\+_]+\\.[\\w\\-\\+_]+(\\.[\\w\\-\\+_]+)*\\s*$/\r\n return String(e).search(filter) !== -1\r\n}\r\n\r\n\r\nfunction checkFileMimeType(file) {\r\n\r\n const acceptedFileTypes = [\r\n 'image/jpeg',\r\n 'image/jpg',\r\n 'image/png',\r\n 'application/pdf',\r\n 'application/msword',\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n ];\r\n\r\n\r\n // If the file reader in the browser exists, check the file mime type, if not, rely on the back-end\r\n if (window.FileReader && window.Blob) {\r\n let blob = file;\r\n let fileType = blob.type;\r\n if (jQuery.inArray(fileType, acceptedFileTypes) !== -1)\r\n return true;\r\n } else {\r\n return true;\r\n }\r\n\r\n return false;\r\n}","$('body').on('click', '.js-play-video', function (e) {\r\n let button = $(this)\r\n let parent = button.parent().parent();\r\n let coverImage = button.closest('.js-cover')\r\n let iframe = parent.find('iframe')\r\n let video = parent.find('video')\r\n let video_src = video.attr('data-src')\r\n let iframe_src = iframe.attr('data-src')\r\n\r\n video.attr('controls', true)\r\n coverImage.hide(200)\r\n button.hide(200)\r\n iframe.show()\r\n video.attr('src', video_src)\r\n iframe.attr('src', iframe_src)\r\n})\r\n","// import mapboxgl from 'mapbox-gl'\r\n\r\n$(document).ready(function () {\r\n\r\n if (typeof mapboxgl == 'undefined')\r\n return;\r\n\r\n if (!$('#map').length)\r\n return;\r\n\r\n //mapboxgl.accessToken = 'pk.eyJ1IjoiZ3VudGEtYnJpZ2h0IiwiYSI6ImNsYXV3OTdtczBiMDEzb255ZDRmdDJ3NG0ifQ.YBQH80gTO2iX6kMyakw21A';\r\n mapboxgl.accessToken = 'pk.eyJ1IjoiZWxlbWVudGRpZ2l0YWxsdiIsImEiOiJjbGd5cjVrNGgwYzlkM3BxYzdsMXF4bHZrIn0.F_L19EuSgUCZBdX72FePsw';\r\n\r\n let height = $(window).height(); // New height\r\n let width = $(window).width(); // New width\r\n\r\n let center = [24.129676, 56.963080];\r\n let zoom = 12.97;\r\n\r\n if (width <= 976) {\r\n center = [24.185139, 56.949256];\r\n zoom = 10.50;\r\n }\r\n\r\n var map = new mapboxgl.Map({\r\n container: 'map', // container id\r\n style: 'mapbox://styles/mapbox/streets-v11',//'mapbox://styles/gunta-bright/clav5un2p000314s9raz5lr3y', //stylesheet location\r\n center: center, // starting position\r\n attributionControl: false,\r\n zoom: zoom// starting zoom\r\n });\r\n\r\n\r\n map.scrollZoom.disable();\r\n\r\n let marker = document.createElement('div');\r\n marker.className = marker;\r\n marker.innerHTML = ''\r\n\r\n // Marker offset x - Add half marker width, y - Remove half marker height\r\n new mapboxgl.Marker(marker, {\r\n offset: {\r\n x: 30,\r\n y: -61\r\n }\r\n })\r\n .setLngLat([24.156787731888535, 56.947483616640795])\r\n .addTo(map)\r\n});\r\n\r\n","\n$('.js-read-more-button').click(function(){\n $(this).closest('.js-read-more').find('.js-read-more-hidden').slideToggle()\n $(this).hide()\n})","\r\n$('.js-go-to-contact-us').click(function(){\r\n let contactUs = $('.contact-us')\r\n if (contactUs.length) {\r\n $(\"html, body\").animate({ scrollTop: contactUs.offset().top - 300}, 600)\r\n }\r\n})\r\n","/*!\r\n * jQuery UI Touch Punch 0.2.3\r\n *\r\n * Copyright 2011–2014, Dave Furfero\r\n * Dual licensed under the MIT or GPL Version 2 licenses.\r\n *\r\n * Depends:\r\n * jquery.ui.widget.js\r\n * jquery.ui.mouse.js\r\n */\r\n!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent(\"MouseEvents\");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch=\"ontouchend\"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,\"mouseover\"),f(a,\"mousemove\"),f(a,\"mousedown\"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,\"mousemove\"))},b._touchEnd=function(a){e&&(f(a,\"mouseup\"),f(a,\"mouseout\"),this._touchMoved||f(a,\"click\"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,\"_touchStart\"),touchmove:a.proxy(b,\"_touchMove\"),touchend:a.proxy(b,\"_touchEnd\")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,\"_touchStart\"),touchmove:a.proxy(b,\"_touchMove\"),touchend:a.proxy(b,\"_touchEnd\")}),d.call(b)}}}(jQuery);","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n// This file is deprecated\nreturn $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n} );\n","/*!\n * jQuery UI Keycode 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} );\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.2\";\n\n} );\n","/*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} );\n","/*!\n * jQuery UI Mouse 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.13.2\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseUp( event );\n\t\t}\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\tif ( this._mouseStarted ) {\n\t\t\t\tthis._mouseDrag( event );\n\t\t\t} else {\n\t\t\t\tthis._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) {\n\t\treturn true;\n\t}\n} );\n\n} );\n","/*!\n * jQuery UI Slider 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slider\n//>>group: Widgets\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n//>>docs: http://api.jqueryui.com/slider/\n//>>demos: http://jqueryui.com/slider/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/slider.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../keycode\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.13.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tclasses: {\n\t\t\t\"ui-slider\": \"ui-corner-all\",\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\n\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\n\t\t\t// element, but worked best visually with a variety of themes\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n\t\t},\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// Number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\n\t\t\t\"ui-widget ui-widget-content\" );\n\n\t\tthis._refresh();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\n\t\t\thandle = \"\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each( function( i ) {\n\t\t\t$( this )\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\n\t\t\t\t.attr( \"tabIndex\", 0 );\n\t\t} );\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\n\t\t\t\t} else if ( Array.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice( 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"
\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\n\t\t\t} else {\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\n\n\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\tthis.range.css( {\n\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each( function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\n\t\t\tif ( ( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t} );\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\n\t\tclosestHandle.trigger( \"focus\" );\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_uiHash: function( index, value, values ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\thandleIndex: index,\n\t\t\tvalue: value !== undefined ? value : this.value()\n\t\t};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\n\t\t\tuiHash.values = values || this.values();\n\t\t}\n\n\t\treturn uiHash;\n\t},\n\n\t_hasMultipleValues: function() {\n\t\treturn this.options.values && this.options.values.length;\n\t},\n\n\t_start: function( event, index ) {\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar allowed, otherVal,\n\t\t\tcurrentValue = this.value(),\n\t\t\tnewValues = this.values();\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\tcurrentValue = this.values( index );\n\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\n\t\t\t\tnewVal = index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\n\t\t\t}\n\n\t\t\tnewValues[ index ] = newVal;\n\t\t}\n\n\t\tif ( newVal === currentValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\n\n\t\t// A slide can be canceled by returning false from the slide callback\n\t\tif ( allowed === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.values( index, newVal );\n\t\t} else {\n\t\t\tthis.value( newVal );\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( Array.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( Array.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tif ( this.options.range ) {\n\t\t\t\t\tthis._refreshRange( value );\n\t\t\t\t}\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this._hasMultipleValues() ) {\n\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar max = this.options.max,\n\t\t\tmin = this._valueMin(),\n\t\t\tstep = this.options.step,\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\n\t\tmax = aboveMin + min;\n\t\tif ( max > this.options.max ) {\n\n\t\t\t//If max is not divisible by step, rounding off may increase its value\n\t\t\tmax -= step;\n\t\t}\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshRange: function( orientation ) {\n\t\tif ( orientation === \"vertical\" ) {\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\n\t\t}\n\t\tif ( orientation === \"horizontal\" ) {\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\n\t\t}\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.handles.each( function( i ) {\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\n\t\t\t\t\tthat._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\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\tlastValPercent = valPercent;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n} );\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\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\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\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}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\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\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\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\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"