{"version":3,"sources":["smooth-scrollbar.js","chosen.jquery.min.js","btn.js","toggle-btn.js","topbar.js","collapse.js","sidebar.js","panel.js","chat.js","dashboards.js","form.js","inbox.js","btn-dropdown.js","table-data.js","table.js","todo.js","modal.js","datepicker.js","profile.js","calendar.js","material.js","chartjs.js","chartistjs.js","echartjs.js","map.js","cart.js","gallery.js","project-summary.js","order.js","payment.js","dropzone.js","product-list.js","product.js","timepicker.js","colorpicker.js","mask.js","wizard.js","rc-notification.js","slider.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClaA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtIA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1lIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACt/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACj0CA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtGA;AACA;AACA;AACA;AACA;AACA;ACLA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define([],n):\"object\"==typeof exports?exports.Scrollbar=n():t.Scrollbar=n()}(window,(function(){return function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p=\"\",e(e.s=58)}([function(t,n,e){var r=e(25)(\"wks\"),o=e(16),i=e(2).Symbol,u=\"function\"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)(\"Symbol.\"+t))}).store=r},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){var e=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=e)},function(t,n){var e=t.exports={version:\"2.6.9\"};\"number\"==typeof __e&&(__e=e)},function(t,n,e){t.exports=!e(13)((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},function(t,n,e){var r=e(2),o=e(3),i=e(11),u=e(6),c=e(10),s=function(t,n,e){var a,f,l,p,h=t&s.F,d=t&s.G,v=t&s.S,y=t&s.P,m=t&s.B,g=d?r:v?r[n]||(r[n]={}):(r[n]||{}).prototype,b=d?o:o[n]||(o[n]={}),x=b.prototype||(b.prototype={});for(a in d&&(e=n),e)l=((f=!h&&g&&void 0!==g[a])?g:e)[a],p=m&&f?c(l,r):y&&\"function\"==typeof l?c(Function.call,l):l,g&&u(g,a,l,t&s.U),b[a]!=l&&i(b,a,p),y&&x[a]!=l&&(x[a]=l)};r.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,n,e){var r=e(2),o=e(11),i=e(9),u=e(16)(\"src\"),c=e(60),s=(\"\"+c).split(\"toString\");e(3).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,e,c){var a=\"function\"==typeof e;a&&(i(e,\"name\")||o(e,\"name\",n)),t[n]!==e&&(a&&(i(e,u)||o(e,u,t[n]?\"\"+t[n]:s.join(String(n)))),t===r?t[n]=e:c?t[n]?t[n]=e:o(t,n,e):(delete t[n],o(t,n,e)))})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&this[u]||c.call(this)}))},function(t,n,e){var r=e(8),o=e(41),i=e(43),u=Object.defineProperty;n.f=e(4)?Object.defineProperty:function(t,n,e){if(r(t),n=i(n,!0),r(e),o)try{return u(t,n,e)}catch(t){}if(\"get\"in e||\"set\"in e)throw TypeError(\"Accessors not supported!\");return\"value\"in e&&(t[n]=e.value),t}},function(t,n,e){var r=e(1);t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(44);t.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,o){return t.call(n,e,r,o)}}return function(){return t.apply(n,arguments)}}},function(t,n,e){var r=e(7),o=e(17);t.exports=e(4)?function(t,n,e){return r.f(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n,e){var r=e(1);t.exports=function(t,n){if(!r(t)||t._t!==n)throw TypeError(\"Incompatible receiver, \"+n+\" required!\");return t}},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){t.exports={}},function(t,n,e){var r=e(10),o=e(49),i=e(50),u=e(8),c=e(19),s=e(51),a={},f={};(n=t.exports=function(t,n,e,l,p){var h,d,v,y,m=p?function(){return t}:s(t),g=r(e,l,n?2:1),b=0;if(\"function\"!=typeof m)throw TypeError(t+\" is not iterable!\");if(i(m)){for(h=c(t.length);h>b;b++)if((y=n?g(u(d=t[b])[0],d[1]):g(t[b]))===a||y===f)return y}else for(v=m.call(t);!(d=v.next()).done;)if((y=o(v,g,d.value,n))===a||y===f)return y}).BREAK=a,n.RETURN=f},function(t,n){var e=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++e+r).toString(36))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,e){var r=e(31),o=e(28);t.exports=function(t){return r(o(t))}},function(t,n,e){var r=e(27),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,n,e){var r=e(28);t.exports=function(t){return Object(r(t))}},function(t,n,e){var r=e(16)(\"meta\"),o=e(1),i=e(9),u=e(7).f,c=0,s=Object.isExtensible||function(){return!0},a=!e(13)((function(){return s(Object.preventExtensions({}))})),f=function(t){u(t,r,{value:{i:\"O\"+ ++c,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,n){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,r)){if(!s(t))return\"F\";if(!n)return\"E\";f(t)}return t[r].i},getWeak:function(t,n){if(!i(t,r)){if(!s(t))return!0;if(!n)return!1;f(t)}return t[r].w},onFreeze:function(t){return a&&l.NEED&&s(t)&&!i(t,r)&&f(t),t}}},function(t,n,e){\"use strict\";var r=e(23),o={};o[e(0)(\"toStringTag\")]=\"z\",o+\"\"!=\"[object z]\"&&e(6)(Object.prototype,\"toString\",(function(){return\"[object \"+r(this)+\"]\"}),!0)},function(t,n,e){var r=e(24),o=e(0)(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}());t.exports=function(t){var n,e,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(e=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?e:i?r(n):\"Object\"==(u=r(n))&&\"function\"==typeof n.callee?\"Arguments\":u}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,n,e){var r=e(3),o=e(2),i=o[\"__core-js_shared__\"]||(o[\"__core-js_shared__\"]={});(t.exports=function(t,n){return i[t]||(i[t]=void 0!==n?n:{})})(\"versions\",[]).push({version:r.version,mode:e(40)?\"pure\":\"global\",copyright:\"Ā© 2019 Denis Pushkarev (zloirock.ru)\"})},function(t,n,e){\"use strict\";var r=e(61)(!0);e(29)(String,\"String\",(function(t){this._t=String(t),this._i=0}),(function(){var t,n=this._t,e=this._i;return e>=n.length?{value:void 0,done:!0}:(t=r(n,e),this._i+=t.length,{value:t,done:!1})}))},function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},function(t,n){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,e){\"use strict\";var r=e(40),o=e(5),i=e(6),u=e(11),c=e(14),s=e(62),a=e(33),f=e(68),l=e(0)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=function(){return this};t.exports=function(t,n,e,d,v,y,m){s(e,n,d);var g,b,x,_=function(t){if(!p&&t in O)return O[t];switch(t){case\"keys\":case\"values\":return function(){return new e(this,t)}}return function(){return new e(this,t)}},w=n+\" Iterator\",S=\"values\"==v,E=!1,O=t.prototype,T=O[l]||O[\"@@iterator\"]||v&&O[v],A=T||_(v),M=v?S?_(\"entries\"):A:void 0,P=\"Array\"==n&&O.entries||T;if(P&&(x=f(P.call(new t)))!==Object.prototype&&x.next&&(a(x,w,!0),r||\"function\"==typeof x[l]||u(x,l,h)),S&&T&&\"values\"!==T.name&&(E=!0,A=function(){return T.call(this)}),r&&!m||!p&&!E&&O[l]||u(O,l,A),c[n]=A,c[w]=h,v)if(g={values:S?A:_(\"values\"),keys:y?A:_(\"keys\"),entries:M},m)for(b in g)b in O||i(O,b,g[b]);else o(o.P+o.F*(p||E),n,g);return g}},function(t,n,e){var r=e(64),o=e(46);t.exports=Object.keys||function(t){return r(t,o)}},function(t,n,e){var r=e(24);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},function(t,n,e){var r=e(25)(\"keys\"),o=e(16);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,n,e){var r=e(7).f,o=e(9),i=e(0)(\"toStringTag\");t.exports=function(t,n,e){t&&!o(t=e?t:t.prototype,i)&&r(t,i,{configurable:!0,value:n})}},function(t,n,e){for(var r=e(69),o=e(30),i=e(6),u=e(2),c=e(11),s=e(14),a=e(0),f=a(\"iterator\"),l=a(\"toStringTag\"),p=s.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=o(h),v=0;vdocument.F=Object<\\/script>\"),t.close(),s=t.F;r--;)delete s.prototype[i[r]];return s()};t.exports=Object.create||function(t,n){var e;return null!==t?(c.prototype=r(t),e=new c,c.prototype=null,e[u]=t):e=s(),void 0===n?e:o(e,n)}},function(t,n){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,e){\"use strict\";var r=e(7).f,o=e(45),i=e(35),u=e(10),c=e(36),s=e(15),a=e(29),f=e(47),l=e(72),p=e(4),h=e(21).fastKey,d=e(12),v=p?\"_s\":\"size\",y=function(t,n){var e,r=h(n);if(\"F\"!==r)return t._i[r];for(e=t._f;e;e=e.n)if(e.k==n)return e};t.exports={getConstructor:function(t,n,e,a){var f=t((function(t,r){c(t,f,n,\"_i\"),t._t=n,t._i=o(null),t._f=void 0,t._l=void 0,t[v]=0,null!=r&&s(r,e,t[a],t)}));return i(f.prototype,{clear:function(){for(var t=d(this,n),e=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete e[r.i];t._f=t._l=void 0,t[v]=0},delete:function(t){var e=d(this,n),r=y(e,t);if(r){var o=r.n,i=r.p;delete e._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),e._f==r&&(e._f=o),e._l==r&&(e._l=i),e[v]--}return!!r},forEach:function(t){d(this,n);for(var e,r=u(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!y(d(this,n),t)}}),p&&r(f.prototype,\"size\",{get:function(){return d(this,n)[v]}}),f},def:function(t,n,e){var r,o,i=y(t,n);return i?i.v=e:(t._l=i={i:o=h(n,!0),k:n,v:e,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[v]++,\"F\"!==o&&(t._i[o]=i)),t},getEntry:y,setStrong:function(t,n,e){a(t,n,(function(t,e){this._t=d(t,n),this._k=e,this._l=void 0}),(function(){for(var t=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?f(0,\"keys\"==t?n.k:\"values\"==t?n.v:[n.k,n.v]):(this._t=void 0,f(1))}),e?\"entries\":\"values\",!e,!0),l(n)}}},function(t,n,e){var r=e(8);t.exports=function(t,n,e,o){try{return o?n(r(e)[0],e[1]):n(e)}catch(n){var i=t.return;throw void 0!==i&&r(i.call(t)),n}}},function(t,n,e){var r=e(14),o=e(0)(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},function(t,n,e){var r=e(23),o=e(0)(\"iterator\"),i=e(14);t.exports=e(3).getIteratorMethod=function(t){if(null!=t)return t[o]||t[\"@@iterator\"]||i[r(t)]}},function(t,n,e){var r=e(0)(\"iterator\"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var e=!1;try{var i=[7],u=i[r]();u.next=function(){return{done:e=!0}},i[r]=function(){return u},t(i)}catch(t){}return e}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,e){var r=e(23),o=e(77);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+\"#toJSON isn't generic\");return o(this)}}},function(t,n,e){var r=e(10),o=e(31),i=e(20),u=e(19),c=e(87);t.exports=function(t,n){var e=1==t,s=2==t,a=3==t,f=4==t,l=6==t,p=5==t||l,h=n||c;return function(n,c,d){for(var v,y,m=i(n),g=o(m),b=r(c,d,3),x=u(g.length),_=0,w=e?h(n,x):s?h(n,0):void 0;x>_;_++)if((p||_ in g)&&(y=b(v=g[_],_,m),t))if(e)w[_]=y;else if(y)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:w.push(v)}else if(f)return!1;return l?-1:a||f?f:w}}},function(t,n,e){\"use strict\";var r=e(4),o=e(30),i=e(90),u=e(53),c=e(20),s=e(31),a=Object.assign;t.exports=!a||e(13)((function(){var t={},n={},e=Symbol(),r=\"abcdefghijklmnopqrst\";return t[e]=7,r.split(\"\").forEach((function(t){n[t]=t})),7!=a({},t)[e]||Object.keys(a({},n)).join(\"\")!=r}))?function(t,n){for(var e=c(t),a=arguments.length,f=1,l=i.f,p=u.f;a>f;)for(var h,d=s(arguments[f++]),v=l?o(d).concat(l(d)):o(d),y=v.length,m=0;y>m;)h=v[m++],r&&!p.call(d,h)||(e[h]=d[h]);return e}:a},function(t,n,e){\"use strict\";(function(t){var e=\"object\"==typeof t&&t&&t.Object===Object&&t;n.a=e}).call(this,e(99))},function(t,n,e){t.exports=e(100)},function(t,n,e){e(22),e(26),e(34),e(71),e(76),e(78),e(79),t.exports=e(3).Map},function(t,n,e){t.exports=e(25)(\"native-function-to-string\",Function.toString)},function(t,n,e){var r=e(27),o=e(28);t.exports=function(t){return function(n,e){var i,u,c=String(o(n)),s=r(e),a=c.length;return s<0||s>=a?t?\"\":void 0:(i=c.charCodeAt(s))<55296||i>56319||s+1===a||(u=c.charCodeAt(s+1))<56320||u>57343?t?c.charAt(s):i:t?c.slice(s,s+2):u-56320+(i-55296<<10)+65536}}},function(t,n,e){\"use strict\";var r=e(45),o=e(17),i=e(33),u={};e(11)(u,e(0)(\"iterator\"),(function(){return this})),t.exports=function(t,n,e){t.prototype=r(u,{next:o(1,e)}),i(t,n+\" Iterator\")}},function(t,n,e){var r=e(7),o=e(8),i=e(30);t.exports=e(4)?Object.defineProperties:function(t,n){o(t);for(var e,u=i(n),c=u.length,s=0;c>s;)r.f(t,e=u[s++],n[e]);return t}},function(t,n,e){var r=e(9),o=e(18),i=e(65)(!1),u=e(32)(\"IE_PROTO\");t.exports=function(t,n){var e,c=o(t),s=0,a=[];for(e in c)e!=u&&r(c,e)&&a.push(e);for(;n.length>s;)r(c,e=n[s++])&&(~i(a,e)||a.push(e));return a}},function(t,n,e){var r=e(18),o=e(19),i=e(66);t.exports=function(t){return function(n,e,u){var c,s=r(n),a=o(s.length),f=i(u,a);if(t&&e!=e){for(;a>f;)if((c=s[f++])!=c)return!0}else for(;a>f;f++)if((t||f in s)&&s[f]===e)return t||f||0;return!t&&-1}}},function(t,n,e){var r=e(27),o=Math.max,i=Math.min;t.exports=function(t,n){return(t=r(t))<0?o(t+n,0):i(t,n)}},function(t,n,e){var r=e(2).document;t.exports=r&&r.documentElement},function(t,n,e){var r=e(9),o=e(20),i=e(32)(\"IE_PROTO\"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,n,e){\"use strict\";var r=e(70),o=e(47),i=e(14),u=e(18);t.exports=e(29)(Array,\"Array\",(function(t,n){this._t=u(t),this._i=0,this._k=n}),(function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==n?e:\"values\"==n?t[e]:[e,t[e]])}),\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(t,n,e){var r=e(0)(\"unscopables\"),o=Array.prototype;null==o[r]&&e(11)(o,r,{}),t.exports=function(t){o[r][t]=!0}},function(t,n,e){\"use strict\";var r=e(48),o=e(12);t.exports=e(37)(\"Map\",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var n=r.getEntry(o(this,\"Map\"),t);return n&&n.v},set:function(t,n){return r.def(o(this,\"Map\"),0===t?0:t,n)}},r,!0)},function(t,n,e){\"use strict\";var r=e(2),o=e(7),i=e(4),u=e(0)(\"species\");t.exports=function(t){var n=r[t];i&&n&&!n[u]&&o.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,e){var r=e(1),o=e(74).set;t.exports=function(t,n,e){var i,u=n.constructor;return u!==e&&\"function\"==typeof u&&(i=u.prototype)!==e.prototype&&r(i)&&o&&o(t,i),t}},function(t,n,e){var r=e(1),o=e(8),i=function(t,n){if(o(t),!r(n)&&null!==n)throw TypeError(n+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,n,r){try{(r=e(10)(Function.call,e(75).f(Object.prototype,\"__proto__\").set,2))(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,e){return i(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:i}},function(t,n,e){var r=e(53),o=e(17),i=e(18),u=e(43),c=e(9),s=e(41),a=Object.getOwnPropertyDescriptor;n.f=e(4)?a:function(t,n){if(t=i(t),n=u(n,!0),s)try{return a(t,n)}catch(t){}if(c(t,n))return o(!r.f.call(t,n),t[n])}},function(t,n,e){var r=e(5);r(r.P+r.R,\"Map\",{toJSON:e(54)(\"Map\")})},function(t,n,e){var r=e(15);t.exports=function(t,n){var e=[];return r(t,!1,e.push,e,n),e}},function(t,n,e){e(38)(\"Map\")},function(t,n,e){e(39)(\"Map\")},function(t,n,e){e(22),e(26),e(34),e(81),e(82),e(83),e(84),t.exports=e(3).Set},function(t,n,e){\"use strict\";var r=e(48),o=e(12);t.exports=e(37)(\"Set\",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,\"Set\"),t=0===t?0:t,t)}},r)},function(t,n,e){var r=e(5);r(r.P+r.R,\"Set\",{toJSON:e(54)(\"Set\")})},function(t,n,e){e(38)(\"Set\")},function(t,n,e){e(39)(\"Set\")},function(t,n,e){e(22),e(34),e(86),e(92),e(93),t.exports=e(3).WeakMap},function(t,n,e){\"use strict\";var r,o=e(2),i=e(55)(0),u=e(6),c=e(21),s=e(56),a=e(91),f=e(1),l=e(12),p=e(12),h=!o.ActiveXObject&&\"ActiveXObject\"in o,d=c.getWeak,v=Object.isExtensible,y=a.ufstore,m=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},g={get:function(t){if(f(t)){var n=d(t);return!0===n?y(l(this,\"WeakMap\")).get(t):n?n[this._i]:void 0}},set:function(t,n){return a.def(l(this,\"WeakMap\"),t,n)}},b=t.exports=e(37)(\"WeakMap\",m,g,a,!0,!0);p&&h&&(s((r=a.getConstructor(m,\"WeakMap\")).prototype,g),c.NEED=!0,i([\"delete\",\"has\",\"get\",\"set\"],(function(t){var n=b.prototype,e=n[t];u(n,t,(function(n,o){if(f(n)&&!v(n)){this._f||(this._f=new r);var i=this._f[t](n,o);return\"set\"==t?this:i}return e.call(this,n,o)}))})))},function(t,n,e){var r=e(88);t.exports=function(t,n){return new(r(t))(n)}},function(t,n,e){var r=e(1),o=e(89),i=e(0)(\"species\");t.exports=function(t){var n;return o(t)&&(\"function\"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)||(n=void 0),r(n)&&null===(n=n[i])&&(n=void 0)),void 0===n?Array:n}},function(t,n,e){var r=e(24);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){\"use strict\";var r=e(35),o=e(21).getWeak,i=e(8),u=e(1),c=e(36),s=e(15),a=e(55),f=e(9),l=e(12),p=a(5),h=a(6),d=0,v=function(t){return t._l||(t._l=new y)},y=function(){this.a=[]},m=function(t,n){return p(t.a,(function(t){return t[0]===n}))};y.prototype={get:function(t){var n=m(this,t);if(n)return n[1]},has:function(t){return!!m(this,t)},set:function(t,n){var e=m(this,t);e?e[1]=n:this.a.push([t,n])},delete:function(t){var n=h(this.a,(function(n){return n[0]===t}));return~n&&this.a.splice(n,1),!!~n}},t.exports={getConstructor:function(t,n,e,i){var a=t((function(t,r){c(t,a,n,\"_i\"),t._t=n,t._i=d++,t._l=void 0,null!=r&&s(r,e,t[i],t)}));return r(a.prototype,{delete:function(t){if(!u(t))return!1;var e=o(t);return!0===e?v(l(this,n)).delete(t):e&&f(e,this._i)&&delete e[this._i]},has:function(t){if(!u(t))return!1;var e=o(t);return!0===e?v(l(this,n)).has(t):e&&f(e,this._i)}}),a},def:function(t,n,e){var r=o(i(n),!0);return!0===r?v(t).set(n,e):r[t._i]=e,t},ufstore:v}},function(t,n,e){e(38)(\"WeakMap\")},function(t,n,e){e(39)(\"WeakMap\")},function(t,n,e){e(26),e(95),t.exports=e(3).Array.from},function(t,n,e){\"use strict\";var r=e(10),o=e(5),i=e(20),u=e(49),c=e(50),s=e(19),a=e(96),f=e(51);o(o.S+o.F*!e(52)((function(t){Array.from(t)})),\"Array\",{from:function(t){var n,e,o,l,p=i(t),h=\"function\"==typeof this?this:Array,d=arguments.length,v=d>1?arguments[1]:void 0,y=void 0!==v,m=0,g=f(p);if(y&&(v=r(v,d>2?arguments[2]:void 0,2)),null==g||h==Array&&c(g))for(e=new h(n=s(p.length));n>m;m++)a(e,m,y?v(p[m],m):p[m]);else for(l=g.call(p),e=new h;!(o=l.next()).done;m++)a(e,m,y?u(l,v,[o.value,m],!0):o.value);return e.length=m,e}})},function(t,n,e){\"use strict\";var r=e(7),o=e(17);t.exports=function(t,n,e){n in t?r.f(t,n,o(0,e)):t[n]=e}},function(t,n,e){e(98),t.exports=e(3).Object.assign},function(t,n,e){var r=e(5);r(r.S+r.F,\"Object\",{assign:e(56)})},function(t,n){var e;e=function(){return this}();try{e=e||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(e=window)}t.exports=e},function(t,n,e){\"use strict\";e.r(n);var r={};e.r(r),e.d(r,\"keyboardHandler\",(function(){return et})),e.d(r,\"mouseHandler\",(function(){return rt})),e.d(r,\"resizeHandler\",(function(){return ot})),e.d(r,\"selectHandler\",(function(){return it})),e.d(r,\"touchHandler\",(function(){return ut})),e.d(r,\"wheelHandler\",(function(){return ct}));\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar o=function(t,n){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var e in n)n.hasOwnProperty(e)&&(t[e]=n[e])})(t,n)},i=function(){return(i=Object.assign||function(t){for(var n,e=1,r=arguments.length;e=0;c--)(o=t[c])&&(u=(i<3?o(u):i>3?o(n,e,u):o(n,e))||u);return i>3&&u&&Object.defineProperty(n,e,u),u}e(59),e(80),e(85),e(94),e(97);var c=function(t){var n=typeof t;return null!=t&&(\"object\"==n||\"function\"==n)},s=e(57),a=\"object\"==typeof self&&self&&self.Object===Object&&self,f=s.a||a||Function(\"return this\")(),l=f.Symbol,p=Object.prototype,h=p.hasOwnProperty,d=p.toString,v=l?l.toStringTag:void 0,y=Object.prototype.toString,m=l?l.toStringTag:void 0,g=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":m&&m in Object(t)?function(t){var n=h.call(t,v),e=t[v];try{t[v]=void 0;var r=!0}catch(t){}var o=d.call(t);return r&&(n?t[v]=e:delete t[v]),o}(t):function(t){return y.call(t)}(t)},b=/^\\s+|\\s+$/g,x=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,S=parseInt,E=function(t){if(\"number\"==typeof t)return t;if(function(t){return\"symbol\"==typeof t||function(t){return null!=t&&\"object\"==typeof t}(t)&&\"[object Symbol]\"==g(t)}(t))return NaN;if(c(t)){var n=\"function\"==typeof t.valueOf?t.valueOf():t;t=c(n)?n+\"\":n}if(\"string\"!=typeof t)return 0===t?t:+t;t=t.replace(b,\"\");var e=_.test(t);return e||w.test(t)?S(t.slice(2),e?2:8):x.test(t)?NaN:+t},O=function(t,n,e){return void 0===e&&(e=n,n=void 0),void 0!==e&&(e=(e=E(e))==e?e:0),void 0!==n&&(n=(n=E(n))==n?n:0),function(t,n,e){return t==t&&(void 0!==e&&(t=t<=e?t:e),void 0!==n&&(t=t>=n?t:n)),t}(E(t),n,e)};function T(t,n){return void 0===t&&(t=-1/0),void 0===n&&(n=1/0),function(e,r){var o=\"_\"+r;Object.defineProperty(e,r,{get:function(){return this[o]},set:function(e){Object.defineProperty(this,o,{value:O(e,t,n),enumerable:!1,writable:!0,configurable:!0})},enumerable:!0,configurable:!0})}}function A(t,n){var e=\"_\"+n;Object.defineProperty(t,n,{get:function(){return this[e]},set:function(t){Object.defineProperty(this,e,{value:!!t,enumerable:!1,writable:!0,configurable:!0})},enumerable:!0,configurable:!0})}var M=function(){return f.Date.now()},P=Math.max,j=Math.min,k=function(t,n,e){var r,o,i,u,s,a,f=0,l=!1,p=!1,h=!0;if(\"function\"!=typeof t)throw new TypeError(\"Expected a function\");function d(n){var e=r,i=o;return r=o=void 0,f=n,u=t.apply(i,e)}function v(t){var e=t-a;return void 0===a||e>=n||e<0||p&&t-f>=i}function y(){var t=M();if(v(t))return m(t);s=setTimeout(y,function(t){var e=n-(t-a);return p?j(e,i-(t-f)):e}(t))}function m(t){return s=void 0,h&&r?d(t):(r=o=void 0,u)}function g(){var t=M(),e=v(t);if(r=arguments,o=this,a=t,e){if(void 0===s)return function(t){return f=t,s=setTimeout(y,n),l?d(t):u}(a);if(p)return clearTimeout(s),s=setTimeout(y,n),d(a)}return void 0===s&&(s=setTimeout(y,n)),u}return n=E(n)||0,c(e)&&(l=!!e.leading,i=(p=\"maxWait\"in e)?P(E(e.maxWait)||0,n):i,h=\"trailing\"in e?!!e.trailing:h),g.cancel=function(){void 0!==s&&clearTimeout(s),f=0,r=a=o=s=void 0},g.flush=function(){return void 0===s?u:m(M())},g};function D(){for(var t=[],n=0;no-20?f.x=s-o+20:si-20?f.y=a-i+20:a=r)\"function\"==typeof s&&s.call(t);else{var i=requestAnimationFrame(n);K.set(t,i)}}()}(this,t,n,e,r)},t.prototype.scrollIntoView=function(t,n){void 0===n&&(n={}),function(t,n,e){var r=void 0===e?{}:e,o=r.alignToTop,i=void 0===o||o,u=r.onlyScrollIfNeeded,c=void 0!==u&&u,s=r.offsetTop,a=void 0===s?0:s,f=r.offsetLeft,l=void 0===f?0:f,p=r.offsetBottom,h=void 0===p?0:p,d=t.containerEl,v=t.bounding,y=t.offset,m=t.limit;if(n&&d.contains(n)){var g=n.getBoundingClientRect();if(!c||!t.isVisible(n)){var b=i?g.top-v.top-a:g.bottom-v.bottom+h;t.setMomentum(g.left-v.left-l,O(b,-y.y,m.y-y.y))}}}(this,t,n)},t.prototype.addListener=function(t){if(\"function\"!=typeof t)throw new TypeError(\"[smooth-scrollbar] scrolling listener should be a function\");this._listeners.add(t)},t.prototype.removeListener=function(t){this._listeners.delete(t)},t.prototype.addTransformableMomentum=function(t,n,e,r){this._updateDebounced();var o=this._plugins.reduce((function(t,n){return n.transformDelta(t,e)||t}),{x:t,y:n}),i=!this._shouldPropagateMomentum(o.x,o.y);i&&this.addMomentum(o.x,o.y),r&&r.call(this,i)},t.prototype.addMomentum=function(t,n){this.setMomentum(this._momentum.x+t,this._momentum.y+n)},t.prototype.setMomentum=function(t,n){0===this.limit.x&&(t=0),0===this.limit.y&&(n=0),this.options.renderByPixels&&(t=Math.round(t),n=Math.round(n)),this._momentum.x=t,this._momentum.y=n},t.prototype.updatePluginOptions=function(t,n){this._plugins.forEach((function(e){e.name===t&&Object.assign(e.options,n)}))},t.prototype.destroy=function(){var t=this.containerEl,n=this.contentEl;!function(t){var n=z.get(t);n&&(n.forEach((function(t){var n=t.elem,e=t.eventName,r=t.handler;n.removeEventListener(e,r,C())})),z.delete(t))}(this),this._listeners.clear(),this.setMomentum(0,0),cancelAnimationFrame(this._renderID),this._observer&&this._observer.disconnect(),lt.delete(this.containerEl);for(var e=Array.from(n.childNodes);t.firstChild;)t.removeChild(t.firstChild);e.forEach((function(n){t.appendChild(n)})),B(t,{overflow:\"\"}),t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,this._plugins.forEach((function(t){t.onDestroy()})),this._plugins.length=0},t.prototype._init=function(){var t=this;this.update(),Object.keys(r).forEach((function(n){r[n](t)})),this._plugins.forEach((function(t){t.onInit()})),this._render()},t.prototype._updateDebounced=function(){this.update()},t.prototype._shouldPropagateMomentum=function(t,n){void 0===t&&(t=0),void 0===n&&(n=0);var e=this.options,r=this.offset,o=this.limit;if(!e.continuousScrolling)return!1;0===o.x&&0===o.y&&this._updateDebounced();var i=O(t+r.x,0,o.x),u=O(n+r.y,0,o.y),c=!0;return(c=(c=c&&i===r.x)&&u===r.y)&&(r.x===o.x||0===r.x||r.y===o.y||0===r.y)},t.prototype._render=function(){var t=this._momentum;if(t.x||t.y){var n=this._nextTick(\"x\"),e=this._nextTick(\"y\");t.x=n.momentum,t.y=e.momentum,this.setPosition(n.position,e.position)}var r=i({},this._momentum);this._plugins.forEach((function(t){t.onRender(r)})),this._renderID=requestAnimationFrame(this._render.bind(this))},t.prototype._nextTick=function(t){var n=this.options,e=this.offset,r=this._momentum,o=e[t],i=r[t];if(Math.abs(i)<=.1)return{momentum:0,position:o+i};var u=i*(1-n.damping);return n.renderByPixels&&(u|=0),{momentum:u,position:o+i-u}},u([D(100,{leading:!0})],t.prototype,\"_updateDebounced\",null),t}(),ht=\"\\n[data-scrollbar] {\\n display: block;\\n position: relative;\\n}\\n\\n.scroll-content {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n}\\n\\n.scrollbar-track {\\n position: absolute;\\n opacity: 0;\\n z-index: 1;\\n background: rgba(222, 222, 222, .75);\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-transition: opacity 0.5s 0.5s ease-out;\\n transition: opacity 0.5s 0.5s ease-out;\\n}\\n.scrollbar-track.show,\\n.scrollbar-track:hover {\\n opacity: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n}\\n\\n.scrollbar-track-x {\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 8px;\\n}\\n.scrollbar-track-y {\\n top: 0;\\n right: 0;\\n width: 8px;\\n height: 100%;\\n}\\n.scrollbar-thumb {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 8px;\\n height: 8px;\\n background: rgba(0, 0, 0, .5);\\n border-radius: 4px;\\n}\\n\",dt=\"smooth-scrollbar-style\",vt=!1;function yt(){if(!vt&&\"undefined\"!=typeof window){var t=document.createElement(\"style\");t.id=dt,t.textContent=ht,document.head&&document.head.appendChild(t),vt=!0}}e.d(n,\"ScrollbarPlugin\",(function(){return tt}));\n/*!\n * cast `I.Scrollbar` to `Scrollbar` to avoid error\n *\n * `I.Scrollbar` is not assignable to `Scrollbar`:\n * \"privateProp\" is missing in `I.Scrollbar`\n *\n * @see https://github.com/Microsoft/TypeScript/issues/2672\n */\nvar mt=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return function(t,n){function e(){this.constructor=t}o(t,n),t.prototype=null===n?Object.create(n):(e.prototype=n.prototype,new e)}(n,t),n.init=function(t,n){if(!t||1!==t.nodeType)throw new TypeError(\"expect element to be DOM Element, but got \"+t);return yt(),lt.has(t)?lt.get(t):new pt(t,n)},n.initAll=function(t){return Array.from(document.querySelectorAll(\"[data-scrollbar]\"),(function(e){return n.init(e,t)}))},n.has=function(t){return lt.has(t)},n.get=function(t){return lt.get(t)},n.getAll=function(){return Array.from(lt.values())},n.destroy=function(t){var n=lt.get(t);n&&n.destroy()},n.destroyAll=function(){lt.forEach((function(t){t.destroy()}))},n.use=function(){for(var t=[],n=0;n\"+this.escape_html(t.group_label)+\"\"+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e=\"\",h=0,n=0,r=(o=this.results_data).length;n=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push(\"active-result\"),!t.disabled||t.selected&&this.is_multiple||e.push(\"disabled-result\"),t.selected&&e.push(\"result-selected\"),null!=t.group_array_index&&e.push(\"group-option\"),\"\"!==t.classes&&e.push(t.classes),s=document.createElement(\"li\"),s.className=e.join(\" \"),t.style&&(s.style.cssText=t.style),s.setAttribute(\"data-option-array-index\",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):\"\"},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push(\"group-result\"),t.classes&&e.push(t.classes),s=document.createElement(\"li\"),s.className=e.join(\" \"),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):\"\"},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t\"+this.escape_html(s)+\"\"+this.escape_html(p)),null!=a&&(a.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(\"\"),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:\"(^|\\\\s|\\\\b)\"+t+\"[^\\\\s]*\",this.enable_split_word_search||this.search_contains||(s=\"^\"+s),e=this.case_sensitive_search?\"\":\"i\",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+\"px\"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement(\"div\")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'\\n '+this.default_text+'\\n
\\n
\\n
\\n
\\n \\n
\\n
    \\n
    '},t.prototype.get_multi_html=function(){return'
      \\n
    • \\n \\n
    • \\n
    \\n
    \\n
      \\n
      '},t.prototype.get_no_results_html=function(t){return'
    • \\n '+this.results_none_found+\" \"+this.escape_html(t)+\"\\n
    • \"},t.browser_is_supported=function(){return\"Microsoft Internet Explorer\"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text=\"Select Some Options\",t.default_single_text=\"Select an Option\",t.default_no_result_text=\"No results match\",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,r;r=(n=t(this)).data(\"chosen\"),\"destroy\"!==i?r instanceof s||n.data(\"chosen\",new s(this,i)):r instanceof s&&r.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return r(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=[\"chosen-container\"]).push(\"chosen-container-\"+(this.is_multiple?\"multi\":\"single\")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push(\"chosen-rtl\"),s={\"class\":e.join(\" \"),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\\w]/g,\"_\")+\"_chosen\"),this.container=t(\"
      \",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find(\"div.chosen-drop\").first(),this.search_field=this.container.find(\"input\").first(),this.search_results=this.container.find(\"ul.chosen-results\").first(),this.search_field_scale(),this.search_no_results=this.container.find(\"li.no-results\").first(),this.is_multiple?(this.search_choices=this.container.find(\"ul.chosen-choices\").first(),this.search_container=this.container.find(\"li.search-field\").first()):(this.search_container=this.container.find(\"div.chosen-search\").first(),this.selected_item=this.container.find(\".chosen-single\").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger(\"chosen:ready\",{chosen:this})},n.prototype.register_observers=function(){return this.container.on(\"touchstart.chosen\",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on(\"touchend.chosen\",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on(\"mousedown.chosen\",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on(\"mouseup.chosen\",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on(\"mouseenter.chosen\",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on(\"mouseleave.chosen\",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on(\"mouseup.chosen\",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on(\"mouseover.chosen\",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on(\"mouseout.chosen\",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on(\"mousewheel.chosen DOMMouseScroll.chosen\",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on(\"touchstart.chosen\",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on(\"touchmove.chosen\",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on(\"touchend.chosen\",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on(\"chosen:updated.chosen\",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on(\"chosen:activate.chosen\",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on(\"chosen:open.chosen\",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on(\"chosen:close.chosen\",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on(\"blur.chosen\",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on(\"keyup.chosen\",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on(\"keydown.chosen\",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on(\"focus.chosen\",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on(\"cut.chosen\",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on(\"paste.chosen\",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on(\"click.chosen\",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on(\"click.chosen\",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off(\"click.chosen\",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off(\"click.chosen\"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData(\"chosen\"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents(\"fieldset\").is(\":disabled\"),this.container.toggleClass(\"chosen-disabled\",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off(\"focus.chosen\",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on(\"focus.chosen\",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||\"mousedown\"!==(s=e.type)&&\"touchstart\"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass(\"search-choice-close\")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents(\"a.chosen-single\").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(\"\"),t(this.container[0].ownerDocument).on(\"click.chosen\",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if(\"ABBR\"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),\"DOMMouseScroll\"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass(\"chosen-container-active\"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off(\"click.chosen\",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass(\"chosen-container-active\"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass(\"chosen-container-active\"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(\".chosen-container\")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find(\"li.search-choice\").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass(\"chosen-container-single-nosearch\")):(this.search_field[0].readOnly=!1,this.container.removeClass(\"chosen-container-single-nosearch\"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,r;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass(\"highlighted\"),i=parseInt(this.search_results.css(\"maxHeight\"),10),r=this.search_results.scrollTop(),n=i+r,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s0)return this.form_field_label.on(\"click.chosen\",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass(\"default\")):(this.search_field.val(\"\"),this.search_field.removeClass(\"default\"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass(\"active-result\")?t(e.target):t(e.target).parents(\".active-result\").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass(\"active-result\")?t(e.target):t(e.target).parents(\".active-result\").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass(\"active-result\")||t(e.target).parents(\".active-result\").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t(\"
    • \",{\"class\":\"search-choice\"}).html(\"\"+this.choice_label(e)+\"\"),e.disabled?s.addClass(\"search-choice-disabled\"):((i=t(\"\",{\"class\":\"search-choice-close\",\"data-option-array-index\":e.array_index})).on(\"click.chosen\",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute(\"data-option-array-index\")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents(\"li\").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find(\"abbr\").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger(\"chosen:maxselected\",{chosen:this}),!1):(this.is_multiple?e.removeClass(\"active-result\"):this.reset_single_select_options(),e.addClass(\"result-selected\"),s=this.results_data[e[0].getAttribute(\"data-option-array-index\")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(\"\"),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass(\"chosen-default\"):(this.single_deselect_control_build(),this.selected_item.removeClass(\"chosen-default\")),this.selected_item.find(\"span\").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find(\"abbr\").length||this.selected_item.find(\"span\").first().after(''),this.selected_item.addClass(\"chosen-single-with-deselect\")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t(\"
      \").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(\".result-selected.active-result\"),null!=(t=e.length?e.first():this.search_results.find(\".active-result\").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger(\"chosen:no_results\",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(\".no-results\").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll(\"li.active-result\").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll(\"li.active-result\")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find(\"a\").first()),this.clear_backstroke()):(t=this.search_container.siblings(\"li.search-choice\").last()).length&&!t.hasClass(\"search-choice-disabled\")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass(\"search-choice-focus\")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass(\"search-choice-focus\"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,r,o,h;if(this.is_multiple){for(r={position:\"absolute\",left:\"-1000px\",top:\"-1000px\",display:\"none\",whiteSpace:\"pre\"},s=0,i=(o=[\"fontSize\",\"fontStyle\",\"fontWeight\",\"fontFamily\",\"lineHeight\",\"textTransform\",\"letterSpacing\"]).length;s\").css(r)).text(this.get_search_field_value()),t(\"body\").append(e),h=e.width()+25,e.remove(),this.container.is(\":visible\")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger(\"input\",t),this.form_field_jq.trigger(\"change\",t)},n}()}).call(this);","$(document).ready(() => {\n const $expand = $('.expand');\n const cExpand = 'expand--load';\n\n // for expand button\n $expand.on('click', function (e) {\n e.preventDefault();\n $(this).toggleClass(cExpand);\n });\n});\n","$(document).ready(function(){\n $(\".toggle-btn button\").on('click', function(){\n const input = $(this).parent().find('input');\n input.prop('checked', !input.prop('checked'))\n })\n});\n","$('.topbar__button').on('click', function(){\n if($(document).width()>576){\n $('.sidebar').toggleClass('sidebar--collapse');\n }\n else{\n $('.sidebar').toggleClass('sidebar--show');\n }\n $('.layout').toggleClass('layout--collapse')\n});\n\n$('.topbar__search-btn').on('click', function (e){\n e.preventDefault();\n $(\".topbar__search-field\").toggleClass(\"topbar__search-field--open\")\n});\n\n","$(document).ready(function(){\n $(\".collapse__title\").on(\"click\", function(){\n $(this).parent().toggleClass(\"closed\");\n $(this).parent().toggleClass(\"opened\");\n });\n});\n","$('.sidebar__category').on('click', function(){\n $(this).parent().toggleClass('sidebar__category-wrap--open');\n});\n","window.loading = function(self) {\n const object = $(self).parent();\n object.prepend('
      ');\n setTimeout(() => object.find('.panel__refresh').remove(), 5000);\n};\n\n$(\".panel .panel__btns .panel__btn:first-child\").on('click', function () {\n $(this).closest('.panel').toggleClass('panel--collapse');\n // $(this).parent().find('.panel').toggleClass('panel--collapse');\n\n});\n\n","const users = ['Peter Jackson', 'Lora Melbourn', 'Cat Mew', 'Liza Orly', 'Michael Bro'];\n\n$(\".chat1\").show();\n$(\".chat2\").hide();\n$(\".chat3\").hide();\n$(\".chat4\").hide();\n$(\".chat5\").hide();\n\n$('.chat__form').on(\"keypress\", function(e) {\n if(e.which == 13) {\n e.preventDefault();\n return false;\n }\n})\n\n$('.chat__contacts-scroll button[type=\"button\"]').on('click', function(){\n const name = $(this).find('.chat__contact-name').text();\n const number = users.indexOf(name)+1;\n $(\".chat__dialog-messages-wrap\").each((_, val) => {\n if($(val).hasClass(`chat${number}`)){\n $(val).show();\n } else {\n $(val).hide();\n }\n });\n});\n\nconst chat = $('.chat');\nconst list = $('.chat__contact-list')\n$('#chat-mobile-button').on('click', function(e) {\n chat.toggleClass('chat--open');\n list.toggleClass('chat__contact-list--open');\n e.stopPropagation();\n})\n\n$('.chat__dialog').on('click', function() {\n if (chat.hasClass('chat--open')) {\n chat.removeClass('chat--open');\n list.removeClass('chat__contact-list--open');\n }\n})\n\n$('.chat__contact').on('click', function(e) {\n chat.removeClass('chat--open');\n list.removeClass('chat__contact-list--open');\n})","$('.dashboard__carousel').slick({\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n dots: true,\n});\n\t","$(document).ready(function() {\n $(\".basic-form-select\").chosen();\n $(\".basic-form-select-multi\").chosen({\n placeholder_text_multiple: ' ',\n });\n $('.passwordClick').on('click', function(e){\n e.preventDefault();\n const input = $(this).parent().find('input');\n $(this).toggleClass('active');\n input.attr('type', input.attr('type') === 'password' ? 'text' : 'password');\n });\n});\n","window.tinymce.init({\n selector: '.text-editor',\n plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern help',\n toolbar: 'formatselect | bold italic strikethrough forecolor backcolor permanentpen | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | addcomment',\n image_advtab: true,\n branding: false,\n content_css: [\n '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',\n '//www.tiny.cloud/css/codepen.min.css'\n ],\n importcss_append: true,\n height: 400,\n template_cdate_format: '[CDATE: %m/%d/%Y : %H:%M:%S]',\n template_mdate_format: '[MDATE: %m/%d/%Y : %H:%M:%S]',\n image_caption: true,\n spellchecker_dialog: true,\n spellchecker_whitelist: ['Ephox', 'Moxiecode'],\n content_style: '.mce-annotation { background: #fff0b7; } .tc-active-annotation {background: #ffe168; color: black; }'\n});\n\n$('.mailhide').hide();\n$('.composehide').hide();\n$('.inbox__email-reply div').hide();\n\n\n$('.inbox__mailbox-list-btn, .inbox__email-reply-btn-full').on('click', function () {\n $('.tablehide').hide();\n $('.mailhide').hide();\n $('.composehide').show();\n});\n\n$('.inbox__list-button, .inbox__email-back').on('click', function () {\n $('.tablehide').show();\n $('.mailhide').hide();\n $('.composehide').hide();\n if ($(this).hasClass('inbox__label')) {\n $('.inbox__label.active').removeClass('active');\n $(this).addClass('active');\n } else {\n $('.inbox__list-button > .active').removeClass('active');\n $(this).find('div').addClass('active');\n }\n});\n\n$('.inbox__email-list-item td:not(:first-child)').on('click', function () {\n $('.tablehide').hide();\n $('.mailhide').show();\n $('.composehide').hide();\n});\n\n$(\".inbox__email-reply-textarea \").on('click', function(){\n $('.inbox__email-reply-placeholder').hide();\n $(this).parent().find('div').show();\n});\n\n$(\".inbox__content button[type='submit']\").on('click', function(){\n alert(window.tinymce.activeEditor.getContent())\n});\n\n$(\"input[name='checkAll']\").on('click', function(event) {\n const checkboxes = document.getElementsByName('checkMail');\n for(var i=0, n=checkboxes.length;i .btn');\n const $btnDropdownArrowBtn = $('.btn-dropdown > .btn-group > .btn:nth-child(2)');\n const sDropdownMenu = '.dropdown-menu';\n const cShow = 'show';\n\n // toggleClass\n const delShowClass = () => {\n const $btnDropdownShow = $(cBtnDropdownShow);\n if ($btnDropdownShow.length) {\n $btnDropdownShow.removeClass(cShow);\n $btnDropdownShow.find(sDropdownMenu).removeClass(cShow);\n }\n };\n\n // simple btnDropdown event\n $btnDropdownBtn.on('click', function () {\n delShowClass();\n $(this).parent().toggleClass(cShow);\n $(this).parent().find(sDropdownMenu).toggleClass(cShow);\n });\n\n // btnDropdown event with extra button\n $btnDropdownArrowBtn.on('click', function () {\n delShowClass();\n $(this).parent().parent().toggleClass(cShow);\n $(this).parent().parent().find(sDropdownMenu).toggleClass(cShow);\n });\n\n // close dropdown if click\n $bntDropdownItem.on('click', delShowClass);\n\n // need for close dropdown if click on page\n if($btnDropdown.length){\n $(document).on('click', e => {\n if ($(cBtnDropdownShow).length && !$(e.target).closest(cBtnDropdownShow).length) delShowClass();\n });\n }\n});\n","$(document).ready(function() {\n $('#my-table').DataTable({\n \"bLengthChange\": false,\n \"searching\": false,\n language: {\n paginate: {\n previous:\n `\n \n `,\n next:\n `\n \n `\n }\n },\n \"drawCallback\": function() {\n $(\".paginate_button\").addClass('pagination__link page-link');\n $(\".paginate_button.previous, .paginate_button.next\").addClass('pagination__link--arrow');\n }\n });\n});\n\nwindow.onload = function () {\n if (!window.jQuery) {\n throw \"jQuery is not loaded\";\n }\n};\n\nclass SimpleTableCellEdition {\n\n constructor(elem, _cellParams) {\n\n this.Elem = elem;\n this.oldContent = $(elem).html();\n this.oldValue = _cellParams.internals.extractValue(elem);\n this.cellParams = _cellParams;\n }\n\n}\n\nclass SimpleTableCellEditor {\n\n\n constructor(_tableId, _params) {\n\n var _instance = this;\n\n _instance.EditionEndOrigin = {\n OutsideTable: 1,\n AnotherCell: 2\n };\n\n if (typeof _tableId === 'undefined')\n _tableId = \"table\";\n\n this.tableId = _tableId; //Store the tableId (One CellEditor must be instantiated for each table)\n\n this.params = _instance._GetExtendedEditorParams(_params); //Load default params over given ones\n this.CellEdition = null; //CellEdition contains the current edited cell\n\n //If DataTable : Handling DataTable reload event\n this._TryHandleDataTableReloadEvent();\n\n //Handle click outside table to end edition\n $(document).mouseup(function (e) {\n\n var container = $(`#${_instance.tableId}`);\n\n if (!container.is(e.target) && container.has(e.target).length === 0) {\n _instance._FreeCurrentCell(_instance.EditionEndOrigin.OutsideTable);\n }\n\n return;\n });\n }\n\n\n SetEditable(elem, _cellParams) {\n\n var _instance = this;\n\n if (!_instance._isValidElem(elem))\n return;\n\n var cellParams = _instance._GetExtendedCellParams(_cellParams);\n\n //If click on td (not already in edit ones)\n $(elem).on('click', function () {\n\n if ($(this).hasClass(_instance.params.inEditClass))\n return;\n\n _instance._EditCell(this, cellParams);\n\n });\n\n\n $(elem).on('keydown', function (event) {\n\n if (!$(this).hasClass(_instance.params.inEditClass))\n return;\n\n\n _instance._HandleKeyPressed(event.which, this, cellParams);\n\n });\n\n }\n\n SetEditableClass(editableClass, _cellParams) {\n\n var _instance = this;\n\n var cellParams = _instance._GetExtendedCellParams(_cellParams);\n\n //If click on td (not already in edit ones)\n $(`#${this.tableId}`).on('click', `td.${editableClass}:not(.${_instance.params.inEditClass})`, function () {\n _instance._EditCell(this, cellParams);\n });\n\n\n $(`#${this.tableId}`).on('keydown', `td.${editableClass}.${_instance.params.inEditClass}`, function (event) {\n\n _instance._HandleKeyPressed(event.which, this, cellParams);\n\n });\n\n }\n\n\n //Private methods\n _HandleKeyPressed(which, elem, cellParams) {\n\n //If validation key is pressed -> end edit cell (keep changes)\n if (cellParams.keys.validation.includes(which))\n this._FreeCell(elem, cellParams, true);\n\n //If cancellation key is pressed -> end edit cell (do not keep changes)\n else if (cellParams.keys.cancellation.includes(which))\n this._FreeCell(elem, cellParams, false);\n\n }\n\n _EditCell(elem, cellParams) {\n\n //Triggering before entering edition mode event\n var onEditEnterEvent = this._FireOnEditEnterEvent(elem);\n\n if (onEditEnterEvent.isDefaultPrevented())\n return;\n\n //We free up hypothetical previous cell\n this._FreeCurrentCell(this.EditionEndOrigin.AnotherCell);\n\n this.CellEdition = new SimpleTableCellEdition(elem, cellParams);\n\n //Storing DataTable index if table is DataTable\n if (this.isDataTable) {\n this.CellEdition.cellIndex = $(`#${this.tableId}`).DataTable().cell($(elem)).index();\n }\n\n //Extract old/current value from cell\n var oldVal = cellParams.internals.extractValue(elem);\n\n //flagging working cell\n $(elem).addClass(this.params.inEditClass);\n\n //Rendering\n cellParams.internals.renderEditor(elem, oldVal);\n\n //Triggering edition mode entered event\n this._FireOnEditEnteredEvent(elem, oldVal);\n\n }\n\n _EndEditCell(elem, cellParams) {\n this._FreeCell(elem, cellParams, true);\n }\n\n _CancelEditCell(elem, cellParams) {\n this._FreeCell(elem, cellParams, false);\n }\n\n _FreeCell(elem, cellParams, keepChanges) {\n\n if (!this._isValidElem(elem) || this.CellEdition === null)\n return;\n\n //Triggering before exit event\n var onEditExitEvent = this._FireOnEditExitEvent(elem, this.CellEdition.oldValue);\n if (onEditExitEvent.isDefaultPrevented())\n return;\n\n //Get new val\n var newVal = cellParams.internals.extractEditorValue(elem);\n\n //clean cell\n $(elem).removeClass(this.params.inEditClass);\n $(elem).html('');\n\n //if validation method return false for new value AND value changed\n if (!cellParams.validation(newVal) || this.CellEdition.oldValue === newVal)\n keepChanges = false;\n\n //format new value\n var formattedNewVal = cellParams.formatter(newVal);\n\n //Trigger on edit exited event\n this._FireOnEditExitedEvent(elem, this.CellEdition.oldValue, formattedNewVal, keepChanges);\n\n if (keepChanges) {\n\n //render new value in cell\n cellParams.internals.renderValue(elem, formattedNewVal);\n\n //Trigger custom event\n this._FireEditedEvent(elem, this.CellEdition.oldValue, formattedNewVal);\n\n }\n else {\n\n //render old value\n $(elem).html(this.CellEdition.oldContent);\n\n }\n\n this.CellEdition = null;\n }\n\n _FreeCurrentCell(editionEndOrigin) {\n\n var current = this._GetCurrentEdition();\n\n if (current === null)\n return;\n\n var keepChanges = true;\n\n //If cell freeing comes from outside table click and cell params cause cancellation from outside table clicks\n if (editionEndOrigin === this.EditionEndOrigin.OutsideTable && current.cellParams.behaviour.outsideTableClickCauseCancellation)\n keepChanges = false; //We do not keep changes (cancellation)\n\n //If cell freeing comes from another cell click and cell params cause cancellation from another cells clicks\n if (editionEndOrigin === this.EditionEndOrigin.AnotherCell && current.cellParams.behaviour.anotherCellClickCauseCancellation)\n keepChanges = false; //We do not keep changes (cancellation)\n\n this._FreeCell(current.Elem, current.cellParams, keepChanges);\n\n\n }\n\n _GetCurrentEdition() {\n\n return (this.CellEdition === null ? null : this.CellEdition);\n }\n\n\n _GetExtendedEditorParams(_params) {\n\n var _instance = this;\n\n return $.extend(true, {}, _instance._GetDefaultEditorParams(), _params);\n\n }\n\n _GetExtendedCellParams(_cellParams) {\n\n var _instance = this;\n\n return $.extend(true, {}, _instance._GetDefaultCellParams(), _cellParams);\n\n }\n\n\n //Events\n _FireOnEditEnterEvent(elem) { //Before entering edit Mode\n\n var evt = jQuery.Event(\"cell:onEditEnter\", { element: elem });\n\n $(`#${this.tableId}`).trigger(evt);\n\n return evt;\n }\n\n _FireOnEditEnteredEvent(elem, oldVal) { //After entering edit mode\n\n $(`#${this.tableId}`).trigger({\n type: \"cell:onEditEntered\",\n element: elem,\n oldValue: oldVal\n });\n }\n\n _FireOnEditExitEvent(elem, oldVal) { //Before exiting edit mode\n\n var evt = jQuery.Event(\"cell:onEditExit\", { element: elem, oldValue: oldVal });\n\n $(`#${this.tableId}`).trigger(evt);\n\n return evt;\n }\n\n _FireOnEditExitedEvent(elem, oldVal, newVal, applied) { //After exiting edit mode\n\n $(`#${this.tableId}`).trigger({\n type: \"cell:onEditExited\",\n element: elem,\n newValue: newVal,\n oldValue: oldVal,\n applied: applied\n });\n }\n\n _FireEditedEvent(elem, oldVal, newVal) {\n\n $(`#${this.tableId}`).trigger({\n type: \"cell:edited\",\n element: elem,\n newValue: newVal,\n oldValue: oldVal\n });\n }\n\n\n //DataTable specific methods\n _TryHandleDataTableReloadEvent() {\n\n var _instance = this;\n this.isDataTable = false;\n\n try {\n if ($.fn.DataTable.isDataTable(`#${_instance.tableId}`))\n _instance.isDataTable = true;\n } catch (e) {\n return;\n }\n\n if (_instance.isDataTable) {\n\n $(`#${_instance.tableId}`).on('draw.dt', function () {\n\n if (_instance.CellEdition !== null && _instance.CellEdition.Elem !== null) {\n\n var node = $(`#${_instance.tableId}`).DataTable().cell(_instance.CellEdition.cellIndex).node();\n _instance._EditCell(node, _instance.CellEdition.cellParams);\n\n }\n\n });\n\n }\n\n }\n\n\n\n //Defaults\n _GetDefaultEditorParams() {\n\n return {\n inEditClass: \"inEdit\" //class used to flag cell in edit mode\n };\n }\n\n _GetDefaultCellParams() {\n\n return {\n validation: () => { return true; }, //method used to validate new value\n formatter: (value) => { return value; }, //Method used to format new value\n keys: {\n validation: [13],\n cancellation: [27]\n },\n behaviour: {\n outsideTableClickCauseCancellation: false,\n anotherCellClickCauseCancellation: false\n },\n internals: this._GetDefaultInternals()\n };\n\n }\n\n _GetDefaultInternals() {\n\n return {\n renderValue: (elem, formattedNewVal) => { $(elem).text(formattedNewVal); },\n renderEditor: (elem, oldVal) => {\n $(elem).html(``);\n //Focus part\n var input = $(elem).find('input');\n input.focus();\n input.val(oldVal);\n },\n extractEditorValue: (elem) => { return $(elem).find('input').val(); },\n extractValue: (elem) => { return $(elem).text(); }\n };\n\n }\n\n\n\n //Utils\n _isValidElem(elem) {\n return (elem !== null && typeof elem !== 'undefined' && $(elem).length > 0);\n }\n\n}\n\nvar editor = new SimpleTableCellEditor(\"my-edit-table\", { inEditClass: \"busy\" } );\n\neditor.SetEditableClass(\"editMe\", { //tds with .editMe class will be editable\n keys: {\n validation: [13, 107, 35], //these keys will trigger validation (evt.which)\n cancellation: [27, 109] //these keys will trigger cancellation (evt.which)\n }\n\n});\n","$('.dashboard__table-more').click(function() {\n $(this).toggleClass('show');\n $(this).children('.dropdown-menu').toggleClass('show');\n})\n","const todos = {\n priority: 'all',\n items: [\n {\n title: 'Create the main page design',\n text: 'Eldest father can design tastes did joy settle. Roused future he ye an marked. Arose mr rapid in so vexed words. Gay welcome led add lasting chiefly say looking. ',\n date: '22.05.19',\n priority: 'high',\n done: false,\n },\n {\n title: 'Write to Sarah',\n text: 'Eldest father can design tastes did joy settle. Roused future he ye an marked. Arose mr rapid in so vexed words. Gay welcome led add lasting chiefly say looking. ',\n date: '22.05.19',\n priority: 'low',\n done: false,\n },\n {\n title: 'Make a mind-google-map',\n text: 'Eldest father can design tastes did joy settle. Roused future he ye an marked. Arose mr rapid in so vexed words. Gay welcome led add lasting chiefly say looking. ',\n date: '22.05.19',\n priority: 'medium',\n done: false,\n },\n {\n title: 'Write a text',\n text: 'Eldest father can design tastes did joy settle. Roused future he ye an marked. Arose mr rapid in so vexed words. Gay welcome led add lasting chiefly say looking. ',\n date: '22.05.19',\n priority: 'low',\n done: true,\n },\n {\n title: 'Make a blog post about marketing',\n text: 'Eldest father can design tastes did joy settle. Roused future he ye an marked. Arose mr rapid in so vexed words. Gay welcome led add lasting chiefly say looking. ',\n date: '22.05.19',\n priority: 'low',\n done: true,\n },\n ],\n};\n\nconst render = () => {\n let g = true;\n const todos_html = todos.items.filter(x => todos.priority!=='all' ? x.priority === todos.priority : true).sort(a => a.done ? 1 : -1).map( x => {\n let str = '';\n if(x.done && g){\n g = false;\n str += '
      Done
      ';\n }\n return `${str}\n
      \n
      \n
      \n \n
      \n
      \n

      ${x.title}

      \n
      \n

      Due date: ${x.date}

      \n Priority:\n \n
      \n
      \n
      \n
      \n ${x.text}\n
      \n \n
      \n
      \n
      \n
      \n `;\n });\n $('.todo').html(todos_html.join(''));\n $('.checkbox-indicator').on('click', function(){\n const input = $(this).parent().find('input');\n input.prop('checked', !input.prop('checked'));\n const todo = todos.items.filter(x => x.title === input.attr('id'))[0];\n todo.done = !todo.done;\n render();\n });\n $(\".todo__delete-btn\").on('click', function(){\n todos.items.splice(\n todos.items.findIndex(x => x.title === $(this).parent().parent().parent().find('label').attr('for')),\n 1\n );\n render();\n });\n\n};\nrender();\n\n$('.todo__filter-radio').on('click', function(){\n const value = $(this).attr('value');\n if(['low', 'medium', 'high'].includes(value)){\n todos.priority = value;\n render();\n } else {\n todos.priority = 'all';\n render();\n }\n});\n\n$(\".without_search\").chosen({disable_search_threshold: 10});\n$(\".todo-select\").chosen();\n\n\n$(\".form__button-toolbar .btn-secondary\").on('click', () => {\n $(this).find(\"input[type=text], textarea\").val(\"\");\n $('#add_todo').modal('hide');\n});\n\n$(\".modal-content .form\").on('submit', function(e){\n e.preventDefault();\n const items = $(this).serializeArray();\n todos.items.push({\n title: items[0].value,\n text: items[1].value,\n date: items[2].value,\n priority: items[3].value,\n done: false,\n });\n $('#add_todo').modal('hide');\n $(this).find(\"input[type=text], textarea\").val(\"\");\n render();\n});\n","$(document).ready(function(){\n $(\".modal__footer.btn-toolbar .btn\").on('click',function(){\n $(this).closest('.modal').modal('hide');\n });\n});\n","$(function(){\n $('.datepicker').datetimepicker({\n dateFormat: 'dd.mm.y',\n beforeShow: (input, inst) => {\n // modification classes\n const otherClasses = $(input).attr('class').split(' ').filter(x => x!== 'datepicker' && x!=='hasDatepicker');\n $(inst.dpDiv).attr('class').split(' ').forEach(x => {\n if(!['ui-datepicker','ui-widget','ui-widget-content','ui-helper-clearfix','ui-corner-all'].includes(x)){\n if(!otherClasses.includes(x)){\n $(inst.dpDiv).removeClass(x);\n }\n }\n });\n if(otherClasses.length > 0) {\n otherClasses.forEach( x => $(inst.dpDiv).addClass(x))\n }\n },\n onSelect: (date, inst) =>{\n // get val()\n const otherClasses = $(inst.input).attr('class').split(' ').filter(x => x!== 'datepicker' && x!=='hasDatepicker');\n // modification val if class timepicker\n if(!otherClasses.includes('timepicker')){\n $(inst.input).val(date.split(' ')[0])\n }\n }\n // timepicker show if has class timepicker\n }).timepicker({});\n}());\n","","$(document).ready(() => {\n const calendarNode = document.getElementById('calendar');\n if(calendarNode){\n const events = [\n {\n id: 0,\n title: 'All Day Event very long title',\n allDay: true,\n start: new Date(2018, 3, 0),\n end: new Date(2018, 3, 1),\n priority: 'high',\n },\n {\n id: 1,\n title: 'Escape from the Dragon',\n start: new Date(2018, 3, 7),\n end: new Date(2018, 3, 10),\n priority: 'high',\n },\n\n {\n id: 2,\n title: 'DTS STARTS',\n start: new Date(2018, 2, 13, 0, 0, 0),\n end: new Date(2018, 2, 20, 0, 0, 0),\n priority: 'high',\n },\n\n {\n id: 3,\n title: 'DTS ENDS',\n start: new Date(2018, 10, 6, 0, 0, 0),\n end: new Date(2018, 10, 13, 0, 0, 0),\n priority: 'high',\n },\n\n {\n id: 4,\n title: 'Find blacksmith',\n start: new Date(2018, 3, 9, 0, 0, 0),\n end: new Date(2018, 3, 9, 0, 0, 0),\n priority: 'family',\n },\n {\n id: 5,\n title: 'Learn more about princesses',\n start: new Date(2018, 3, 11),\n end: new Date(2018, 3, 13),\n priority: 'high',\n },\n {\n id: 6,\n title: 'Get a new mail',\n start: new Date(2018, 3, 12, 10, 30, 0, 0),\n end: new Date(2018, 3, 12, 12, 30, 0, 0),\n priority: 'non',\n },\n {\n id: 7,\n title: 'Lunch with ghoul',\n start: new Date(2018, 3, 12, 12, 0, 0, 0),\n end: new Date(2018, 3, 12, 13, 0, 0, 0),\n priority: 'non',\n },\n {\n id: 8,\n title: 'Meeting',\n start: new Date(2018, 4, 12, 14, 0, 0, 0),\n end: new Date(2018, 4, 12, 15, 0, 0, 0),\n priority: 'high',\n },\n {\n id: 9,\n title: 'Training of the squire',\n start: new Date(2018, 3, 12, 17, 0, 0, 0),\n end: new Date(2018, 3, 12, 17, 30, 0, 0),\n priority: 'family',\n },\n {\n id: 10,\n title: 'Dinner with King',\n start: new Date(2018, 3, 12, 20, 0, 0, 0),\n end: new Date(2018, 3, 12, 21, 0, 0, 0),\n priority: 'non',\n },\n {\n id: 11,\n title: 'Duel',\n start: new Date(2018, 3, 13, 7, 0, 0),\n end: new Date(2018, 3, 13, 10, 30, 0),\n priority: 'family',\n },\n {\n id: 12,\n title: 'Masked ball',\n start: new Date(2018, 3, 17, 19, 30, 0),\n end: new Date(2018, 3, 18, 2, 0, 0),\n priority: 'family',\n },\n {\n id: 13,\n title: 'Save the Princess from the Dragon',\n start: new Date(2018, 3, 20, 19, 30, 0),\n end: new Date(2018, 3, 22, 2, 0, 0),\n priority: 'high',\n },\n {\n id: 14,\n title: 'Find information about magic',\n start: new Date(2018, 3, 9, 0, 0, 0),\n end: new Date(2018, 3, 11, 0, 0, 0),\n priority: 'non',\n },\n {\n id: 14,\n title: 'Get drink with the Dragon at the wedding',\n start: new Date(2018, 3, 26, 0, 0, 0),\n end: new Date(2018, 3, 26, 0, 0, 0),\n priority: 'non',\n },\n ];\n\n const eventRender = info => {\n let color = '';\n switch (info.event._def.extendedProps.priority) {\n case 'high':\n color = 'rgb(250, 105, 125)'; // red\n break;\n case 'family':\n color = 'rgb(76, 225, 182)'; // green\n break;\n case 'non':\n color = 'rgb(112, 187, 253)'; // blue\n break;\n }\n info.el.style = `background-color: ${color}; color: white; border: 0;`;\n };\n\n const calendar = new window.FullCalendar.Calendar(calendarNode, {\n plugins: ['dayGrid', 'timeGrid'],\n defaultView: 'dayGridMonth',\n eventLimit: true,\n allDaySlot: false,\n defaultDate: new Date(2018, 3, 1),\n events,\n displayEventTime: false,\n header: {\n left: 'today prev next',\n center: 'title',\n right: 'dayGridMonth, timeGridWeek, timeGridDay'\n },\n views: {\n dayGridMonth: {\n eventLimit: 2\n }\n },\n eventRender,\n });\n calendar.render();\n }\n});\n","$(document).ready(function () {\n if ($('.material-class').length) {\n if ($(\".mdl-data-table--selectable\").length) {\n const data = [\n ['Cupcake', 305, 3.7, 67, 4.3],\n ['Donut', 452, 25.0, 51, 4.9],\n ['Eclair', 262, 16.0, 24, 6.0],\n ['Frozen yoghurt', 159, 6.0, 24, 4.0],\n ['Gingerbread', 356, 16.0, 49, 3.9],\n ['Honeycomb', 408, 3.2, 87, 6.5]\n ];\n let items = (new Array(13).fill(0).map((_, index) => [index, ...data[Math.floor(Math.random() * data.length)]]));\n let rowPerPage = 5;\n const onChecked = () => {\n const checkedCheckbox = $('tr input.mdl-checkbox__input:checked');\n if (checkedCheckbox.length) {\n $(\".material-table__toolbar\").html(`\n
      \n
      ${checkedCheckbox.length} selected
      \n
      \n
      \n \n
      \n `).promise().done(function () {\n $(\"#deleteButton\").on('click', function () {\n const inputs = $('tr input.mdl-checkbox__input').toArray();\n const indexs = [];\n inputs.forEach((val, index) => {\n if (index !== 0) {\n if ($(val).prop('checked')) {\n indexs.push(getSortData()[index - 1][0]);\n }\n }\n\n });\n items = items.filter(x => !indexs.includes(x[0]));\n insertData(getPage(), items);\n onChecked();\n if (items.length <= rowPerPage * (getPage() - 1)) {\n const currentPage = Math.ceil(getPage());\n if (currentPage - 1 === 1) {\n $('#prevPage').attr('disabled', true);\n }\n if (items.length > rowPerPage * (currentPage - 1)) {\n $('#nextPage').attr('disabled', false);\n }\n if (currentPage - 1 !== 0) {\n setPage(currentPage - 1);\n }\n } else {\n if (items.length <= rowPerPage * getPage()) {\n $('#nextPage').attr('disabled', true);\n }\n }\n $(\"#page\").text(`${(getPage() - 1) * rowPerPage + 1}-${getPage() * rowPerPage > items.length ? items.length : getPage() * rowPerPage} of ${items.length}`);\n });\n window.componentHandler.upgradeDom(); // upgrade the newest elements\n });\n } else {\n $(\".material-table__toolbar\").html(`\n
      \n\n
      \n
      \n \n
        \n
      • Name
      • \n
      • Calories
      • \n
      • Fat
      • \n
      • Carbs
      • \n
      • Protein
      • \n
      \n
      \n `).promise().done(function () {\n $(\".material-table__filter-menu-item\").on('click', function () {\n $(\".mdl-data-table--selectable th\").eq($(this).index() + 1).trigger('click');\n });\n window.componentHandler.upgradeDom(); // upgrade the newest elements\n });\n }\n };\n const insertData = (page, items) => {\n $(\".mdl-data-table--selectable tbody tr\").remove();\n items.slice((page - 1) * rowPerPage, page * rowPerPage).forEach(x =>\n $(\".mdl-data-table--selectable tbody\").append(`\n \n ${x.map((y, i) =>\n i !== 0 ?\n (typeof y === 'string' ?\n `${y}` :\n `${y}`) : '')}\n \n `)\n );\n\n $(\".material-table__wrap\").find(\".is-upgraded\").each(function () {\n $(this).removeAttr(\"data-upgraded\");\n $(this).find(\".mdl-checkbox\").parent().remove();\n });\n\n window.componentHandler.upgradeDom();\n $('tr input.mdl-checkbox__input').on('change', onChecked);\n $(\".mdl-data-table--selectable tbody tr\").on('mouseup', function () {\n $(this).find('td').first().find('label').trigger('click');\n $(this).find('td').first().find('.mdl-checkbox__input').trigger('blur');\n });\n $(\".mdl-data-table--selectable tbody td label\").on('click', function (e) {\n e.stopPropagation();\n });\n };\n const getPage = () => {\n return Math.ceil(parseInt($(\"#page\").text().split(' ')[0].split('-')[1], 10) / rowPerPage);\n };\n const setPage = (page) => {\n $(\"#page\").text(`${(page - 1) * rowPerPage + 1}-${page * rowPerPage > items.length ? items.length : page * rowPerPage} of ${items.length}`);\n insertData(page, items);\n onChecked();\n };\n const getSortData = () => {\n const ascending = $(\".mdl-data-table--selectable th.mdl-data-table__header--sorted-ascending\");\n const descending = $(\".mdl-data-table--selectable th.mdl-data-table__header--sorted-descending\");\n if (ascending.length) {\n const index = ascending.index();\n return items.sort((a, b) => {\n if (a[index] > b[index]) return 1;\n if (a[index] < b[index]) return -1;\n if (a[index] === b[index]) return 0;\n });\n }\n if (descending.length) {\n const index = descending.index();\n return items.sort((a, b) => {\n if (a[index] > b[index]) return -1;\n if (a[index] < b[index]) return 1;\n if (a[index] === b[index]) return 0;\n });\n }\n return items;\n };\n $(\"ul[for='rowsPerPage'] li\").on('click', function () {\n rowPerPage = parseInt($(this).text(), 10);\n insertData(1, getSortData());\n $('#nextPage').attr('disabled', items.length < rowPerPage);\n $('#prevPage').attr('disabled', true);\n setPage(1);\n $(\"#rowsPerPage label\").text($(this).text());\n });\n $('#nextPage').on('click', function () {\n const currentPage = Math.ceil(getPage());\n if (items.length < rowPerPage * (currentPage + 1)) {\n $('#nextPage').attr('disabled', true);\n }\n if ((currentPage + 1) > 1) {\n $('#prevPage').attr('disabled', false);\n }\n setPage(currentPage + 1);\n });\n $('#prevPage').on('click', function () {\n const currentPage = Math.ceil(getPage());\n if (currentPage - 1 === 1) {\n $('#prevPage').attr('disabled', true);\n }\n if (items.length > rowPerPage * (currentPage - 1)) {\n $('#nextPage').attr('disabled', false);\n }\n setPage(currentPage - 1);\n });\n $('#prevPage').attr('disabled', true);\n insertData(getPage(), items);\n $(\".mdl-data-table--selectable th\").on('click', function () {\n if ($(this).hasClass('mdl-data-table__header--sorted-ascending')) {\n $(this).attr('class', 'mdl-data-table__header--sorted-descending');\n insertData(getPage(), getSortData());\n } else {\n if ($(this).hasClass('mdl-data-table__header--sorted-descending')) {\n $(this).attr('class', 'mdl-data-table__header--sorted-ascending');\n insertData(getPage(), getSortData());\n } else if (!$(this).attr('class')) {\n $(\".mdl-data-table--selectable th\").attr('class', '');\n $(this).attr('class', 'mdl-data-table__header--sorted-ascending');\n insertData(getPage(), getSortData());\n }\n }\n });\n onChecked();\n }\n }\n});\n\n\n(function() {\n \"use strict\";\n\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n /* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\n var componentHandler = {\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n upgradeDom: function(optJsClass, optCssClass) {},\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n upgradeElement: function(element, optJsClass) {},\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n upgradeElements: function(elements) {},\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n upgradeAllRegistered: function() {},\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n registerUpgradedCallback: function(jsClass, callback) {},\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n */\n register: function(config) {},\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n downgradeElements: function(nodes) {}\n };\n\n componentHandler = (function() {\n 'use strict';\n\n /** @type {!Array} */\n var registeredComponents_ = [];\n\n /** @type {!Array} */\n var createdComponents_ = [];\n\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {string} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (typeof optReplace !== 'undefined') {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!Element} element The element to fetch data from.\n * @return {!Array}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!Element} element The element we want to check.\n * @param {string} jsClass The class to check for.\n * @returns {boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Create an event object.\n *\n * @param {string} eventType The type name of the event.\n * @param {boolean} bubbles Whether the event should bubble up the DOM.\n * @param {boolean} cancelable Whether the event can be canceled.\n * @returns {!Event}\n */\n function createEvent_(eventType, bubbles, cancelable) {\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n return new CustomEvent(eventType, {\n bubbles: bubbles,\n cancelable: cancelable\n });\n } else {\n var ev = document.createEvent('Events');\n ev.initEvent(eventType, bubbles, cancelable);\n return ev;\n }\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (typeof optJsClass === 'undefined' &&\n typeof optCssClass === 'undefined') {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {string} */ (optJsClass);\n if (typeof optCssClass === 'undefined') {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n // Allow upgrade to be canceled by canceling emitted event.\n var upgradingEv = createEvent_('mdl-componentupgrading', true, true);\n element.dispatchEvent(upgradingEv);\n if (upgradingEv.defaultPrevented) {\n return;\n }\n\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var upgradedEv = createEvent_('mdl-componentupgraded', true, false);\n element.dispatchEvent(upgradedEv);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (elements instanceof Element) {\n elements = [elements];\n } else {\n elements = Array.prototype.slice.call(elements);\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n upgradeElementInternal(element);\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config\n */\n function registerInternal(config) {\n // In order to support both Closure-compiled and uncompiled code accessing\n // this method, we need to allow for both the dot and array syntax for\n // property access. You'll therefore see the `foo.bar || foo['bar']`\n // pattern repeated across this method.\n var widgetMissing = (typeof config.widget === 'undefined' &&\n typeof config['widget'] === 'undefined');\n var widget = true;\n\n if (!widgetMissing) {\n widget = config.widget || config['widget'];\n }\n\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n classConstructor: config.constructor || config['constructor'],\n className: config.classAsString || config['classAsString'],\n cssClass: config.cssClass || config['cssClass'],\n widget: widget,\n callbacks: []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {?componentHandler.Component} component\n */\n function deconstructComponentInternal(component) {\n if (component) {\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = createEvent_('mdl-componentdowngraded', true, false);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n /**\n * Auxiliary function to downgrade a single node.\n * @param {!Node} node the node to be downgraded\n */\n var downgradeNode = function(node) {\n createdComponents_.filter(function(item) {\n return item.element_ === node;\n }).forEach(deconstructComponentInternal);\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n })();\n\n /**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: Function,\n * classAsString: string,\n * cssClass: string,\n * widget: (string|boolean|undefined)\n * }}\n */\n componentHandler.ComponentConfigPublic; // jshint ignore:line\n\n /**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: string,\n * cssClass: string,\n * widget: (string|boolean),\n * callbacks: !Array\n * }}\n */\n componentHandler.ComponentConfig; // jshint ignore:line\n\n /**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: string,\n * classAsString: string,\n * cssClass: string,\n * widget: string\n * }}\n */\n componentHandler.Component; // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\n componentHandler['upgradeDom'] = componentHandler.upgradeDom;\n componentHandler['upgradeElement'] = componentHandler.upgradeElement;\n componentHandler['upgradeElements'] = componentHandler.upgradeElements;\n componentHandler['upgradeAllRegistered'] =\n componentHandler.upgradeAllRegistered;\n componentHandler['registerUpgradedCallback'] =\n componentHandler.registerUpgradedCallback;\n componentHandler['register'] = componentHandler.register;\n componentHandler['downgradeElements'] = componentHandler.downgradeElements;\n window.componentHandler = componentHandler;\n window['componentHandler'] = componentHandler;\n\n window.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.upgradeElement = function() {};\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.register = function() {};\n }\n });\n\n// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Moller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavic, Darius Bacon\n// MIT license\n if (!Date.now) {\n /**\n * Date.now polyfill.\n * @return {number} the current Date\n */\n Date.now = function () {\n return new Date().getTime();\n };\n Date['now'] = Date.now;\n }\n var vendors = [\n 'webkit',\n 'moz'\n ];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n /**\n * requestAnimationFrame polyfill.\n * @param {!Function} callback the callback function.\n */\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n }\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialButton'] = MaterialButton;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialButton.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n };\n /**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n };\n// Public methods.\n /**\n * Disable button.\n *\n * @public\n */\n MaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n };\n MaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n /**\n * Enable button.\n *\n * @public\n */\n MaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n };\n MaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n /**\n * Initialize element.\n */\n MaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialCheckbox'] = MaterialCheckbox;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n };\n /**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n };\n /**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n };\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n };\n /**\n * Add blur.\n *\n * @private\n */\n MaterialCheckbox.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n };\n// Public methods.\n /**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\n MaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n };\n MaterialCheckbox.prototype['checkToggleState'] = MaterialCheckbox.prototype.checkToggleState;\n /**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\n MaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialCheckbox.prototype['checkDisabled'] = MaterialCheckbox.prototype.checkDisabled;\n /**\n * Disable checkbox.\n *\n * @public\n */\n MaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n };\n MaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n /**\n * Enable checkbox.\n *\n * @public\n */\n MaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n };\n MaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n /**\n * Check checkbox.\n *\n * @public\n */\n MaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n };\n MaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n /**\n * Uncheck checkbox.\n *\n * @public\n */\n MaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n };\n MaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n /**\n * Initialize element.\n */\n MaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialIconToggle'] = MaterialIconToggle;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n };\n /**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n };\n /**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n };\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n };\n /**\n * Add blur.\n *\n * @private\n */\n MaterialIconToggle.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n };\n// Public methods.\n /**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\n MaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n };\n MaterialIconToggle.prototype['checkToggleState'] = MaterialIconToggle.prototype.checkToggleState;\n /**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\n MaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialIconToggle.prototype['checkDisabled'] = MaterialIconToggle.prototype.checkDisabled;\n /**\n * Disable icon toggle.\n *\n * @public\n */\n MaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n };\n MaterialIconToggle.prototype['disable'] = MaterialIconToggle.prototype.disable;\n /**\n * Enable icon toggle.\n *\n * @public\n */\n MaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n };\n MaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n /**\n * Check icon toggle.\n *\n * @public\n */\n MaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n };\n MaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n /**\n * Uncheck icon toggle.\n *\n * @public\n */\n MaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n };\n MaterialIconToggle.prototype['uncheck'] = MaterialIconToggle.prototype.uncheck;\n /**\n * Initialize element.\n */\n MaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialMenu'] = MaterialMenu;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n };\n /**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\n MaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n };\n /**\n * Initialize element.\n */\n MaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick_ = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick_);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown_);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n };\n /**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n };\n /**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n };\n /**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n };\n /**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.hasAttribute('disabled')) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n };\n /**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {number} height Height of the clip rectangle\n * @param {number} width Width of the clip rectangle\n * @private\n */\n MaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = '';\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = '';\n }\n };\n /**\n * Cleanup function to remove animation listeners.\n *\n * @param {Event} evt\n * @private\n */\n MaterialMenu.prototype.removeAnimationEndListener_ = function (evt) {\n evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n };\n /**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\n MaterialMenu.prototype.addAnimationEndListener_ = function () {\n this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n };\n /**\n * Displays the menu.\n *\n * @public\n */\n MaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n // Also check if the clicked element is a menu item\n // if so, do nothing.\n if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n };\n MaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n /**\n * Hides the menu.\n *\n * @public\n */\n MaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.removeProperty('transition-delay');\n }\n // Measure the inner element.\n var rect = this.element_.getBoundingClientRect();\n var height = rect.height;\n var width = rect.width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n };\n MaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n /**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\n MaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n };\n MaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialProgress'] = MaterialProgress;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialProgress.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n /**\n * Set the current progress of the progressbar.\n *\n * @param {number} p Percentage of the progress (0-100)\n * @public\n */\n MaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n };\n MaterialProgress.prototype['setProgress'] = MaterialProgress.prototype.setProgress;\n /**\n * Set the current progress of the buffer.\n *\n * @param {number} p Percentage of the buffer (0-100)\n * @public\n */\n MaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n };\n MaterialProgress.prototype['setBuffer'] = MaterialProgress.prototype.setBuffer;\n /**\n * Initialize element.\n */\n MaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialRadio'] = MaterialRadio;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n };\n /**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n if (typeof radios[i]['MaterialRadio'] !== 'undefined') {\n radios[i]['MaterialRadio'].updateClasses_();\n }\n }\n }\n };\n /**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n };\n /**\n * Update classes.\n *\n * @private\n */\n MaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n };\n /**\n * Add blur.\n *\n * @private\n */\n MaterialRadio.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n };\n// Public methods.\n /**\n * Check the components disabled state.\n *\n * @public\n */\n MaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialRadio.prototype['checkDisabled'] = MaterialRadio.prototype.checkDisabled;\n /**\n * Check the components toggled state.\n *\n * @public\n */\n MaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n };\n MaterialRadio.prototype['checkToggleState'] = MaterialRadio.prototype.checkToggleState;\n /**\n * Disable radio.\n *\n * @public\n */\n MaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n };\n MaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n /**\n * Enable radio.\n *\n * @public\n */\n MaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n };\n MaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n /**\n * Check radio.\n *\n * @public\n */\n MaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.onChange_(null);\n };\n MaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n /**\n * Uncheck radio.\n *\n * @public\n */\n MaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.onChange_(null);\n };\n MaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n /**\n * Initialize element.\n */\n MaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n this.boundChangeHandler_ = this.onChange_.bind(this);\n this.boundFocusHandler_ = this.onChange_.bind(this);\n this.boundBlurHandler_ = this.onBlur_.bind(this);\n this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n };\n window['MaterialSlider'] = MaterialSlider;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialSlider.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n };\n /**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n };\n /**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n };\n /**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n };\n /**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n * @suppress {missingProperties}\n */\n MaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n };\n /**\n * Handle updating of values.\n *\n * @private\n */\n MaterialSlider.prototype.updateValueStyles_ = function () {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n };\n// Public methods.\n /**\n * Disable slider.\n *\n * @public\n */\n MaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n };\n MaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n /**\n * Enable slider.\n *\n * @public\n */\n MaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n };\n MaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n /**\n * Update slider value.\n *\n * @param {number} value The value to which to set the control (optional).\n * @public\n */\n MaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n };\n MaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n /**\n * Initialize element.\n */\n MaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n });\n /**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Snackbar MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialSnackbar = function MaterialSnackbar(element) {\n this.element_ = element;\n this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n if (!this.textElement_) {\n throw new Error('There must be a message element for a snackbar.');\n }\n if (!this.actionElement_) {\n throw new Error('There must be an action element for a snackbar.');\n }\n this.active = false;\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.queuedNotifications_ = [];\n this.setActionHidden_(true);\n };\n window['MaterialSnackbar'] = MaterialSnackbar;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialSnackbar.prototype.Constant_ = {\n // The duration of the snackbar show/hide animation, in ms.\n ANIMATION_LENGTH: 250\n };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialSnackbar.prototype.cssClasses_ = {\n SNACKBAR: 'mdl-snackbar',\n MESSAGE: 'mdl-snackbar__text',\n ACTION: 'mdl-snackbar__action',\n ACTIVE: 'mdl-snackbar--active'\n };\n /**\n * Display the snackbar.\n *\n * @private\n */\n MaterialSnackbar.prototype.displaySnackbar_ = function () {\n this.element_.setAttribute('aria-hidden', 'true');\n if (this.actionHandler_) {\n this.actionElement_.textContent = this.actionText_;\n this.actionElement_.addEventListener('click', this.actionHandler_);\n this.setActionHidden_(false);\n }\n this.textElement_.textContent = this.message_;\n this.element_.classList.add(this.cssClasses_.ACTIVE);\n this.element_.setAttribute('aria-hidden', 'false');\n setTimeout(this.cleanup_.bind(this), this.timeout_);\n };\n /**\n * Show the snackbar.\n *\n * @param {Object} data The data for the notification.\n * @public\n */\n MaterialSnackbar.prototype.showSnackbar = function (data) {\n if (data === undefined) {\n throw new Error('Please provide a data object with at least a message to display.');\n }\n if (data['message'] === undefined) {\n throw new Error('Please provide a message to be displayed.');\n }\n if (data['actionHandler'] && !data['actionText']) {\n throw new Error('Please provide action text with the handler.');\n }\n if (this.active) {\n this.queuedNotifications_.push(data);\n } else {\n this.active = true;\n this.message_ = data['message'];\n if (data['timeout']) {\n this.timeout_ = data['timeout'];\n } else {\n this.timeout_ = 2750;\n }\n if (data['actionHandler']) {\n this.actionHandler_ = data['actionHandler'];\n }\n if (data['actionText']) {\n this.actionText_ = data['actionText'];\n }\n this.displaySnackbar_();\n }\n };\n MaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n /**\n * Check if the queue has items within it.\n * If it does, display the next entry.\n *\n * @private\n */\n MaterialSnackbar.prototype.checkQueue_ = function () {\n if (this.queuedNotifications_.length > 0) {\n this.showSnackbar(this.queuedNotifications_.shift());\n }\n };\n /**\n * Cleanup the snackbar event listeners and accessiblity attributes.\n *\n * @private\n */\n MaterialSnackbar.prototype.cleanup_ = function () {\n this.element_.classList.remove(this.cssClasses_.ACTIVE);\n setTimeout(function () {\n this.element_.setAttribute('aria-hidden', 'true');\n this.textElement_.textContent = '';\n if (!this.actionElement_.getAttribute('aria-hidden')) {\n this.setActionHidden_(true);\n this.actionElement_.textContent = '';\n this.actionElement_.removeEventListener('click', this.actionHandler_);\n }\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.active = false;\n this.checkQueue_();\n }.bind(this), this.Constant_.ANIMATION_LENGTH);\n };\n /**\n * Set the action handler hidden state.\n *\n * @param {boolean} value\n * @private\n */\n MaterialSnackbar.prototype.setActionHidden_ = function (value) {\n if (value) {\n this.actionElement_.setAttribute('aria-hidden', 'true');\n } else {\n this.actionElement_.removeAttribute('aria-hidden');\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialSnackbar,\n classAsString: 'MaterialSnackbar',\n cssClass: 'mdl-js-snackbar',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\n var MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialSpinner'] = MaterialSpinner;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n };\n /**\n * Auxiliary method to create a spinner layer.\n *\n * @param {number} index Index of the layer to be created.\n * @public\n */\n MaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n };\n MaterialSpinner.prototype['createLayer'] = MaterialSpinner.prototype.createLayer;\n /**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\n MaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n };\n MaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n /**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\n MaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n };\n MaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n /**\n * Initialize element.\n */\n MaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialSwitch'] = MaterialSwitch;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n };\n /**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n };\n /**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n };\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n };\n /**\n * Add blur.\n *\n * @private\n */\n MaterialSwitch.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n };\n// Public methods.\n /**\n * Check the components disabled state.\n *\n * @public\n */\n MaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialSwitch.prototype['checkDisabled'] = MaterialSwitch.prototype.checkDisabled;\n /**\n * Check the components toggled state.\n *\n * @public\n */\n MaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n };\n MaterialSwitch.prototype['checkToggleState'] = MaterialSwitch.prototype.checkToggleState;\n /**\n * Disable switch.\n *\n * @public\n */\n MaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n };\n MaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n /**\n * Enable switch.\n *\n * @public\n */\n MaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n };\n MaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n /**\n * Activate switch.\n *\n * @public\n */\n MaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n };\n MaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n /**\n * Deactivate switch.\n *\n * @public\n */\n MaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n };\n MaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n /**\n * Initialize element.\n */\n MaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n var MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialTabs'] = MaterialTabs;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string}\n * @private\n */\n MaterialTabs.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n };\n /**\n * Handle clicks to a tabs component\n *\n * @private\n */\n MaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n };\n /**\n * Reset tab state, dropping active classes\n *\n * @private\n */\n MaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n };\n /**\n * Reset panel state, droping active classes\n *\n * @private\n */\n MaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n };\n /**\n * Initialize element.\n */\n MaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n };\n /**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {Element} tab The HTML element for the tab.\n * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n */\n function MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = ctx.element_.querySelector('#' + href);\n ctx.resetTabState_();\n ctx.resetPanelState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n }\n });\n }\n }\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n };\n window['MaterialTextfield'] = MaterialTextfield;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n HAS_PLACEHOLDER: 'has-placeholder'\n };\n /**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n };\n /**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n };\n /**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTextfield.prototype.onReset_ = function (event) {\n this.updateClasses_();\n };\n /**\n * Handle class updates.\n *\n * @private\n */\n MaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n };\n// Public methods.\n /**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialTextfield.prototype['checkDisabled'] = MaterialTextfield.prototype.checkDisabled;\n /**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkFocus = function () {\n if ((this.element_.querySelector(':focus'))) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }\n };\n MaterialTextfield.prototype['checkFocus'] = MaterialTextfield.prototype.checkFocus;\n /**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity) {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n };\n MaterialTextfield.prototype['checkValidity'] = MaterialTextfield.prototype.checkValidity;\n /**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\n MaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n };\n MaterialTextfield.prototype['checkDirty'] = MaterialTextfield.prototype.checkDirty;\n /**\n * Disable text field.\n *\n * @public\n */\n MaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n };\n MaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n /**\n * Enable text field.\n *\n * @public\n */\n MaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n };\n MaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n /**\n * Update text field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\n MaterialTextfield.prototype.change = function (value) {\n this.input_.value = value || '';\n this.updateClasses_();\n };\n MaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n /**\n * Initialize element.\n */\n MaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n if (this.input_.hasAttribute('placeholder')) {\n this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.boundResetHandler = this.onReset_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n this.input_.addEventListener('reset', this.boundResetHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n if (this.input_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialTooltip'] = MaterialTooltip;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialTooltip.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialTooltip.prototype.CssClasses_ = {\n IS_ACTIVE: 'is-active',\n BOTTOM: 'mdl-tooltip--bottom',\n LEFT: 'mdl-tooltip--left',\n RIGHT: 'mdl-tooltip--right',\n TOP: 'mdl-tooltip--top'\n };\n /**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var top = props.top + props.height / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n var marginTop = -1 * (this.element_.offsetHeight / 2);\n if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n left = props.width / 2;\n if (top + marginTop < 0) {\n this.element_.style.top = '0';\n this.element_.style.marginTop = '0';\n } else {\n this.element_.style.top = top + 'px';\n this.element_.style.marginTop = marginTop + 'px';\n }\n } else {\n if (left + marginLeft < 0) {\n this.element_.style.left = '0';\n this.element_.style.marginLeft = '0';\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n this.element_.style.left = props.left + props.width + 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n } else {\n this.element_.style.top = props.top + props.height + 10 + 'px';\n }\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n };\n /**\n * Hide tooltip on mouseleave or scroll\n *\n * @private\n */\n MaterialTooltip.prototype.hideTooltip_ = function () {\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n };\n /**\n * Initialize element.\n */\n MaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // It's left here because it prevents accidental text selection on Android\n if (!this.forElement_.hasAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n }\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialLayout'] = MaterialLayout;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n RESIZE_TIMEOUT: 100,\n MENU_ICON: '',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n };\n /**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\n MaterialLayout.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32\n };\n /**\n * Modes.\n *\n * @enum {number}\n * @private\n */\n MaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialLayout.prototype.CssClasses_ = {\n CONTAINER: 'mdl-layout__container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n };\n /**\n * Handles scrolling on the content.\n *\n * @private\n */\n MaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n var headerVisible = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n /**\n * Handles a keyboard event on the drawer.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialLayout.prototype.keyboardEventHandler_ = function (evt) {\n // Only react when the drawer is open.\n if (evt.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.toggleDrawer();\n }\n };\n /**\n * Handles changes in screen size.\n *\n * @private\n */\n MaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n };\n /**\n * Handles events of drawer button.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\n MaterialLayout.prototype.drawerToggleHandler_ = function (evt) {\n if (evt && evt.type === 'keydown') {\n if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n // prevent scrolling in drawer nav\n evt.preventDefault();\n } else {\n // prevent other keys\n return;\n }\n }\n this.toggleDrawer();\n };\n /**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\n MaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n };\n /**\n * Handles expanding the header on click\n *\n * @private\n */\n MaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n };\n /**\n * Reset tab state, dropping active classes\n *\n * @private\n */\n MaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n };\n /**\n * Reset panel state, droping active classes\n *\n * @private\n */\n MaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n };\n /**\n * Toggle drawer state\n *\n * @public\n */\n MaterialLayout.prototype.toggleDrawer = function () {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n // Set accessibility properties.\n if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.drawer_.setAttribute('aria-hidden', 'false');\n drawerButton.setAttribute('aria-expanded', 'true');\n } else {\n this.drawer_.setAttribute('aria-hidden', 'true');\n drawerButton.setAttribute('aria-expanded', 'false');\n }\n };\n MaterialLayout.prototype['toggleDrawer'] = MaterialLayout.prototype.toggleDrawer;\n /**\n * Initialize element.\n */\n MaterialLayout.prototype.init = function () {\n if (this.element_) {\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n var focusedElement = this.element_.querySelector(':focus');\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n if (focusedElement) {\n focusedElement.focus();\n }\n var directChildren = this.element_.childNodes;\n var numChildren = directChildren.length;\n for (var c = 0; c < numChildren; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n window.addEventListener('pageshow', function (e) {\n if (e.persisted) {\n // when page is loaded from back/forward cache\n // trigger repaint to let layout scroll in safari\n this.element_.style.overflowY = 'hidden';\n requestAnimationFrame(function () {\n this.element_.style.overflowY = '';\n }.bind(this));\n }\n }.bind(this), false);\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n if (!drawerButton) {\n drawerButton = document.createElement('div');\n drawerButton.setAttribute('aria-expanded', 'false');\n drawerButton.setAttribute('role', 'button');\n drawerButton.setAttribute('tabindex', '0');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n }\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n drawerButton.addEventListener('keydown', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.element_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.element_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n this.obfuscator_ = obfuscator;\n this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n this.drawer_.setAttribute('aria-hidden', 'true');\n }\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove tab buttons depending on scroll position and total\n // window size.\n var tabUpdateHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n tabUpdateHandler();\n // Update tabs when the window resizes.\n var windowResizeHandler = function () {\n // Use timeouts to make sure it doesn't happen too often.\n if (this.resizeTimeoutId_) {\n clearTimeout(this.resizeTimeoutId_);\n }\n this.resizeTimeoutId_ = setTimeout(function () {\n tabUpdateHandler();\n this.resizeTimeoutId_ = null;\n }.bind(this), this.Constant_.RESIZE_TIMEOUT);\n }.bind(this);\n window.addEventListener('resize', windowResizeHandler);\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n };\n /**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {HTMLElement} tab The HTML element for the tab.\n * @param {!Array} tabs Array with HTML elements for all tabs.\n * @param {!Array} panels Array with HTML elements for all panels.\n * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n */\n function MaterialLayoutTab(tab, tabs, panels, layout) {\n /**\n * Auxiliary method to programmatically select a tab in the UI.\n */\n function selectTab() {\n var href = tab.href.split('#')[1];\n var panel = layout.content_.querySelector('#' + href);\n layout.resetTabState_(tabs);\n layout.resetPanelState_(panels);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n }\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n if (!layout.tabBar_.classList.contains(layout.CssClasses_.TAB_MANUAL_SWITCH)) {\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n selectTab();\n }\n });\n }\n tab.show = selectTab;\n }\n window['MaterialLayoutTab'] = MaterialLayoutTab;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\n var MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialDataTable'] = MaterialDataTable;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialDataTable.prototype.Constant_ = {};\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n SELECT_ELEMENT: 'mdl-data-table__select',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n };\n /**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {Element} checkbox Checkbox that toggles the selection state.\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\n MaterialDataTable.prototype.selectRow_ = function (checkbox, row, opt_rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (opt_rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].check();\n opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].uncheck();\n opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n };\n /**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\n MaterialDataTable.prototype.createCheckbox_ = function (row, opt_rows) {\n var label = document.createElement('label');\n var labelClasses = [\n 'mdl-checkbox',\n 'mdl-js-checkbox',\n 'mdl-js-ripple-effect',\n this.CssClasses_.SELECT_ELEMENT\n ];\n label.className = labelClasses.join(' ');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (opt_rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n };\n /**\n * Initialize element.\n */\n MaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n var rows = bodyRows.concat(footRows);\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n }\n rows[i].insertBefore(td, firstCell);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n });\n /**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\n var MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n };\n window['MaterialRipple'] = MaterialRipple;\n /**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\n MaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n };\n /**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\n MaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n };\n /**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n };\n /**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\n MaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n }\n };\n /**\n * Initialize element.\n */\n MaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n /**\n * Getter for frameCount_.\n * @return {number} the frame count.\n */\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n /**\n * Setter for frameCount_.\n * @param {number} fC the frame count.\n */\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n /**\n * Getter for rippleElement_.\n * @return {Element} the ripple element.\n */\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n /**\n * Sets the ripple X and Y coordinates.\n * @param {number} newX the new X coordinate\n * @param {number} newY the new Y coordinate\n */\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n /**\n * Sets the ripple styles.\n * @param {boolean} start whether or not this is the start frame.\n */\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n /**\n * Handles an animation frame.\n */\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n };\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\n componentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n });\n}());\n","$(document).ready(() => {\n const colors = {\n blue: '#36A2EB',\n red: '#FF6384',\n yellow: '#FFCE56',\n green: '#4BC0C0',\n grey: '#E7E9ED',\n violet: '#c88ffa',\n scale: 'rgb(204, 204, 204)',\n };\n const options = {\n legend: {\n position: 'bottom',\n },\n scale: {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n };\n if (document.getElementById('point-sizes')) {\n const data = {\n labels: ['January', 'February', 'March', 'April', 'May'],\n datasets: [\n {\n label: 'Blue',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.blue,\n borderColor: colors.blue,\n borderWidth: 1,\n borderDash: [5, 3],\n pointBackgroundColor: colors.blue,\n pointHoverRadius: 3,\n pointHoverBorderWidth: 1,\n pointRadius: 2,\n pointHitRadius: 10,\n data: [65, 59, 80, 81, 56],\n },\n {\n label: 'Red',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.red,\n borderColor: colors.red,\n borderWidth: 1,\n borderDash: [3, 3],\n pointBackgroundColor: colors.red,\n pointHoverRadius: 2,\n pointHoverBorderWidth: 1,\n pointRadius: 1,\n pointHitRadius: 10,\n data: [5, 7, 54, 32, 87],\n },\n {\n label: 'Yellow',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.yellow,\n borderColor: colors.yellow,\n borderWidth: 1,\n pointBackgroundColor: colors.yellow,\n pointHoverRadius: 5,\n pointHoverBorderWidth: 1,\n pointRadius: 4,\n pointHitRadius: 10,\n data: [25, 54, 2, 48, 78],\n },\n {\n label: 'Green',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.green,\n borderColor: colors.green,\n borderWidth: 1,\n pointBackgroundColor: colors.green,\n pointHoverRadius: 6,\n pointHoverBorderWidth: 1,\n pointRadius: 5,\n pointHitRadius: 10,\n data: [52, 47, 45, 4, 58],\n },\n ],\n };\n\n const options = {\n legend: {\n position: 'bottom',\n },\n scales: {\n xAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n },\n };\n new window.Chart(document.getElementById('point-sizes'), {\n type: 'line',\n data,\n options,\n });\n }\n\n if (document.getElementById('random-animated-line')) {\n const data = {\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\n datasets: [\n {\n label: 'My First Dataset',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.blue,\n borderColor: colors.blue,\n borderWidth: 2,\n pointBackgroundColor: colors.blue,\n pointHoverRadius: 3,\n pointHoverBorderWidth: 1,\n pointRadius: 1,\n pointHitRadius: 10,\n data: [65, 59, 80, 81, 56, 55, 40],\n },\n {\n label: 'My Second Dataset',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.red,\n borderColor: colors.red,\n borderWidth: 2,\n pointBackgroundColor: colors.red,\n pointHoverRadius: 3,\n pointHoverBorderWidth: 1,\n pointRadius: 1,\n pointHitRadius: 10,\n data: [5, 7, 54, 32, 87, 45, 25],\n },\n ],\n };\n\n const options = {\n scales: {\n xAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n },\n };\n window.window.ChartRandomAnimatedLine = new window.Chart(document.getElementById('random-animated-line'), {\n type: 'line',\n data,\n options,\n });\n setInterval(() => {\n const oldDataSet = window.window.ChartRandomAnimatedLine.data.datasets[0];\n const newData = [];\n\n for (let x = 0; x < window.window.ChartRandomAnimatedLine.data.labels.length; x += 1) {\n newData.push(Math.floor(Math.random() * 100));\n }\n\n const newDataSet = {\n ...oldDataSet,\n };\n\n newDataSet.data = newData;\n\n const oldDataSet2 = window.window.ChartRandomAnimatedLine.data.datasets[1];\n const newData2 = [];\n\n for (let x = 0; x < window.window.ChartRandomAnimatedLine.data.labels.length; x += 1) {\n newData2.push(Math.floor(Math.random() * 100));\n }\n\n const newDataSet2 = {\n ...oldDataSet2,\n };\n\n newDataSet2.data = newData2;\n\n window.window.ChartRandomAnimatedLine.data = {\n datasets: [newDataSet, newDataSet2],\n labels: window.window.ChartRandomAnimatedLine.data.labels,\n };\n window.window.ChartRandomAnimatedLine.update();\n }, 4000);\n }\n\n if (document.getElementById('random-animated-bars')) {\n const data = {\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.red,\n borderColor: colors.red,\n borderWidth: 1,\n hoverBackgroundColor: colors.red,\n hoverBorderColor: colors.red,\n data: [65, 59, 80, 81, 56, 55, 45],\n },\n ],\n };\n\n const options = {\n legend: {\n position: 'bottom',\n },\n scales: {\n xAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n },\n };\n window.window.ChartRandomAnimatedBars = new window.Chart(document.getElementById('random-animated-bars'), {\n type: 'bar',\n data,\n options,\n });\n setInterval(() => {\n const oldDataSet = window.window.ChartRandomAnimatedBars.data.datasets[0];\n const newData = [];\n\n for (let x = 0; x < window.window.ChartRandomAnimatedBars.data.labels.length; x += 1) {\n newData.push(Math.floor(Math.random() * 100));\n }\n\n const newDataSet = {\n ...oldDataSet,\n };\n\n newDataSet.data = newData;\n\n window.window.ChartRandomAnimatedBars.data = {\n datasets: [newDataSet],\n labels: window.window.ChartRandomAnimatedBars.data.labels,\n };\n window.window.ChartRandomAnimatedBars.update();\n }, 4000);\n }\n\n if (document.getElementById('polar-area')) {\n const data = {\n datasets: [{\n data: [11, 16, 7, 3, 14],\n backgroundColor: [colors.red, colors.green, colors.yellow, colors.grey, colors.blue],\n label: 'My dataset',\n borderColor: 'rgba(255,255,255,0.54)',\n }],\n labels: ['Red', 'Green', 'Yellow', 'Grey', 'Blue'],\n };\n new window.Chart(document.getElementById('polar-area'), {\n type: 'polarArea',\n data,\n options,\n });\n }\n\n if (document.getElementById('dynamically-refreshed-doughnut')) {\n const getRandomInt = (min, max) => Math.floor(Math.random() * ((max - min) + 1)) + min;\n\n const getState = () => ({\n labels: [\n 'Red',\n 'Blue',\n 'Yellow',\n ],\n datasets: [{\n data: [getRandomInt(50, 200), getRandomInt(100, 150), getRandomInt(150, 250)],\n backgroundColor: [\n colors.red,\n colors.blue,\n colors.yellow,\n ],\n hoverBackgroundColor: [\n colors.red,\n colors.blue,\n colors.yellow,\n ],\n borderColor: 'rgba(255,255,255,0.54)',\n }],\n });\n\n const DynamicallyRefreshedDoughnut = new window.Chart(document.getElementById('dynamically-refreshed-doughnut'), {\n type: 'doughnut',\n data: getState(),\n });\n setInterval(() => {\n DynamicallyRefreshedDoughnut.data = getState();\n DynamicallyRefreshedDoughnut.update();\n }, 4000);\n }\n\n if (document.getElementById('legend-handlers')) {\n const data = {\n labels: [\n 'Red',\n 'Blue',\n 'Yellow',\n ],\n datasets: [{\n data: [300, 50, 100],\n backgroundColor: [\n colors.red,\n colors.blue,\n colors.yellow,\n ],\n hoverBackgroundColor: [\n colors.red,\n colors.blue,\n colors.yellow,\n ],\n borderColor: 'rgba(255,255,255,0.54)',\n }],\n };\n\n new window.Chart(document.getElementById('legend-handlers'), {\n type: 'pie',\n data,\n options: {\n legend: {\n onClick: (e, item) => alert(`Item with text ${item.text} and index ${item.index} clicked`),\n },\n }\n });\n }\n\n if (document.getElementById('dashboard-default-visits')) {\n const numbers = [\n { name: 'Page A', uv: 4000 },\n { name: 'Page B', uv: 3000 },\n { name: 'Page C', uv: 2000 },\n { name: 'Page D', uv: 2780 },\n { name: 'Page E', uv: 1890 },\n { name: 'Page F', uv: 2390 },\n { name: 'Page G', uv: 3490 },\n { name: 'Page H', uv: 2000 },\n { name: 'Page I', uv: 2780 },\n { name: 'Page J', uv: 1890 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.red,\n borderColor: colors.red,\n borderWidth: 1,\n hoverBackgroundColor: colors.red,\n hoverBorderColor: colors.red,\n data: values,\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 500,\n suggestedMax: 3000\n }\n },\n ],\n },\n };\n window.window.ChartDashboardDefaultVisits = new window.Chart(document.getElementById('dashboard-default-visits'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(0).text(values[0]);\n\n $(\"#dashboard-default-visits\").on('click', (e) => {\n const activePoints = window.window.ChartDashboardDefaultVisits.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(0).text(values[activePoints[0]._index]);\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n if (document.getElementById('dashboard-default-views')) {\n const numbers = [\n { name: 'Page A', uv: 2400 },\n { name: 'Page B', uv: 2210 },\n { name: 'Page C', uv: 2290 },\n { name: 'Page D', uv: 2000 },\n { name: 'Page E', uv: 2181 },\n { name: 'Page F', uv: 2500 },\n { name: 'Page G', uv: 2100 },\n { name: 'Page H', uv: 2290 },\n { name: 'Page I', uv: 2000 },\n { name: 'Page J', uv: 2181 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.blue,\n borderColor: colors.blue,\n borderWidth: 1,\n hoverBackgroundColor: colors.blue,\n hoverBorderColor: colors.blue,\n data: values,\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 1000,\n suggestedMax: 3000\n },\n\n },\n ],\n },\n };\n window.chartDashboardDefaultViews = new Chart(document.getElementById('dashboard-default-views'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(1).text(values[0]);\n\n $(\"#dashboard-default-views\").on('click', (e) => {\n const activePoints = window.chartDashboardDefaultViews.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(1).text(values[activePoints[0]._index]);\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n if (document.getElementById('dashboard-default-new-users')) {\n const numbers = [\n { name: 'Page A', uv: 255 },\n { name: 'Page B', uv: 452 },\n { name: 'Page C', uv: 154 },\n { name: 'Page D', uv: 85 },\n { name: 'Page E', uv: 545 },\n { name: 'Page F', uv: 438 },\n { name: 'Page G', uv: 523 },\n { name: 'Page H', uv: 226 },\n { name: 'Page I', uv: 112 },\n { name: 'Page J', uv: 101 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.violet,\n borderColor: colors.violet,\n borderWidth: 1,\n hoverBackgroundColor: colors.violet,\n hoverBorderColor: colors.violet,\n data: values,\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 0,\n suggestedMax: 800,\n },\n\n },\n ],\n },\n };\n window.chartDashboardDefaultViews = new Chart(document.getElementById('dashboard-default-new-users'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(2).text(values[0]);\n\n $(\"#dashboard-default-new-users\").on('click', (e) => {\n const activePoints = window.chartDashboardDefaultViews.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(2).text(values[activePoints[0]._index]);\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n\n if (document.getElementById('dashboard-default-bonuce-rate')) {\n const numbers = [\n { name: 'Page A', uv: 25 },\n { name: 'Page B', uv: 30 },\n { name: 'Page C', uv: 55 },\n { name: 'Page D', uv: 42 },\n { name: 'Page E', uv: 85 },\n { name: 'Page F', uv: 45 },\n { name: 'Page G', uv: 21 },\n { name: 'Page H', uv: 56 },\n { name: 'Page I', uv: 68 },\n { name: 'Page J', uv: 32 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.yellow,\n borderColor: colors.yellow,\n borderWidth: 1,\n hoverBackgroundColor: colors.yellow,\n hoverBorderColor: colors.yellow,\n data: values,\n\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 0,\n suggestedMax: 100,\n },\n\n },\n ],\n },\n };\n window.chartDashboardDefaultViews = new Chart(document.getElementById('dashboard-default-bonuce-rate'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(3).text(values[0] + '%');\n\n $(\"#dashboard-default-bonuce-rate\").on('click', (e) => {\n const activePoints = window.chartDashboardDefaultViews.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(3).text(values[activePoints[0]._index] + '%');\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n if (document.getElementById('dashboard-e-commerce-total-profit')) {\n const numbers = [\n { name: 'Page A', uv: 2400 },\n { name: 'Page B', uv: 2210 },\n { name: 'Page C', uv: 2290 },\n { name: 'Page D', uv: 2000 },\n { name: 'Page E', uv: 2181 },\n { name: 'Page F', uv: 2500 },\n { name: 'Page G', uv: 2100 },\n { name: 'Page H', uv: 2290 },\n { name: 'Page I', uv: 2000 },\n { name: 'Page J', uv: 2181 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.blue,\n borderColor: colors.blue,\n borderWidth: 1,\n hoverBackgroundColor: colors.blue,\n hoverBorderColor: colors.blue,\n data: values,\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 1000,\n suggestedMax: 3000\n },\n\n },\n ],\n },\n };\n window.chartDashboardDefaultViews = new Chart(document.getElementById('dashboard-e-commerce-total-profit'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(1).text('$' + values[0]);\n\n $(\"#dashboard-e-commerce-total-profit\").on('click', (e) => {\n const activePoints = window.chartDashboardDefaultViews.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(1).text('$' + values[activePoints[0]._index]);\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n if (document.getElementById('dashboard-e-commerce-subscriptions')) {\n const numbers = [\n { name: 'Page A', uv: 561 },\n { name: 'Page B', uv: 452 },\n { name: 'Page C', uv: 154 },\n { name: 'Page D', uv: 256 },\n { name: 'Page E', uv: 545 },\n { name: 'Page F', uv: 438 },\n { name: 'Page G', uv: 528 },\n { name: 'Page H', uv: 226 },\n { name: 'Page I', uv: 548 },\n { name: 'Page J', uv: 354 },\n ];\n const labels = numbers.map(x => x.name);\n const values = numbers.map(x => x.uv);\n const data = {\n labels,\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: colors.yellow,\n borderColor: colors.yellow,\n borderWidth: 1,\n hoverBackgroundColor: colors.yellow,\n hoverBorderColor: colors.yellow,\n data: values,\n\n },\n ],\n };\n\n const options = {\n legend: {\n display: false,\n },\n tooltips: {\n enabled: false,\n },\n events: ['click'],\n scales: {\n xAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n }\n },\n ],\n yAxes: [\n {\n gridLines: false,\n ticks: {\n display: false,\n suggestedMin: 0,\n suggestedMax: 100,\n },\n\n },\n ],\n },\n };\n window.chartDashboardDefaultViews = new Chart(document.getElementById('dashboard-e-commerce-subscriptions'), {\n type: 'bar',\n data,\n options,\n });\n\n\n\n $(\".dashboard__total-stat\").eq(3).text(values[0]);\n\n $(\"#dashboard-e-commerce-subscriptions\").on('click', (e) => {\n const activePoints = window.chartDashboardDefaultViews.getElementsAtEvent(e);\n $(\".dashboard__total-stat\").eq(3).text(values[activePoints[0]._index]);\n activePoints[0]._view.backgroundColor = '#4ce1b6';\n activePoints[0]._view.borderColor = '#4ce1b6';\n })\n }\n\n\n if (document.getElementById('dashboard-default-bonuse')) {\n const data = {\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\n datasets: [\n {\n label: 'Blue',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.blue,\n borderColor: colors.blue,\n borderWidth: 1,\n borderDash: [5, 3],\n pointBackgroundColor: colors.blue,\n pointHoverRadius: 3,\n pointHoverBorderWidth: 1,\n pointRadius: 2,\n pointHitRadius: 10,\n data: [65, 59, 80, 81, 56, 55, 40],\n },\n {\n label: 'Red',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.red,\n borderColor: colors.red,\n borderWidth: 1,\n borderDash: [3, 3],\n pointBackgroundColor: colors.red,\n pointHoverRadius: 2,\n pointHoverBorderWidth: 1,\n pointRadius: 1,\n pointHitRadius: 10,\n data: [5, 7, 54, 32, 87, 45, 25],\n },\n {\n label: 'Yellow',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.yellow,\n borderColor: colors.yellow,\n borderWidth: 1,\n pointBackgroundColor: colors.yellow,\n pointHoverRadius: 5,\n pointHoverBorderWidth: 1,\n pointRadius: 4,\n pointHitRadius: 10,\n data: [25, 54, 2, 48, 78, 54, 35],\n },\n {\n label: 'Green',\n fill: false,\n lineTension: 0.3,\n backgroundColor: colors.green,\n borderColor: colors.green,\n borderWidth: 1,\n pointBackgroundColor: colors.green,\n pointHoverRadius: 6,\n pointHoverBorderWidth: 1,\n pointRadius: 5,\n pointHitRadius: 10,\n data: [52, 47, 45, 4, 58, 7, 45],\n },\n ],\n };\n\n const options = {\n legend: {\n position: 'bottom',\n },\n scales: {\n xAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: colors.scale,\n borderDash: [3, 3],\n },\n ticks: {\n fontColor: colors.scale,\n },\n },\n ],\n },\n };\n\n new window.Chart(document.getElementById('dashboard-default-bonuse'), {\n type: 'line',\n data,\n options,\n });\n }\n\n if (document.getElementById('dashboard-default-analytics')) {\n const data = {\n labels: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n datasets: [\n {\n backgroundColor: utils.transparentize(colors.blue, 0.8),\n borderColor: colors.blue,\n data: [590, 868, 1397, 1480, 1520, 1520, 1400],\n label: 'Site A',\n borderWidth: 1,\n pointRadius: 0,\n },\n {\n backgroundColor: utils.transparentize(colors.green, 0.8),\n borderColor: colors.green,\n data: [1400, 1506, 989, 1228, 1100, 1100, 1700],\n label: 'Site B',\n borderWidth: 1,\n pointRadius: 0,\n },\n ]\n };\n\n const options = {\n maintainAspectRatio: false,\n legend: {\n position: 'bottom',\n },\n tooltips: {\n mode: 'nearest'\n },\n scales: {\n xAxes: [\n {\n ticks: {\n fontSize: 11,\n }\n },\n ],\n yAxes: [\n {\n ticks: {\n min: 0,\n max: 1800,\n stepSize: 450,\n },\n },\n ],\n },\n };\n\n new window.Chart.Line(document.getElementById('dashboard-default-analytics'), {\n data,\n options,\n });\n }\n});\n","$(document).ready(() => {\n const createSeries = (lengthSeries, length, maxValue, extra = i => ({i})) =>\n new Array(lengthSeries).fill(0)\n .map(\n (_, x) => ({\n name: `series-${x + 1}`,\n data: window.utils.createArrayValue(length, maxValue), ...extra(x)\n })\n );\n const charts = [\n {\n type: 'bar',\n name: 'charts1',\n data: {\n labels: window.utils.createLabels(10),\n series: createSeries(2, 10, 15),\n },\n options: {\n height: 500,\n onlyInteger: false,\n axisX: {\n scaleMinSpace: 1,\n onlyInteger: false\n },\n },\n draw: function (data) {\n if (data.series && data.series.name === charts[0].data.series[0].name) {\n data.element.attr({style: `stroke-width: 15px; stroke: ${window.colors.blue}`});\n }\n }\n },\n {\n type: 'line',\n name: 'charts2',\n data: window.utils.createArray(20).map(Math.random).reduce(function (data, rnd, index) {\n data.labels.push(index + 1);\n data.series.forEach(function (series) {\n series.push(Math.random() * 50)\n });\n return data;\n }, {\n labels: [],\n series: window.utils.createArray(4).map(() => [])\n }),\n options: {\n height: 300,\n showLine: true,\n axisX: {\n labelInterpolationFnc: (value, index) => index % 13 === 0 ? 'W' + value : null,\n }\n },\n draw: data => {\n if (data.type === 'line') {\n data.element.attr({\n style: `stroke: ${window.colors.blue}; stroke-width: 2px;`\n })\n }\n if (data.type === 'point') {\n data.element.attr({\n style: `stroke: ${window.colors.blue};`\n })\n }\n }\n },\n {\n type: 'line',\n name: 'charts3',\n data: window.utils.createArray(20).map(Math.random).reduce(function (data, rnd, index) {\n data.labels.push(index + 1);\n data.series.forEach(series => series.push(Math.random() * 100));\n return data;\n }, {\n labels: [],\n series: window.utils.createArray(4).map(function () {\n return []\n })\n }),\n options: {\n height: 300,\n showLine: false,\n axisX: {\n labelInterpolationFnc: function (value, index) {\n return index % 13 === 0 ? 'W' + value : null;\n }\n }\n },\n draw: data => {\n if (data.type === 'point') {\n const color = window.utils.randomRGB();\n const opacity = window.utils.randomOpacity();\n const width = window.utils.randomWidth();\n data.element.attr({\n style:\n `stroke: ${color}; opacity: ${opacity}; stroke-width: ${width}px;`\n })\n }\n }\n },\n {\n type: 'line',\n name: 'charts4',\n data: {\n // A labels array that can contain any sort of values\n labels: (new Array(16)).fill(0).map((_, index) => 1 + (index * 2 / 10)),\n // Our series array that contains series objects or in this case series data arrays\n series: createSeries(\n 3,\n 16,\n 18,\n () => ({color: `rgb(${window.utils.randomInt()}, ${window.utils.randomInt()}, ${window.utils.randomInt()})`})),\n },\n options: {\n showPoint: false,\n height: 250,\n onlyInteger: false,\n axisX: {\n scaleMinSpace: 1,\n onlyInteger: false,\n\n },\n },\n draw: data => {\n if (data.type === 'line') {\n data.element.attr({\n style: `stroke-width: 2px; stroke: ${data.series.color}`,\n })\n }\n }\n },\n {\n type: 'line',\n name: 'charts5',\n data: window.utils.createArray(20).reduce((mdn, _, i) => {\n mdn.series.push(\n window.utils.createArray(100).map((_, j) => (((i / 10) + 1) * Math.sin((Math.PI * (i + j)) / 50)))\n );\n return mdn;\n }, {series: [], labels: window.utils.createArray(100).map((_, i) => i)}),\n options: {\n showPoint: false,\n height: 250,\n onlyInteger: false,\n axisX: {\n scaleMinSpace: 10,\n onlyInteger: false,\n labelInterpolationFnc: (value, index) => index % 10 === 0 ? value : null,\n },\n },\n draw: data => {\n if (data.type === 'line') {\n data.element.attr({\n style: `stroke-width: 2px; stroke: ${data.series.color}`,\n })\n }\n }\n },\n {\n type: 'bar',\n name: 'charts6',\n data: {\n labels: ['A', 'B', 'C'],\n series: createSeries(\n 2,\n 3,\n 40,\n index => index === 0 ? ({color: window.colors.blue}) : ({color: window.colors.purple}),\n ),\n },\n options: {\n height: 250,\n onlyInteger: false,\n axisX: {\n scaleMinSpace: 1,\n onlyInteger: false\n },\n seriesBarDistance: 30,\n },\n draw: data => {\n if (data.series) {\n data.element.attr({\n style: `stroke-width: 25px; stroke: ${data.series.color}; fill: ${data.series.color};`\n });\n }\n }\n }\n ];\n\n charts.forEach(chart => {\n switch (chart.type) {\n case 'bar':\n new window.Chartist.Bar(`#${chart.name}`, chart.data, chart.options).on('draw', chart.draw);\n break;\n case 'line':\n new window.Chartist.Line(`#${chart.name}`, chart.data, chart.options).on('draw', chart.draw);\n break;\n default:\n new window.Chartist.Bar(`#${chart.name}`, chart.data, chart.options).on('draw', chart.draw);\n break;\n }\n });\n});\n","// PAGE \"Charts\"\n$(document).ready(function () {\n let theme = localStorage['theme'] == 'light' ? 'light' : 'dark';\n const colors = {\n dark: {\n green: '#4ce1b6',\n blue: '#70bbfd',\n darkBlue: '#48b5ff',\n lightBlue: 'rgb(126, 219, 255)',\n yellow: '#f6da6e',\n red: 'rgb(255, 72, 97)',\n limon: '#b8e986',\n gray: '#eeeeee',\n colorLabel: '#ddd',\n splitLine: '#333'\n },\n\n light: {\n green: '#4ce1b6',\n blue: '#70bbfd',\n darkBlue: '#48b5ff',\n lightBlue: 'rgb(126, 219, 255)',\n yellow: '#f6da6e',\n red: 'rgb(255, 72, 97)',\n limon: '#b8e986',\n gray: '#eeeeee',\n colorLabel: '#646777',\n splitLine: '#efefef'\n }\n };\n if (document.getElementById('d31')) {\n const myChart = window.echarts.init(document.getElementById('d31'));\n\n // specify chart configuration item and data\n const option = {\n grid: { show: false },\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'axis'\n },\n legend: {\n data: ['pv', 'uv', 'amt'],\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: [\"Page A\", \"Page B\", \"Page C\", \"Page D\", \"Page E\", \"Page F\", \"Page G\"],\n showGrid: false,\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'pv',\n data: [2400, 1398, 9800, 3908, 4800, 3800, 4300],\n smooth: true,\n },\n {\n itemStyle: {\n color: colors[theme].blue,\n },\n type: 'line',\n name: 'uv',\n data: [2400, 3000, 2000, 2780, 1890, 2390, 3490],\n smooth: true,\n },\n {\n itemStyle: {\n color: colors[theme].yellow,\n },\n type: 'line',\n name: 'amt',\n data: [4000, 2210, 2290, 2000, 2181, 2500, 2100],\n smooth: true,\n },\n ]\n };\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d32')) {\n const myChart = window.echarts.init(document.getElementById('d32'));\n const option = {\n grid: { show: false },\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'axis'\n },\n legend: {\n data: ['pv', 'uv', 'amt'],\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: [\"Page A\", \"Page B\", \"Page C\", \"Page D\", \"Page E\", \"Page F\", \"Page G\"],\n showGrid: false,\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'pv',\n data: [2400, 1398, 9800, 3908, 4800, 3800, 4300],\n smooth: true,\n lineStyle: {\n type: 'dashed',\n }\n },\n {\n itemStyle: {\n color: colors[theme].blue,\n },\n type: 'line',\n name: 'uv',\n data: [2400, 3000, 2000, 2780, 1890, 2390, 3490],\n smooth: true,\n lineStyle: {\n type: 'dashed',\n }\n },\n {\n itemStyle: {\n color: colors[theme].yellow,\n },\n type: 'line',\n name: 'amt',\n data: [4000, 2210, 2290, 2000, 2181, 2500, 2100],\n\n smooth: true,\n lineStyle: {\n type: 'dashed',\n }\n },\n ]\n };\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d33')) {\n const myChart = window.echarts.init(document.getElementById('d33'));\n\n // specify chart configuration item and data\n const option = {\n grid: { show: false },\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'axis'\n },\n legend: {\n data: ['pv', 'uv', 'amt'],\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: [\"Page A\", \"Page B\", \"Page C\", \"Page D\", \"Page E\", \"Page F\", \"Page G\"],\n showGrid: false,\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'pv',\n data: [4000, 3000, 2000, 2780, 1890, 2390, 3490],\n smooth: true,\n areaStyle: {}\n },\n ]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d34')) {\n const data = [\n {\n name: 'Page A', uv: 4000, pv: 2400, amt: 2400,\n },\n {\n name: 'Page B', uv: 3000, pv: 1398, amt: 2210,\n },\n {\n name: 'Page C', uv: 2000, pv: 9800, amt: 2290,\n },\n {\n name: 'Page D', uv: 2780, pv: 3908, amt: 2000,\n },\n {\n name: 'Page E', uv: 1890, pv: 4800, amt: 2181,\n },\n {\n name: 'Page F', uv: 2390, pv: 3800, amt: 2500,\n },\n {\n name: 'Page G', uv: 3490, pv: 4300, amt: 2100,\n },\n ];\n const myChart = window.echarts.init(document.getElementById('d34'));\n\n const option = {\n grid: { show: false },\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'axis'\n },\n legend: {\n data: ['pv', 'uv', 'amt'],\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: data.map(x => x.name),\n showGrid: false,\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'pv',\n data: data.map(x => x.pv),\n smooth: true,\n stack: 'stackOne',\n areaStyle: {}\n },\n {\n itemStyle: {\n color: colors[theme].blue,\n },\n type: 'line',\n name: 'uv',\n data: data.map(x => x.uv),\n smooth: true,\n areaStyle: {},\n stack: 'stackTwo',\n },\n {\n itemStyle: {\n color: colors[theme].yellow,\n },\n type: 'line',\n name: 'amt',\n data: data.map(x => x.amt),\n stack: 'stackThree',\n smooth: true,\n areaStyle: {}\n },\n ]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d35')) {\n const data01 = [\n { x: 100, y: 200, z: 200 },\n { x: 120, y: 100, z: 260 },\n { x: 170, y: 300, z: 400 },\n { x: 140, y: 250, z: 280 },\n { x: 150, y: 400, z: 500 },\n { x: 110, y: 280, z: 200 },\n ];\n\n const data02 = [\n { x: 300, y: 300, z: 200 },\n { x: 400, y: 500, z: 260 },\n { x: 200, y: 700, z: 400 },\n { x: 340, y: 350, z: 280 },\n { x: 560, y: 500, z: 500 },\n { x: 230, y: 780, z: 200 },\n { x: 500, y: 400, z: 200 },\n { x: 300, y: 500, z: 260 },\n { x: 240, y: 300, z: 400 },\n { x: 320, y: 550, z: 280 },\n { x: 500, y: 400, z: 500 },\n { x: 420, y: 280, z: 200 },\n ];\n const myChart = window.echarts.init(document.getElementById('d35'));\n // specify chart configuration item and data\n const option = {\n grid: { show: false },\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n formatter: function (params) {\n return `stature: ${params.name}
      weight: ${params.data}`\n }\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n showGrid: false,\n data: [...data01, ...data02].map(x => x.x).sort((a, b) => a > b ? 1 : -1).map(x => `${x}cm`),\n },\n yAxis: [{\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n data: data01.map(x => x.y).sort((a, b) => a > b ? 1 : -1).map(x => `${x}kg`),\n },\n {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n data: data02.map(x => x.y).sort((a, b) => a > b ? 1 : -1).map(x => `${x}kg`),\n },\n ],\n series: [\n {\n symbolSize: 20,\n data: data01.map(x => `${x.y}kg`),\n type: 'scatter',\n itemStyle: {\n color: colors[theme].blue,\n },\n },\n {\n itemStyle: {\n color: colors[theme].yellow,\n },\n symbolSize: 20,\n data: data02.map(x => `${x.y}kg`),\n type: 'scatter',\n },\n ]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d36')) {\n const data = [\n {\n name: '18-24', uv: 31.47, pv: 2400, fill: '#8884d8',\n },\n {\n name: '25-29', uv: 26.69, pv: 4567, fill: '#83a6ed',\n },\n {\n name: '30-34', uv: 15.69, pv: 1398, fill: '#8dd1e1',\n },\n {\n name: '35-39', uv: 8.22, pv: 9800, fill: '#82ca9d',\n },\n {\n name: '40-49', uv: 8.63, pv: 3908, fill: '#a4de6c',\n },\n {\n name: '50+', uv: 2.63, pv: 4800, fill: '#d0ed57',\n },\n {\n name: 'unknown', uv: 6.67, pv: 4800, fill: '#ffc658',\n },\n ];\n const myChart = window.echarts.init(document.getElementById('d36'));\n // specify chart configuration item and data\n const option = {\n title: {\n text: ''\n },\n legend: {\n type: 'scroll',\n data: data.map(x => x.name),\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {},\n angleAxis: {},\n polar: {},\n radiusAxis: {\n z: 10,\n type: 'category',\n data: data.map(x => x.name),\n axisTick: {\n show: false,\n },\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n axisLabel: {\n show: false,\n }\n },\n series: data.map(item => ({\n barGap: '-90%',\n data: [\n ...data.map(x => x.name === item.name ? x.uv : null),\n ],\n type: 'bar',\n coordinateSystem: 'polar',\n itemStyle: {\n color: item.fill,\n },\n name: item.name,\n stack: item.name,\n })),\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d37')) {\n const data = [\n {\n subject: 'Math', A: 120, B: 110, fullMark: 150,\n },\n {\n subject: 'Chinese', A: 98, B: 130, fullMark: 150,\n },\n {\n subject: 'English', A: 86, B: 130, fullMark: 150,\n },\n {\n subject: 'Geography', A: 99, B: 100, fullMark: 150,\n },\n {\n subject: 'Physics', A: 85, B: 90, fullMark: 150,\n },\n {\n subject: 'History', A: 65, B: 85, fullMark: 150,\n },\n ];\n const myChart = window.echarts.init(document.getElementById('d37'));\n // specify chart configuration item and data\n const option = {\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {},\n radar: {\n indicator: data.map(x => ({ name: x.subject, max: x.fullMark }))\n },\n series: [{\n type: 'radar',\n itemStyle: {\n\n normal: {\n color: colors[theme].blue,\n areaStyle: {\n type: 'default'\n }\n }\n },\n data: [\n {\n value: data.map(x => x.A),\n name: 'Mike'\n },\n ]\n }]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d38')) {\n const data01 = [\n { name: 'Group A', value: 400 },\n { name: 'Group B', value: 300 },\n { name: 'Group C', value: 300 },\n { name: 'Group D', value: 200 },\n ];\n\n const data02 = [\n { name: 'A1', value: 100 },\n { name: 'A2', value: 300 },\n { name: 'B1', value: 100 },\n { name: 'B2', value: 80 },\n { name: 'B3', value: 40 },\n { name: 'B4', value: 30 },\n { name: 'B5', value: 50 },\n { name: 'C1', value: 100 },\n { name: 'C2', value: 200 },\n { name: 'D1', value: 150 },\n { name: 'D2', value: 50 },\n ];\n const myChart = window.echarts.init(document.getElementById('d38'));\n // specify chart configuration item and data\n const option = {\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'item',\n formatter: \"{b}: {c} ({d}%)\"\n },\n series: [\n {\n name: false,\n type: 'pie',\n selectedMode: 'single',\n radius: [0, '30%'],\n label: {\n show: false,\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: data01,\n itemStyle: {\n color: colors[theme].blue,\n },\n },\n {\n name: false,\n type: 'pie',\n radius: ['40%', '55%'],\n data: data02,\n label: {\n normal: {\n formatter: '{c}',\n }\n },\n itemStyle: {\n color: colors[theme].green,\n },\n }\n ]\n };\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n // PAGE \"Dashboard default\"\n if (document.getElementById('d3dashboard-default-analytics')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-default-analytics'));\n\n // specify chart configuration item and data\n const option = {\n grid: {\n show: false,\n left: 60,\n right: 10,\n },\n min: 0,\n max: 1800,\n interval: 450,\n title: {\n text: ''\n },\n textStyle: {\n color: '#999',\n fontSize: '11px',\n lineHeight: '1.3'\n },\n tooltip: {\n trigger: 'axis'\n },\n legend: {\n y: 'bottom',\n data: ['Site A', 'Site B'],\n textStyle: {\n color: colors[theme].colorLabel,\n },\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: colors[theme].splitLine,\n },\n },\n data: [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n showGrid: false,\n boundaryGap: false,\n axisTick: {\n show: false,\n },\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n lineStyle: {\n color: colors[theme].splitLine,\n }\n },\n axisTick: {\n show: false,\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'Site A',\n data: [590, 868, 1397, 1480, 1520, 1520, 1400],\n smooth: true,\n showSymbol: false,\n areaStyle: {\n normal: {\n opacity: 0.2,\n }\n },\n },\n {\n itemStyle: {\n color: colors[theme].blue,\n },\n type: 'line',\n name: 'Site B',\n data: [1400, 1506, 989, 1228, 1100, 1100, 1700],\n smooth: true,\n showSymbol: false,\n areaStyle: {\n normal: {\n opacity: 0.2,\n }\n }\n },\n ]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-default-bonuse')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-default-bonuse'));\n\n // specify chart configuration item and data\n const option = {\n grid: {\n show: false,\n left: 40,\n top: 10,\n right: 15,\n },\n legend: {\n show: false,\n },\n textStyle: {\n color: '#999',\n fontSize: '11px',\n lineHeight: '1.3'\n },\n tooltip: {\n trigger: 'axis'\n },\n xAxis: {\n type: 'category',\n data: ['12.03', '13.03', '14.03', '15.03', '16.03', '17.03', '18.03', '19.03', '20.03'],\n boundaryGap: false,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n showGrid: false,\n },\n type: 'line',\n yAxis: {\n axisLine: {\n show: false,\n },\n splitLine: {\n show: false\n },\n axisTick: {\n show: false,\n },\n },\n series: [\n {\n itemStyle: {\n color: colors[theme].green,\n },\n type: 'line',\n name: 'uv',\n data: [4000, 3000, 2000, 2780, 1890, 2390, 3490, 3490, 3490],\n smooth: true,\n showSymbol: false,\n lineStyle: {\n width: 1,\n },\n areaStyle: {\n normal: {\n opacity: 0.2,\n }\n },\n },\n ]\n };\n\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n\n }\n\n if (document.getElementById('d3dashboard-default-visitor')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-default-visitor'));\n\n // specify chart configuration item and data\n const option = {\n legend: {\n icon: 'circle',\n x: 'center',\n y: 'bottom',\n top:'85%',\n data: ['Chrome', 'Safari', 'Mozilla', 'IE'],\n },\n tooltip: {\n trigger: 'item',\n formatter: \"{b}: {c} ({d}%)\"\n },\n series: [\n {\n type: 'pie',\n radius: ['45%', '60%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n label: {\n normal: {\n show: false,\n },\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 12934,\n name: 'Chrome',\n itemStyle: {\n color: colors[theme].green\n }\n },\n {\n value: 9934,\n name: 'Safari',\n itemStyle: {\n color: colors[theme].blue\n }\n },\n {\n value: 20432,\n name: 'Mozilla',\n itemStyle: {\n color: colors[theme].yellow\n }\n },\n {\n value: 15432,\n name: 'IE',\n itemStyle: {\n color: colors[theme].red\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n\n }\n\n\n\n // PAGE \"Dashboard E-commerce\"\n\n if (document.getElementById('d3e-commerce-top-selling')) {\n const myChart = window.echarts.init(document.getElementById('d3e-commerce-top-selling'));\n\n // specify chart configuration item and data\n const option = {\n legend: {\n orient: 'vertical',\n icon: 'circle',\n x: 'left',\n y: 'bottom',\n data: ['Sony Xperia Z', 'Xiaomi Mi 6', 'Apple iPhone 7 Plus', 'Apple iPhone 6 Plus']\n },\n tooltip: {\n trigger: 'item',\n position: 'bottom',\n },\n series: [\n {\n type: 'pie',\n radius: ['60%', '75%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n label: {\n normal: {\n show: false,\n },\n },\n labelLine: {\n normal: {\n show: true\n }\n },\n data: [\n {\n value: 12934,\n name: 'Sony Xperia Z',\n itemStyle: {\n color: colors[theme].green\n }\n },\n {\n value: 9934,\n name: 'Xiaomi Mi 6',\n itemStyle: {\n color: colors[theme].blue\n }\n },\n {\n value: 20432,\n name: 'Apple iPhone 7 Plus',\n itemStyle: {\n color: colors[theme].yellow\n }\n },\n {\n value: 15432,\n name: 'Apple iPhone 6 Plus',\n itemStyle: {\n color: colors[theme].red\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-default-budget')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-default-budget'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['85%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 0,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 100,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n {\n value: 100,\n itemStyle: {\n color: colors[theme].green,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-e-commerce-sales-statistic-bar')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-e-commerce-sales-statistic-bar'));\n\n const dataYearly = [\n { name: 'Jan', uv: 4000 },\n { name: 'Feb', uv: 3000 },\n { name: 'Mar', uv: 2000 },\n { name: 'Apr', uv: 2780 },\n { name: 'May', uv: 1890 },\n { name: 'June', uv: 2390 },\n { name: 'July', uv: 3490 },\n { name: 'Aug', uv: 2000 },\n { name: 'Sep', uv: 2780 },\n { name: 'Oct', uv: 1890 },\n { name: 'Nov', uv: 3578 },\n { name: 'Dec', uv: 2378 },\n ];\n\n const dataMontly = [\n { name: '01.02', uv: 3654 },\n { name: '02.02', uv: 2578 },\n { name: '03.02', uv: 2000 },\n { name: '04.02', uv: 4383 },\n { name: '05.02', uv: 1890 },\n { name: '06.02', uv: 2390 },\n { name: '07.02', uv: 3490 },\n { name: '08.02', uv: 2000 },\n { name: '09.02', uv: 2780 },\n { name: '10.02', uv: 1890 },\n { name: '11.02', uv: 3578 },\n { name: '12.02', uv: 3644 },\n { name: '13.02', uv: 4000 },\n { name: '14.02', uv: 3000 },\n { name: '15.02', uv: 2000 },\n { name: '16.02', uv: 2780 },\n { name: '17.02', uv: 1890 },\n { name: '18.02', uv: 2390 },\n { name: '19.02', uv: 3490 },\n { name: '20.02', uv: 2000 },\n { name: '21.02', uv: 2780 },\n { name: '22.02', uv: 1890 },\n { name: '23.02', uv: 3578 },\n { name: '24.02', uv: 2390 },\n { name: '25.02', uv: 3578 },\n { name: '26.02', uv: 1890 },\n { name: '27.02', uv: 4000 },\n { name: '28.02', uv: 2378 },\n ];\n\n let activeData = dataYearly;\n const option = {\n textStyle: {\n color: \"#999\"\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n }\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true\n },\n xAxis: [\n {\n type: 'category',\n data: activeData.map(x => x.name),\n axisTick: {\n alignWithLabel: true\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n }\n ],\n yAxis: [\n {\n type: 'value',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: false,\n }\n }\n ],\n series: [\n {\n type: 'bar',\n barWidth: '60%',\n data: activeData.map(x => x.uv),\n color: colors[theme].red,\n }\n ]\n };\n $('.toggle-btn__input-label').click(function () {\n\n if (activeData == dataYearly) {\n activeData = dataMontly;\n myChart.setOption({\n xAxis: [\n {\n data: activeData.map(x => x.name),\n }\n ],\n series: [{\n data: activeData.map(x => x.uv),\n color: colors[theme].green,\n }],\n })\n } else {\n activeData = dataYearly;\n myChart.setOption({\n xAxis: [\n {\n data: activeData.map(x => x.name),\n }\n ],\n series: [{\n data: activeData.map(x => x.uv),\n color: colors[theme].red,\n }],\n })\n }\n })\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-default-sales-statistic-1')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-default-sales-statistic-1'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 0,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 80,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n {\n value: 300,\n itemStyle: {\n color: colors[theme].green,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n utils.responsiveChart(myChart);\n }\n\n\n\n if (document.getElementById('d3dashboard-default-sales-statistic-2')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-default-sales-statistic-2'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 0,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 100,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n {\n value: 100,\n itemStyle: {\n color: colors[theme].red,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-default-visits')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-default-visits'));\n const option = {\n color: colors[theme].red,\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n }\n },\n grid: {\n },\n xAxis: [\n {\n show: false,\n type: 'category',\n axisTick: {\n alignWithLabel: true\n }\n }\n ],\n yAxis: [\n {\n show: false,\n type: 'value'\n }\n ],\n series: [\n {\n type: 'bar',\n barWidth: '60%',\n data: [4000, 3000, 2000, 2780, 1890, 2390, 3490, 2000, 2780, 1890]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n\n // PAGE \"dashboard mobile\"\n\n if (document.getElementById('d3dashboard-mobile-app-title-clicks')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-mobile-app-title-clicks'));\n var seriesLabel = {\n normal: {\n show: false,\n }\n }\n const option = {\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n }\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n color: [colors[theme].darkBlue, colors[theme].lightBlue],\n grid: {\n left: 70,\n top: 0,\n },\n xAxis: {\n type: 'value',\n show: false,\n },\n yAxis: {\n type: 'category',\n inverse: true,\n axisLine: {\n lineStyle: {\n width: 0,\n },\n },\n axisTick: {\n show: false,\n },\n data: ['News', 'Video', 'Messages', 'Photos', 'Weather'],\n axisLabel: {\n margin: 10,\n rich: {\n News: {\n lineHeight: 20,\n align: 'center'\n },\n Video: {\n height: 20,\n align: 'center',\n },\n Messages: {\n height: 20,\n align: 'center',\n },\n Photos: {\n height: 20,\n align: 'center',\n },\n Weather: {\n height: 20,\n align: 'center',\n }\n }\n }\n },\n series: [\n {\n name: 'uv',\n type: 'bar',\n data: [4000, 3000, 2000, 2780, 1890],\n label: seriesLabel,\n barCategoryGap: '60%',\n markPoint: {\n symbolSize: 1,\n symbolOffset: [0, '30%'],\n label: {\n },\n }\n },\n {\n name: 'pv',\n barGap: 0,\n type: 'bar',\n label: seriesLabel,\n data: [2400, 1398, 9800, 3908, 4800]\n },\n ]\n }\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n\n }\n if (document.getElementById('d3dashboard-mobile-app-weekly-stat1')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-mobile-app-weekly-stat1'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false,\n orient: 'vertical',\n x: 'left',\n data: ['75%']\n },\n series: [\n {\n name: '75%',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '20%'],\n hoverAnimation: false,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: true,\n position: 'center',\n textStyle: {\n fontSize: 25,\n },\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 78,\n name: '78%',\n itemStyle: {\n color: colors[theme].limon\n },\n },\n {\n value: 22,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d3dashboard-mobile-app-weekly-stat2')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-mobile-app-weekly-stat2'));\n const option = {\n tooltip: {\n show: false,\n trigger: 'item',\n formatter: \"{a}
      {b}: {c} ({d}%)\"\n },\n hoverAnimation: false,\n legend: {\n show: false,\n orient: 'vertical',\n x: 'left',\n data: ['25%'],\n },\n series: [\n {\n name: '25%',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '20%'],\n avoidLabelOverlap: false,\n hoverAnimation: false,\n clockwise: false,\n label: {\n normal: {\n show: true,\n position: 'center',\n textStyle: {\n fontSize: 25,\n },\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 25,\n name: '25%',\n itemStyle: {\n color: colors[theme].red,\n }\n },\n {\n value: 75,\n name: '',\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d3dashboard-mobile-current-users')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-mobile-current-users'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'nameOne',\n type: 'pie',\n radius: ['130%', '160%'],\n center: ['50%', '100%'],\n hoverAnimation: false,\n startAngle: 180,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 56,\n name: 'nameTwo',\n itemStyle: {\n color: colors[theme].limon,\n }\n },\n {\n value: 100,\n name: 'nameThree',\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-mobile-active-users')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-mobile-active-users'));\n\n const getRandomArbitrary = (minValue, maxValue) => {\n const ratio = (maxValue - minValue) + minValue;\n return Math.random() * ratio;\n };\n\n const generateRandomData = (dataLength, minDeviationValue, maxDeviationValue, minRange, maxRange) => {\n const rangeFactor = (maxRange - minRange) / dataLength;\n\n return Array.from({ length: dataLength }, (v, k) => (\n {\n name: k,\n point: (k * rangeFactor) + getRandomArbitrary(minDeviationValue, maxDeviationValue),\n amt: 2000,\n }));\n }\n\n const data = generateRandomData(100, -2000, 2000, 300, 6000);\n const option = {\n grid: {\n left: 25,\n top: 20,\n right: 0,\n bottom: 10\n },\n textStyle: {\n color: '#999'\n },\n tooltip: {\n trigger: 'axis',\n },\n xAxis: {\n type: 'category',\n show: false,\n lineStyle: {\n color: colors[theme].gray,\n },\n data: data.map(x => x.name),\n },\n yAxis: {\n type: 'value',\n min: 0,\n max: 8000,\n interval: 2000,\n axisTick: {\n show: false,\n },\n axisLine: {\n show: false\n },\n axisLabel: {\n formatter: function (value) {\n return value / 1000 + 'k'\n }\n }\n },\n series: [{\n type: 'line',\n data: data.map(x => x.point),\n color: colors[theme].limon,\n showSymbol: false,\n }]\n };\n\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n // PAGE \"Dashboard Fitness\"\n\n if (document.getElementById('d3dashboard-fitness-activity')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-fitness-activity'));\n\n // specify chart configuration item and data\n const option = {\n tooltip: {\n show: true,\n trigger: 'item',\n },\n legend: {\n orient: 'vertical',\n icon: 'circle',\n x: 'left',\n y: 'bottom',\n data: ['Cycling', 'Walking', 'Run', 'Swimming'],\n padding: 0\n },\n series: [\n {\n type: 'pie',\n radius: ['40%', '49%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n data: [\n {\n value: 10,\n name: 'Walking',\n itemStyle: {\n color: colors[theme].green\n }\n },\n {\n value: 37,\n name: 'Cycling',\n itemStyle: {\n color: colors[theme].blue\n }\n },\n {\n value: 21,\n name: 'Swimming',\n itemStyle: {\n color: colors[theme].yellow\n }\n },\n {\n value: 32,\n name: 'Run',\n itemStyle: {\n color: colors[theme].red\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n\n }\n\n\n if (document.getElementById('d3dashboard-fitness-fat-burning')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-fitness-fat-burning'));\n const option = {\n grid: {\n top: 15,\n left: 40,\n right: 10,\n },\n tooltip: {\n trigger: 'axis',\n },\n xAxis: {\n type: 'category',\n show: false,\n boundaryGap: false,\n data: [0, 1, 2, 3, 4, 5, 6, 7],\n splitLine: {\n show: false\n }\n },\n yAxis: {\n type: 'value',\n splitLine: {\n show: false\n },\n axisLabel: {\n\n },\n axisLine: {\n lineStyle: {\n width: 0,\n },\n },\n axisTick: {\n show: false,\n },\n },\n series: [{\n name: 'uv',\n data: [56, 42, 54, 43, 45, 41, 50, 58],\n type: 'line',\n lineStyle: {\n color: colors[theme].red,\n },\n areaStyle: {\n color: new window.echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n offset: 0,\n color: '#fee7e9'\n }, {\n offset: 1,\n color: '#fef7f7'\n }])\n },\n smooth: true,\n }]\n }\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-fitness-heartrate')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-fitness-heartrate'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'heartrate',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 240,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 200,\n itemStyle: {\n color: colors[theme].red,\n }\n },\n {\n value: 100,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d3dashboard-fitness-calories')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-fitness-calories'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 260,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 240,\n itemStyle: {\n color: colors[theme].yellow,\n }\n },\n {\n value: 100,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-fitness-steps')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-fitness-steps'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 210,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 160,\n itemStyle: {\n color: colors[theme].green,\n }\n },\n {\n value: 100,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d3dashboard-fitness-distance')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-fitness-distance'));\n const option = {\n tooltip: {\n show: false,\n },\n legend: {\n show: false\n },\n series: [\n {\n name: 'calories',\n type: 'pie',\n radius: ['90%', '100%'],\n center: ['50%', '50%'],\n hoverAnimation: false,\n startAngle: 0,\n endAngle: 360,\n avoidLabelOverlap: false,\n label: {\n normal: {\n show: false,\n position: 'center'\n },\n emphasis: {\n show: false,\n textStyle: {\n fontSize: '30',\n fontWeight: 'bold'\n }\n }\n },\n labelLine: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 500,\n itemStyle: {\n color: colors[theme].blue,\n }\n },\n {\n value: 50,\n itemStyle: {\n color: colors[theme].gray,\n }\n },\n ]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n // PAGE 'Dashboard booking'\n if (document.getElementById('d3dashboard-booking-reservation')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-booking-reservation'));\n const option = {\n legend: {\n orient: 'vertical',\n icon: 'circle',\n x: 'left',\n data: ['Completed', 'Online check-in', 'Remain']\n },\n series: [\n {\n\n type: 'pie',\n radius: ['45%', '60%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n startAngle: 180,\n endAngle: 360,\n label: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 2500,\n name: 'Completed',\n itemStyle: {\n color: colors[theme].green\n }\n },\n {\n value: 2500,\n name: 'Online check-in',\n itemStyle: {\n color: colors[theme].limon\n }\n },\n {\n value: 5000,\n name: 'Remain',\n itemStyle: {\n color: colors[theme].gray\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-booking-weekly-stat-1')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-booking-weekly-stat-1'));\n const option = {\n legend: {\n show: false,\n },\n series: [\n {\n\n type: 'pie',\n radius: ['93%', '100%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n startAngle: 280,\n endAngle: 360,\n label: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 78,\n name: 'Online check-in',\n itemStyle: {\n color: colors[theme].limon\n }\n },\n {\n value: 22,\n name: 'Remain',\n itemStyle: {\n color: colors[theme].gray\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n if (document.getElementById('d3dashboard-booking-weekly-stat-2')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-booking-weekly-stat-2'));\n const option = {\n legend: {\n show: false,\n },\n series: [\n {\n\n type: 'pie',\n radius: ['93%', '100%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n startAngle: 90,\n endAngle: 360,\n label: {\n normal: {\n show: false\n }\n },\n data: [\n {\n value: 25,\n name: 'Online check-in',\n itemStyle: {\n color: colors[theme].red\n }\n },\n {\n value: 75,\n name: 'Remain',\n itemStyle: {\n color: colors[theme].gray\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-booking-occupancy')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-booking-occupancy'));\n const option = {\n tooltip: {\n trigger: 'axis',\n },\n textStyle: {\n color: '#999',\n },\n grid: {\n left: 50,\n right: 0,\n top: 10,\n },\n legend: {\n show: false\n },\n xAxis: [\n {\n type: 'category',\n data: ['Mon 10/07', 'Tue 11/07', 'Wed 12/07', 'Thu 13/07', 'Fri 14/07', 'Sat 15/07', 'Sun 16/07'],\n axisLine: {\n lineStyle: {\n width: 0,\n },\n },\n axisTick: {\n show: false,\n },\n }\n ],\n yAxis: [\n {\n type: 'value',\n min: 0,\n max: 100,\n interval: 25,\n axisLine: {\n lineStyle: {\n width: 0,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n formatter: '{value} ml'\n }\n },\n ],\n series: [\n {\n name: 'Stay overs',\n type: 'bar',\n data: [90, 85, 47, 80, 55, 99, 85],\n color: colors[theme].gray,\n barCategoryGap: 75,\n },\n {\n name: 'Arivals',\n type: 'line',\n color: colors[theme].blue,\n data: [10, 65, 45, 45, 15, 40, 26]\n },\n {\n name: 'nameFour',\n type: 'line',\n color: colors[theme].limon,\n data: [75, 23, 26, 25, 35, 30, 48]\n }\n ]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n\n // Dashboard \"Crypto\"\n\n if (document.getElementById('d3dashboard-crypto-course-1')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-course-1'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n // fixed at top\n return [point[0], point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [70.23, 80.5, 38.45, 89.2, 105.61, 98.6, 115],\n type: 'line',\n color: colors[theme].green,\n showSymbol: false,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-course-2')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-course-2'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n // fixed at top\n return [point[0], point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [70.23, 80.5, 38.45, 89.2, 105.61, 98.6, 115],\n type: 'line',\n color: colors[theme].red,\n showSymbol: false,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-course-3')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-course-3'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n // fixed at top\n return [point[0], point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [70.23, 80.5, 38.45, 89.2, 105.61, 98.6, 115],\n type: 'line',\n color: colors[theme].blue,\n showSymbol: false,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n\n if (document.getElementById('d3dashboard-crypto-course-4')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-course-4'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n // fixed at top\n return [point[0], point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [70.23, 80.5, 38.45, 89.2, 105.61, 98.6, 115],\n type: 'line',\n showSymbol: false,\n color: '#c39fdf',\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-today')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-crypto-today'));\n\n // specify chart configuration item and data\n const option = {\n tooltip: {\n formatter: function (params) {\n return `${params.name} : $${params.data.value} .00`\n }\n },\n legend: {\n orient: 'vertical',\n icon: 'circle',\n x: 'left',\n y: 'bottom',\n data: ['Bitcoin', 'Ethereum', 'Bitcoin Cash', 'Ripple']\n },\n grid: {\n top: 0,\n },\n series: [\n {\n type: 'pie',\n radius: ['45%', '60%'],\n hoverAnimation: false,\n avoidLabelverlap: false,\n label: {\n formatter: '${c}.00',\n },\n data: [\n {\n value: 20432.00,\n name: 'Bitcoin',\n itemStyle: {\n color: colors[theme].green\n },\n },\n {\n value: 9934,\n name: 'Ethereum',\n itemStyle: {\n color: colors[theme].blue\n }\n },\n {\n value: 20432,\n name: 'Bitcoin Cash',\n itemStyle: {\n color: colors[theme].yellow\n }\n },\n {\n value: 15432,\n name: 'Ripple',\n itemStyle: {\n color: colors[theme].red\n }\n },\n ],\n\n }\n ],\n };\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n\n }\n\n\n if (document.getElementById('d3dashboard-crypto-btc-eth')) {\n const myChart = window.echarts.init(document.getElementById('d3dashboard-crypto-btc-eth'));\n const data = [{ name: '25.04', btc: 59, eth: 140 },\n { name: '26.04', btc: 86, eth: 150 },\n { name: '27.04', btc: 139, eth: 98 },\n { name: '28.04', btc: 148, eth: 122 },\n { name: '29.04', btc: 152, eth: 110 },\n { name: '30.04', btc: 152, eth: 110 },\n { name: '1.05', btc: 140, eth: 170 },\n { name: '2.05', btc: 59, eth: 140 },\n { name: '3.05', btc: 86, eth: 150 },\n { name: '4.05', btc: 139, eth: 98 },\n { name: '5.05', btc: 50, eth: 122 },\n { name: '6.05', btc: 85, eth: 75 },\n { name: '7.05', btc: 152, eth: 90 },\n { name: '8.05', btc: 140, eth: 170 }];\n // specify chart configuration item and data\n const option = {\n tooltip: {\n trigger: 'axis',\n backgroundColor: '#fff',\n textStyle: {\n color: '#333'\n }\n },\n legend: {\n show: true,\n bottom: 0,\n textStyle: {\n fontSize: 10,\n }\n },\n textStyle: {\n color: '#999',\n opacity: 0.6,\n fontSize: '10px',\n fontWeight: 200,\n },\n grid: {\n left: 30,\n top: 10,\n right: 10,\n },\n xAxis: {\n type: 'category',\n min: '26.04',\n max: '8.05',\n boundaryGap: false,\n data: data.map(x => x.name),\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n },\n yAxis: {\n type: 'value',\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n },\n dataZoom: [\n {\n bottom: 25,\n type: 'slider',\n xAxisIndex: 0,\n height: 10,\n filterMode: 'none',\n dataBackground: {\n areaStyle: {\n opacity: 0\n },\n lineStyle: {\n width: 0,\n }\n }\n },\n\n ],\n series: [{\n data: data.map(x => x.btc),\n type: 'line',\n name: 'BTC',\n smooth: true,\n showSymbol: false,\n color: colors[theme].blue,\n lineStyle: {\n normal: {\n width: 1\n }\n },\n areaStyle: {\n opacity: 0.2,\n },\n },\n {\n data: data.map(x => x.eth),\n type: 'line',\n name: 'ETH',\n smooth: true,\n showSymbol: false,\n color: colors[theme].green,\n lineStyle: {\n normal: {\n width: 1\n }\n },\n areaStyle: {\n opacity: 0.2,\n },\n }\n ]\n };\n // use configuration item and data specified to show chart\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--1')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--1'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [70.23, 25.5, 78.45, 45.2, 56.61, 110.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--2')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--2'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [54.23, 72.5, 78.45, 35.2, 78.61, 45.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--3')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--3'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [23.23, 55.5, 78.45, 64.2, 56.61, 90.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--4')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--4'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [89.23, 44.5, 38.45, 77.2, 56.61, 23.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--5')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--5'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n // fixed at top\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [88.23, 42.5, 78.45, 54.2, 56.61, 77.6, 114],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--6')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--6'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [57.23, 25.5, 42.45, 45.2, 30.61, 50.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--7')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--7'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [57.23, 55.5, 60.45, 89.2, 13.61, 50.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--8')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--8'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [57.23, 25.5, 60.45, 35.2, 30.61, 70.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--9')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--9'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [33.23, 25.5, 55.45, 87.2, 30.61, 51.6, 114],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n\n if (document.getElementById('d3dashboard-crypto-top-10--10')) {\n const myChart = echarts.init(document.getElementById('d3dashboard-crypto-top-10--10'));\n const option = {\n tooltip: {\n trigger: 'axis',\n formatter: function (params) {\n params = params[0];\n return '$' + params.data;\n },\n position: function (point, params, dom, rect, size) {\n return [point[0] - 50, point[1]];\n },\n backgroundColor: 'transparent',\n textStyle: {\n color: '#333'\n }\n },\n grid: {\n left: 0,\n top: 10,\n right: 0,\n bottom: 5,\n },\n xAxis: {\n type: 'category',\n show: false,\n data: [1, 2, 3, 4, 5, 6, 7],\n axisPointer: {\n animation: false\n },\n },\n yAxis: {\n type: 'value',\n show: false,\n min: 0,\n max: 115,\n },\n series: [{\n data: [31.23, 86.5, 42.45, 25.2, 30.61, 65.6, 115],\n type: 'line',\n showSymbol: false,\n color: colors[theme].green,\n smooth: true,\n areaStyle: {\n opacity: 0.2,\n },\n }]\n };\n\n myChart.setOption(option);\n utils.responsiveChart(myChart);\n }\n});\n","$(document).ready(function () {\n if (document.getElementById('map1')) {\n new window.google.maps.Map(document.getElementById('map1'), {\n center: {lat: 56.009483, lng: 92.8121694},\n zoom: 13,\n });\n const map2 = new window.google.maps.Map(document.getElementById('map2'), {\n center: {lat: 56.009483, lng: 92.8121694},\n zoom: 13,\n });\n window.window.infowindow = new window.InfoBox({\n content: `\n
      \n
      \n
      \n \n \n \n
      \n DRAKARYS!!!\n
      \n
      `,\n ...{closeBoxURL: '', enableEventPropagation: true}\n });\n\n const marker = new window.google.maps.Marker({\n position: {lat: 56.009483, lng: 92.8121694},\n map: map2,\n title: 'Hello World!',\n });\n\n marker.addListener('click', function () {\n window.infowindow.open(map2, marker);\n });\n new window.google.maps.Map(document.getElementById('map3'), {\n center: {lat: 56.009483, lng: 92.8121694},\n zoom: 13,\n styles: [\n {\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n }\n ]\n },\n {\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#616161\"\n }\n ]\n },\n {\n \"elementType\": \"labels.text.stroke\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n }\n ]\n },\n {\n \"featureType\": \"administrative.land_parcel\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#bdbdbd\"\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#eeeeee\"\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#757575\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e5e5e5\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n },\n {\n \"featureType\": \"road\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n }\n ]\n },\n {\n \"featureType\": \"road.arterial\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#757575\"\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#dadada\"\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#616161\"\n }\n ]\n },\n {\n \"featureType\": \"road.local\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n },\n {\n \"featureType\": \"transit.line\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e5e5e5\"\n }\n ]\n },\n {\n \"featureType\": \"transit.station\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#eeeeee\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#c9c9c9\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#9e9e9e\"\n }\n ]\n }\n ]\n });\n }\n if (document.getElementById('vector-map1')) {\n const config = {\n chart: {\n spacingBottom: 20,\n backgroundColor: 'transparent',\n style: {\n fontFamily: '\\'Roboto\\', sans-serif',\n height: '500px',\n },\n },\n\n mapNavigation: {\n enabled: true,\n buttonOptions: {\n verticalAlign: 'bottom',\n theme: {\n fill: 'transparent',\n 'stroke-width': 1,\n r: 0,\n },\n style: {\n color: '#999999',\n },\n },\n },\n\n exporting: {\n allowHTML: true,\n },\n\n title: {\n style: {display: 'none'},\n },\n\n legend: {\n enabled: false,\n },\n\n plotOptions: {\n map: {\n joinBy: ['iso-a2', 'code'],\n mapData: window.Highcharts.maps['custom/world'],\n },\n },\n\n tooltip: {\n headerFormat: 'Population density',\n colorBackground: '#ffffff',\n borderWidth: 0,\n shadow: false,\n borderRadius: 0,\n outside: true,\n useHTML: true,\n pointFormat: '
      '\n + '{point.name}: {point.value}/kmĀ²',\n },\n\n colorAxis: {\n min: 1,\n max: 1000,\n type: 'logarithmic',\n },\n\n series: [{\n data: [\n {\n \"code\": \"AF\",\n \"value\": 53,\n \"name\": \"Afghanistan\"\n },\n {\n \"code\": \"AL\",\n \"value\": 117,\n \"name\": \"Albania\"\n },\n {\n \"code\": \"DZ\",\n \"value\": 15,\n \"name\": \"Algeria\"\n },\n {\n \"code\": \"AS\",\n \"value\": 342,\n \"name\": \"American Samoa\"\n },\n {\n \"code\": \"AD\",\n \"value\": 181,\n \"name\": \"Andorra\"\n },\n {\n \"code\": \"AO\",\n \"value\": 15,\n \"name\": \"Angola\"\n },\n {\n \"code\": \"AI\",\n \"value\": 202,\n \"name\": \"Antigua and Barbuda\"\n },\n {\n \"code\": \"AR\",\n \"value\": 15,\n \"name\": \"Argentina\"\n },\n {\n \"code\": \"AM\",\n \"value\": 109,\n \"name\": \"Armenia\"\n },\n {\n \"code\": \"AW\",\n \"value\": 597,\n \"name\": \"Aruba\"\n },\n {\n \"code\": \"AU\",\n \"value\": 3,\n \"name\": \"Australia\"\n },\n {\n \"code\": \"AT\",\n \"value\": 102,\n \"name\": \"Austria\"\n },\n {\n \"code\": \"AZ\",\n \"value\": 110,\n \"name\": \"Azerbaijan\"\n },\n {\n \"code\": \"BS\",\n \"value\": 34,\n \"name\": \"Bahamas, The\"\n },\n {\n \"code\": \"BH\",\n \"value\": 1660,\n \"name\": \"Bahrain\"\n },\n {\n \"code\": \"BD\",\n \"value\": 1142,\n \"name\": \"Bangladesh\"\n },\n {\n \"code\": \"BB\",\n \"value\": 636,\n \"name\": \"Barbados\"\n },\n {\n \"code\": \"BY\",\n \"value\": 47,\n \"name\": \"Belarus\"\n },\n {\n \"code\": \"BE\",\n \"value\": 359,\n \"name\": \"Belgium\"\n },\n {\n \"code\": \"BZ\",\n \"value\": 15,\n \"name\": \"Belize\"\n },\n {\n \"code\": \"BJ\",\n \"value\": 80,\n \"name\": \"Benin\"\n },\n {\n \"code\": \"BM\",\n \"value\": 1292,\n \"name\": \"Bermuda\"\n },\n {\n \"code\": \"BT\",\n \"value\": 19,\n \"name\": \"Bhutan\"\n },\n {\n \"code\": \"BO\",\n \"value\": 9,\n \"name\": \"Bolivia\"\n },\n {\n \"code\": \"BA\",\n \"value\": 73,\n \"name\": \"Bosnia and Herzegovina\"\n },\n {\n \"code\": \"BW\",\n \"value\": 4,\n \"name\": \"Botswana\"\n },\n {\n \"code\": \"BR\",\n \"value\": 23,\n \"name\": \"Brazil\"\n },\n {\n \"code\": \"BN\",\n \"value\": 76,\n \"name\": \"Brunei Darussalam\"\n },\n {\n \"code\": \"BG\",\n \"value\": 69,\n \"name\": \"Bulgaria\"\n },\n {\n \"code\": \"BF\",\n \"value\": 60,\n \"name\": \"Burkina Faso\"\n },\n {\n \"code\": \"BI\",\n \"value\": 326,\n \"name\": \"Burundi\"\n },\n {\n \"code\": \"KH\",\n \"value\": 80,\n \"name\": \"Cambodia\"\n },\n {\n \"code\": \"CM\",\n \"value\": 41,\n \"name\": \"Cameroon\"\n },\n {\n \"code\": \"CA\",\n \"value\": 4,\n \"name\": \"Canada\"\n },\n {\n \"code\": \"CV\",\n \"value\": 123,\n \"name\": \"Cape Verde\"\n },\n {\n \"code\": \"KY\",\n \"value\": 234,\n \"name\": \"Cayman Islands\"\n },\n {\n \"code\": \"CF\",\n \"value\": 7,\n \"name\": \"Central African Republic\"\n },\n {\n \"code\": \"TD\",\n \"value\": 9,\n \"name\": \"Chad\"\n },\n {\n \"code\": \"CL\",\n \"value\": 23,\n \"name\": \"Chile\"\n },\n {\n \"code\": \"CN\",\n \"value\": 143,\n \"name\": \"China\"\n },\n {\n \"code\": \"CO\",\n \"value\": 42,\n \"name\": \"Colombia\"\n },\n {\n \"code\": \"KM\",\n \"value\": 395,\n \"name\": \"Comoros\"\n },\n {\n \"code\": \"CD\",\n \"value\": 29,\n \"name\": \"Congo, Dem. Rep.\"\n },\n {\n \"code\": \"CG\",\n \"value\": 12,\n \"name\": \"Congo, Rep.\"\n },\n {\n \"code\": \"CR\",\n \"value\": 91,\n \"name\": \"Costa Rica\"\n },\n {\n \"code\": \"CI\",\n \"value\": 62,\n \"name\": \"Cote d'Ivoire\"\n },\n {\n \"code\": \"HR\",\n \"value\": 79,\n \"name\": \"Croatia\"\n },\n {\n \"code\": \"CU\",\n \"value\": 106,\n \"name\": \"Cuba\"\n },\n {\n \"code\": \"CW\",\n \"value\": 321,\n \"name\": \"Curacao\"\n },\n {\n \"code\": \"CY\",\n \"value\": 119,\n \"name\": \"Cyprus\"\n },\n {\n \"code\": \"CZ\",\n \"value\": 136,\n \"name\": \"Czech Republic\"\n },\n {\n \"code\": \"DK\",\n \"value\": 131,\n \"name\": \"Denmark\"\n },\n {\n \"code\": \"DJ\",\n \"value\": 38,\n \"name\": \"Djibouti\"\n },\n {\n \"code\": \"DM\",\n \"value\": 90,\n \"name\": \"Dominica\"\n },\n {\n \"code\": \"DO\",\n \"value\": 205,\n \"name\": \"Dominican Republic\"\n },\n {\n \"code\": \"EC\",\n \"value\": 58,\n \"name\": \"Ecuador\"\n },\n {\n \"code\": \"EG\",\n \"value\": 81,\n \"name\": \"Egypt, Arab Rep.\"\n },\n {\n \"code\": \"SV\",\n \"value\": 299,\n \"name\": \"El Salvador\"\n },\n {\n \"code\": \"GQ\",\n \"value\": 25,\n \"name\": \"Equatorial Guinea\"\n },\n {\n \"code\": \"ER\",\n \"value\": 52,\n \"name\": \"Eritrea\"\n },\n {\n \"code\": \"EE\",\n \"value\": 32,\n \"name\": \"Estonia\"\n },\n {\n \"code\": \"ET\",\n \"value\": 83,\n \"name\": \"Ethiopia\"\n },\n {\n \"code\": \"FO\",\n \"value\": 35,\n \"name\": \"Faeroe Islands\"\n },\n {\n \"code\": \"FJ\",\n \"value\": 47,\n \"name\": \"Fiji\"\n },\n {\n \"code\": \"FI\",\n \"value\": 18,\n \"name\": \"Finland\"\n },\n {\n \"code\": \"FR\",\n \"value\": 118,\n \"name\": \"France\"\n },\n {\n \"code\": \"PF\",\n \"value\": 74,\n \"name\": \"French Polynesia\"\n },\n {\n \"code\": \"GA\",\n \"value\": 6,\n \"name\": \"Gabon\"\n },\n {\n \"code\": \"GM\",\n \"value\": 173,\n \"name\": \"Gambia, The\"\n },\n {\n \"code\": \"GE\",\n \"value\": 78,\n \"name\": \"Georgia\"\n },\n {\n \"code\": \"DE\",\n \"value\": 234,\n \"name\": \"Germany\"\n },\n {\n \"code\": \"GH\",\n \"value\": 107,\n \"name\": \"Ghana\"\n },\n {\n \"code\": \"GR\",\n \"value\": 88,\n \"name\": \"Greece\"\n },\n {\n \"code\": \"GL\",\n \"value\": 0.02,\n \"name\": \"Greenland\"\n },\n {\n \"code\": \"GD\",\n \"value\": 307,\n \"name\": \"Grenada\"\n },\n {\n \"code\": \"GU\",\n \"value\": 333,\n \"name\": \"Guam\"\n },\n {\n \"code\": \"GT\",\n \"value\": 134,\n \"name\": \"Guatemala\"\n },\n {\n \"code\": \"GN\",\n \"value\": 41,\n \"name\": \"Guinea\"\n },\n {\n \"code\": \"GW\",\n \"value\": 54,\n \"name\": \"Guinea-Bissau\"\n },\n {\n \"code\": \"GY\",\n \"value\": 4,\n \"name\": \"Guyana\"\n },\n {\n \"code\": \"HT\",\n \"value\": 363,\n \"name\": \"Haiti\"\n },\n {\n \"code\": \"HN\",\n \"value\": 68,\n \"name\": \"Honduras\"\n },\n {\n \"code\": \"HK\",\n \"value\": 6783,\n \"name\": \"Hong Kong SAR, China\"\n },\n {\n \"code\": \"HU\",\n \"value\": 112,\n \"name\": \"Hungary\"\n },\n {\n \"code\": \"IS\",\n \"value\": 3,\n \"name\": \"Iceland\"\n },\n {\n \"code\": \"IN\",\n \"value\": 394,\n \"name\": \"India\"\n },\n {\n \"code\": \"ID\",\n \"value\": 132,\n \"name\": \"Indonesia\"\n },\n {\n \"code\": \"IR\",\n \"value\": 45,\n \"name\": \"Iran, Islamic Rep.\"\n },\n {\n \"code\": \"IQ\",\n \"value\": 73,\n \"name\": \"Iraq\"\n },\n {\n \"code\": \"IE\",\n \"value\": 65,\n \"name\": \"Ireland\"\n },\n {\n \"code\": \"IM\",\n \"value\": 145,\n \"name\": \"Isle of Man\"\n },\n {\n \"code\": \"IL\",\n \"value\": 352,\n \"name\": \"Israel\"\n },\n {\n \"code\": \"IT\",\n \"value\": 206,\n \"name\": \"Italy\"\n },\n {\n \"code\": \"JM\",\n \"value\": 250,\n \"name\": \"Jamaica\"\n },\n {\n \"code\": \"JP\",\n \"value\": 350,\n \"name\": \"Japan\"\n },\n {\n \"code\": \"JO\",\n \"value\": 69,\n \"name\": \"Jordan\"\n },\n {\n \"code\": \"KZ\",\n \"value\": 6,\n \"name\": \"Kazakhstan\"\n },\n {\n \"code\": \"KE\",\n \"value\": 71,\n \"name\": \"Kenya\"\n },\n {\n \"code\": \"KI\",\n \"value\": 123,\n \"name\": \"Kiribati\"\n },\n {\n \"code\": \"KP\",\n \"value\": 202,\n \"name\": \"Korea, Dem. Rep.\"\n },\n {\n \"code\": \"KR\",\n \"value\": 504,\n \"name\": \"Korea, Rep.\"\n },\n {\n \"code\": \"XK\",\n \"value\": 167,\n \"name\": \"Kosovo\"\n },\n {\n \"code\": \"KW\",\n \"value\": 154,\n \"name\": \"Kuwait\"\n },\n {\n \"code\": \"KG\",\n \"value\": 28,\n \"name\": \"Kyrgyz Republic\"\n },\n {\n \"code\": \"LA\",\n \"value\": 27,\n \"name\": \"Lao PDR\"\n },\n {\n \"code\": \"LV\",\n \"value\": 36,\n \"name\": \"Latvia\"\n },\n {\n \"code\": \"LB\",\n \"value\": 413,\n \"name\": \"Lebanon\"\n },\n {\n \"code\": \"LS\",\n \"value\": 72,\n \"name\": \"Lesotho\"\n },\n {\n \"code\": \"LR\",\n \"value\": 41,\n \"name\": \"Liberia\"\n },\n {\n \"code\": \"LY\",\n \"value\": 4,\n \"name\": \"Libya\"\n },\n {\n \"code\": \"LI\",\n \"value\": 225,\n \"name\": \"Liechtenstein\"\n },\n {\n \"code\": \"LT\",\n \"value\": 53,\n \"name\": \"Lithuania\"\n },\n {\n \"code\": \"LU\",\n \"value\": 195,\n \"name\": \"Luxembourg\"\n },\n {\n \"code\": \"MO\",\n \"value\": 19416,\n \"name\": \"Macao SAR, China\"\n },\n {\n \"code\": \"MK\",\n \"value\": 82,\n \"name\": \"Macedonia, FYR\"\n },\n {\n \"code\": \"MG\",\n \"value\": 36,\n \"name\": \"Madagascar\"\n },\n {\n \"code\": \"MW\",\n \"value\": 158,\n \"name\": \"Malawi\"\n },\n {\n \"code\": \"MY\",\n \"value\": 86,\n \"name\": \"Malaysia\"\n },\n {\n \"code\": \"MV\",\n \"value\": 1053,\n \"name\": \"Maldives\"\n },\n {\n \"code\": \"ML\",\n \"value\": 13,\n \"name\": \"Mali\"\n },\n {\n \"code\": \"MT\",\n \"value\": 1291,\n \"name\": \"Malta\"\n },\n {\n \"code\": \"MH\",\n \"value\": 300,\n \"name\": \"Marshall Islands\"\n },\n {\n \"code\": \"MR\",\n \"value\": 3,\n \"name\": \"Mauritania\"\n },\n {\n \"code\": \"MU\",\n \"value\": 631,\n \"name\": \"Mauritius\"\n },\n {\n \"code\": \"YT\",\n \"value\": 552,\n \"name\": \"Mayotte\"\n },\n {\n \"code\": \"MX\",\n \"value\": 58,\n \"name\": \"Mexico\"\n },\n {\n \"code\": \"FM\",\n \"value\": 159,\n \"name\": \"Micronesia, Fed. Sts.\"\n },\n {\n \"code\": \"MD\",\n \"value\": 124,\n \"name\": \"Moldova\"\n },\n {\n \"code\": \"MC\",\n \"value\": 17704,\n \"name\": \"Monaco\"\n },\n {\n \"code\": \"MN\",\n \"value\": 2,\n \"name\": \"Mongolia\"\n },\n {\n \"code\": \"ME\",\n \"value\": 47,\n \"name\": \"Montenegro\"\n },\n {\n \"code\": \"MA\",\n \"value\": 72,\n \"name\": \"Morocco\"\n },\n {\n \"code\": \"MZ\",\n \"value\": 30,\n \"name\": \"Mozambique\"\n },\n {\n \"code\": \"MM\",\n \"value\": 73,\n \"name\": \"Myanmar\"\n },\n {\n \"code\": \"NA\",\n \"value\": 3,\n \"name\": \"Namibia\"\n },\n {\n \"code\": \"NP\",\n \"value\": 209,\n \"name\": \"Nepal\"\n },\n {\n \"code\": \"NL\",\n \"value\": 492,\n \"name\": \"Netherlands\"\n },\n {\n \"code\": \"NC\",\n \"value\": 14,\n \"name\": \"New Caledonia\"\n },\n {\n \"code\": \"NZ\",\n \"value\": 17,\n \"name\": \"New Zealand\"\n },\n {\n \"code\": \"NI\",\n \"value\": 48,\n \"name\": \"Nicaragua\"\n },\n {\n \"code\": \"NE\",\n \"value\": 12,\n \"name\": \"Niger\"\n },\n {\n \"code\": \"NG\",\n \"value\": 174,\n \"name\": \"Nigeria\"\n },\n {\n \"code\": \"MP\",\n \"value\": 132,\n \"name\": \"Northern Mariana Islands\"\n },\n {\n \"code\": \"NO\",\n \"value\": 16,\n \"name\": \"Norway\"\n },\n {\n \"code\": \"OM\",\n \"value\": 9,\n \"name\": \"Oman\"\n },\n {\n \"code\": \"PK\",\n \"value\": 225,\n \"name\": \"Pakistan\"\n },\n {\n \"code\": \"PW\",\n \"value\": 45,\n \"name\": \"Palau\"\n },\n {\n \"code\": \"PA\",\n \"value\": 47,\n \"name\": \"Panama\"\n },\n {\n \"code\": \"PG\",\n \"value\": 15,\n \"name\": \"Papua New Guinea\"\n },\n {\n \"code\": \"PY\",\n \"value\": 16,\n \"name\": \"Paraguay\"\n },\n {\n \"code\": \"PE\",\n \"value\": 23,\n \"name\": \"Peru\"\n },\n {\n \"code\": \"PH\",\n \"value\": 313,\n \"name\": \"Philippines\"\n },\n {\n \"code\": \"PL\",\n \"value\": 126,\n \"name\": \"Poland\"\n },\n {\n \"code\": \"PT\",\n \"value\": 116,\n \"name\": \"Portugal\"\n },\n {\n \"code\": \"PR\",\n \"value\": 449,\n \"name\": \"Puerto Rico\"\n },\n {\n \"code\": \"WA\",\n \"value\": 152,\n \"name\": \"Qatar\"\n },\n {\n \"code\": \"RO\",\n \"value\": 93,\n \"name\": \"Romania\"\n },\n {\n \"code\": \"RU\",\n \"value\": 9,\n \"name\": \"Russian Federation\"\n },\n {\n \"code\": \"RW\",\n \"value\": 431,\n \"name\": \"Rwanda\"\n },\n {\n \"code\": \"WS\",\n \"value\": 65,\n \"name\": \"Samoa\"\n },\n {\n \"code\": \"SM\",\n \"value\": 526,\n \"name\": \"San Marino\"\n },\n {\n \"code\": \"ST\",\n \"value\": 172,\n \"name\": \"Sao Tome and Principe\"\n },\n {\n \"code\": \"SA\",\n \"value\": 14,\n \"name\": \"Saudi Arabia\"\n },\n {\n \"code\": \"SN\",\n \"value\": 65,\n \"name\": \"Senegal\"\n },\n {\n \"code\": \"RS\",\n \"value\": 83,\n \"name\": \"Serbia\"\n },\n {\n \"code\": \"SC\",\n \"value\": 188,\n \"name\": \"Seychelles\"\n },\n {\n \"code\": \"SL\",\n \"value\": 82,\n \"name\": \"Sierra Leone\"\n },\n {\n \"code\": \"SG\",\n \"value\": 7252,\n \"name\": \"Singapore\"\n },\n {\n \"code\": \"SK\",\n \"value\": 113,\n \"name\": \"Slovak Republic\"\n },\n {\n \"code\": \"SI\",\n \"value\": 102,\n \"name\": \"Slovenia\"\n },\n {\n \"code\": \"SB\",\n \"value\": 19,\n \"name\": \"Solomon Islands\"\n },\n {\n \"code\": \"SO\",\n \"value\": 15,\n \"name\": \"Somalia\"\n },\n {\n \"code\": \"ZA\",\n \"value\": 41,\n \"name\": \"South Africa\"\n },\n {\n \"code\": \"SS\",\n \"value\": 13,\n \"name\": \"South Sudan\"\n },\n {\n \"code\": \"ES\",\n \"value\": 92,\n \"name\": \"Spain\"\n },\n {\n \"code\": \"LK\",\n \"value\": 333,\n \"name\": \"Sri Lanka\"\n },\n {\n \"code\": \"KN\",\n \"value\": 202,\n \"name\": \"St. Kitts and Nevis\"\n },\n {\n \"code\": \"LC\",\n \"value\": 285,\n \"name\": \"St. Lucia\"\n },\n {\n \"code\": \"MF\",\n \"value\": 556,\n \"name\": \"St. Martin (French part)\"\n },\n {\n \"code\": \"VC\",\n \"value\": 280,\n \"name\": \"St. Vincent and the Grenadines\"\n },\n {\n \"code\": \"SD\",\n \"value\": 16,\n \"name\": \"Sudan\"\n },\n {\n \"code\": \"SR\",\n \"value\": 3,\n \"name\": \"Suriname\"\n },\n {\n \"code\": \"SZ\",\n \"value\": 69,\n \"name\": \"Swaziland\"\n },\n {\n \"code\": \"SE\",\n \"value\": 23,\n \"name\": \"Sweden\"\n },\n {\n \"code\": \"CH\",\n \"value\": 196,\n \"name\": \"Switzerland\"\n },\n {\n \"code\": \"SY\",\n \"value\": 111,\n \"name\": \"Syrian Arab Republic\"\n },\n {\n \"code\": \"TJ\",\n \"value\": 49,\n \"name\": \"Tajikistan\"\n },\n {\n \"code\": \"TZ\",\n \"value\": 51,\n \"name\": \"Tanzania\"\n },\n {\n \"code\": \"TH\",\n \"value\": 135,\n \"name\": \"Thailand\"\n },\n {\n \"code\": \"TP\",\n \"value\": 76,\n \"name\": \"Timor-Leste\"\n },\n {\n \"code\": \"TG\",\n \"value\": 111,\n \"name\": \"Togo\"\n },\n {\n \"code\": \"TO\",\n \"value\": 145,\n \"name\": \"Tonga\"\n },\n {\n \"code\": \"TT\",\n \"value\": 261,\n \"name\": \"Trinidad and Tobago\"\n },\n {\n \"code\": \"TN\",\n \"value\": 68,\n \"name\": \"Tunisia\"\n },\n {\n \"code\": \"TR\",\n \"value\": 95,\n \"name\": \"Turkey\"\n },\n {\n \"code\": \"TM\",\n \"value\": 11,\n \"name\": \"Turkmenistan\"\n },\n {\n \"code\": \"TC\",\n \"value\": 40,\n \"name\": \"Turks and Caicos Islands\"\n },\n {\n \"code\": \"TV\",\n \"value\": 328,\n \"name\": \"Tuvalu\"\n },\n {\n \"code\": \"UG\",\n \"value\": 170,\n \"name\": \"Uganda\"\n },\n {\n \"code\": \"UA\",\n \"value\": 79,\n \"name\": \"Ukraine\"\n },\n {\n \"code\": \"AE\",\n \"value\": 90,\n \"name\": \"United Arab Emirates\"\n },\n {\n \"code\": \"GB\",\n \"value\": 257,\n \"name\": \"United Kingdom\"\n },\n {\n \"code\": \"US\",\n \"value\": 34,\n \"name\": \"United States\"\n },\n {\n \"code\": \"UY\",\n \"value\": 19,\n \"name\": \"Uruguay\"\n },\n {\n \"code\": \"UZ\",\n \"value\": 66,\n \"name\": \"Uzbekistan\"\n },\n {\n \"code\": \"VU\",\n \"value\": 20,\n \"name\": \"Vanuatu\"\n },\n {\n \"code\": \"VE\",\n \"value\": 33,\n \"name\": \"Venezuela, RB\"\n },\n {\n \"code\": \"VN\",\n \"value\": 280,\n \"name\": \"Vietnam\"\n },\n {\n \"code\": \"VI\",\n \"value\": 314,\n \"name\": \"Virgin Islands (U.S.)\"\n },\n {\n \"code\": \"PS\",\n \"value\": 690,\n \"name\": \"West Bank and Gaza\"\n },\n {\n \"code\": \"EH\",\n \"value\": 2,\n \"name\": \"Western Sahara\"\n },\n {\n \"code\": \"YE\",\n \"value\": 46,\n \"name\": \"Yemen, Rep.\"\n },\n {\n \"code\": \"ZM\",\n \"value\": 17,\n \"name\": \"Zambia\"\n },\n {\n \"code\": \"ZW\",\n \"value\": 32,\n \"name\": \"Zimbabwe\"\n }\n ],\n states: {\n hover: {\n color: '#4ce1b6',\n },\n },\n }],\n };\n new window.Highcharts.Map('vector-map1', config)\n }\n});\n","","$(document).ready(function() {\n\t$('.gallery').magnificPopup({\n\t\tdelegate: 'a',\n\t\ttype: 'image',\n\t\ttLoading: 'Loading image #%curr%...',\n\t\tmainClass: 'mfp-img-mobile',\n\t\tgallery: {\n\t\t\tenabled: true,\n\t\t\tnavigateByImgClick: true,\n\t\t\tpreload: [0,1] // Will preload 0 - before current, and 1 after the current image\n\t\t},\n\t\timage: {\n\t\t\ttError: 'The image #%curr% could not be loaded.',\n\t\t\ttitleSrc: function(item) {\n\t\t\t\treturn item.el.attr('title') + 'by Marsel Van Oosten';\n\t\t\t}\n\t\t}\n\t});\n});","$(document).ready(function(){\n if (document.getElementById('project-summary__chart1')) {\n const data01 = [\n {name: 'Minor Bugs', value: 150, color: '#4ce1b6'},\n {name: 'Resolved Bugs', value: 75, color: '#70bbfd'},\n {name: 'Critical Bugs', value: 75, color: '#ff4861'},\n ];\n const myChart = window.echarts.init(document.getElementById('project-summary__chart1'));\n // specify chart configuration item and data\n const option = {\n title: {\n text: ''\n },\n legend: {\n data: data01.map(x => x.name),\n orient: 'vertical',\n x: 'right',\n y: 'bottom',\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'item',\n formatter: \"{b}: {c} ({d}%)\"\n },\n series: [\n {\n name: false,\n type: 'pie',\n radius: ['40%', '55%'],\n data: data01,\n label: {\n normal: {\n formatter: '{c}',\n }\n },\n itemStyle:{\n normal: {\n color: function(params) {\n return params.data.color;\n }\n }\n }\n }\n ]\n };\n myChart.setOption(option);\n }\n if (document.getElementById('project-summary__chart2')) {\n const data01 = [\n {name: 'New Tasks', value: 40, color: '#4ce1b6'},\n {name: 'Done Tasks', value: 175, color: '#70bbfd'},\n {name: 'High Priority Tasks', value: 70, color: '#ff4861'},\n ];\n const myChart = window.echarts.init(document.getElementById('project-summary__chart2'));\n // specify chart configuration item and data\n const option = {\n title: {\n text: ''\n },\n legend: {\n orient: 'vertical',\n x: 'right',\n y: 'bottom',\n data: data01.map(x => x.name)\n },\n textStyle: {\n color: '#999',\n fontSize: '13px',\n lineHeight: '1.6'\n },\n tooltip: {\n trigger: 'item',\n formatter: \"{b}: {c} ({d}%)\"\n },\n series: [\n {\n name: false,\n type: 'pie',\n radius: ['40%', '55%'],\n data: data01,\n label: {\n normal: {\n formatter: '{c}',\n }\n },\n itemStyle: {\n normal: {\n color: function (params) {\n return params.data.color;\n }\n }\n }\n }\n ]\n };\n myChart.setOption(option);\n }\n});\n","$(document).ready(function(){\n $(\".order_list-select\").chosen().change(function(){\n $('#my-table').DataTable().page.len( parseInt($(this).val(), 10)).draw();\n });\n});\n","","$(document).ready(() => {\n const getBase64 = file => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n };\n const addFile = function (self, file) {\n getBase64(file).then(data => {\n $(self.element).parent().find('.dropzone').append(`\n \n `);\n $(\".dropzone__img-delete\").on('click', function(){\n $(this).parent().remove();\n });\n });\n };\n\n const dropzones = ['dropzone1', 'dropzone2'];\n dropzones.forEach(dropzoneId => {\n if(document.getElementById(`${dropzoneId}`)){\n $(`#${dropzoneId}`).dropzone({\n init: function () {\n this.on('addedfile', function(file){ addFile(this, file);});\n },\n url: \"/\",\n clickable: `#${dropzoneId}-input`,\n dictDefaultMessage: '',\n previewTemplate: `
      `\n });\n }\n });\n});\n","$(document).ready(function(){\n $(\".order_list-select\").chosen().change(function(){\n $('#my-table').DataTable().page.len( parseInt($(this).val(), 10)).draw();\n });\n});\n","$(document).ready(function(){\n $(\".product-gallery__img-preview\").on('click', function(){\n $(\".product-gallery__current-img\").find('img').attr('src',$(this).find('img').attr('src'));\n });\n $('select').chosen({disable_search_threshold: 10}).trigger(\"liszt:updated\");\n $('select').chosen()\n .on('chosen:showing_dropdown', function(e) {\n const chosenElement = $(e.currentTarget.nextSibling);\n chosenElement\n .find('li.active-result:contains(Pink Sugar)')\n .addClass('pink');\n });\n});\n","let TimePicker = function(selector, pm = false) {\n const root = $(selector);\n let input = root.find('input');\n let dropdown = root.find('.dropdown-menu');\n let hours = root.find('.rc-time-picker-panel-select.hour .dropdown-item');\n let minutes = root.find('.rc-time-picker-panel-select.minute .dropdown-item');\n hours.removeClass('active');\n minutes.removeClass('active');\n if(pm) {\n root.find('.rc-time-picker-panel-select.pm .dropdown-item').removeClass('active');\n }\n const setTime = (h, m, am) => {\n const hour = h || root.find('.rc-time-picker-panel-select.hour .dropdown-item.active').text();\n const minute = m || root.find('.rc-time-picker-panel-select.minute .dropdown-item.active').text();\n if (pm) {\n if (am) {\n input.val(`${hour}:${minute} ${am}`)\n } else {\n const pm = root.find('.rc-time-picker-panel-select.pm .dropdown-item.active').text();\n input.val(`${hour}:${minute} ${pm}`)\n }\n\n } else {\n input.val(`${hour}:${minute}`)\n }\n };\n const onClick = () => {\n dropdown.toggleClass('show');\n root.toggleClass('show');\n const value = input.val();\n if(value!=='') {\n if(pm) {\n let values = value.split(':');\n let hour = values[0];\n let minute = values[1].split(' ')[0];\n let pm = values[1].split(' ')[1];\n hours.eq(parseInt(hour, 10)).addClass('active');\n minutes.eq(parseInt(minute, 10)).addClass('active');\n setTime(values[0], minute, pm);\n } else {\n let values = value.split(':');\n hours.eq(parseInt(values[0], 10)).addClass('active');\n minutes.eq(parseInt(values[1], 10)).addClass('active');\n setTime(values[0], values[1])\n }\n } else {\n hours.eq(0).addClass('active');\n minutes.eq(0).addClass('active');\n if(pm) {\n root.find('.rc-time-picker-panel-select.pm .dropdown-item').eq(0).addClass('active');\n }\n setTime();\n }\n };\n input.on(\"click\", onClick);\n\n hours.on('click', function(e){\n e.preventDefault();\n root.find('.rc-time-picker-panel-select.hour .dropdown-item.active').removeClass('active');\n $(this).toggleClass('active');\n setTime();\n });\n\n minutes.on('click', function(e){\n e.preventDefault();\n root.find('.rc-time-picker-panel-select.minute .dropdown-item.active').removeClass('active');\n $(this).toggleClass('active');\n setTime();\n });\n\n root.find('.rc-time-picker-panel-select.pm .dropdown-item').on('click', function(e){\n e.preventDefault();\n root.find('.rc-time-picker-panel-select.pm .dropdown-item.active').removeClass('active');\n $(this).toggleClass('active');\n setTime();\n });\n\n $(\".rc-time-picker-clear\").on('click', function(){\n input.val('');\n });\n return {\n root,\n input,\n dropdown,\n hours,\n minutes,\n onClick\n }\n};\n\n$(document).ready(function() {\n $(document).on(\"click\", function (e) {\n const timepicker = $('.timepicker.show');\n const { target } = e;\n if(timepicker.length){\n if (!$(target).parents('.timepicker.show').length && !$(target).hasClass('timepicker-button') && !$(target).parent().hasClass('timepicker-button')) {\n if (timepicker.hasClass('show')) {\n timepicker.removeClass('show');\n const hours = timepicker.find('.rc-time-picker-panel-select.hour .dropdown-item');\n const minutes = timepicker.find('.rc-time-picker-panel-select.minute .dropdown-item');\n hours.removeClass('active');\n minutes.removeClass('active');\n timepicker.find('.dropdown-menu').removeClass('show');\n }\n }\n }\n });\n $(document).ready(()=>window.Scrollbar.initAll());\n window.firstpicker = TimePicker('#first-timepicker');\n window.secondpicker = TimePicker('#second-timepicker', true);\n\n window.firstpicker.root.parent().find('.timepicker-button').on('click', function(){\n window.firstpicker.onClick();\n $(this).toggleClass('active');\n });\n window.secondpicker.root.parent().find('.timepicker-button').on('click', function(){\n window.secondpicker.onClick();\n $(this).toggleClass('active');\n });\n});\n","$(document).ready(function () {\n window.pick = {};\n const createPickr = (el = '.colorpicker', theme = {}) =>\n window.Pickr.create({\n el,\n useAsButton: true,\n swatches: [\n 'rgba(244, 67, 54, 1)',\n 'rgba(233, 30, 99, 0.95)',\n 'rgba(156, 39, 176, 0.9)',\n 'rgba(103, 58, 183, 0.85)',\n 'rgba(63, 81, 181, 0.8)',\n 'rgba(33, 150, 243, 0.75)',\n 'rgba(3, 169, 244, 0.7)',\n 'rgba(0, 188, 212, 0.7)',\n 'rgba(0, 150, 136, 0.75)',\n 'rgba(76, 175, 80, 0.8)',\n 'rgba(139, 195, 74, 0.85)',\n 'rgba(205, 220, 57, 0.9)',\n 'rgba(255, 235, 59, 0.95)',\n 'rgba(255, 193, 7, 1)'\n ],\n ...theme,\n components: {\n\n // Main components\n preview: true,\n opacity: true,\n hue: true,\n\n // Input / output Options\n interaction: {\n hex: true,\n rgba: true,\n hsla: true,\n hsva: true,\n cmyk: true,\n input: true,\n clear: true,\n save: true\n }\n }\n }).on('save', (...args) => {\n const colorHex = args[0].toHEXA();\n const colorRGB = args[0].toRGBA();\n if ($(args[1]._root.button).find('p').length) {\n $(args[1]._root.button).find('p').text(['#', ...colorHex].join(''));\n $(args[1]._root.button).find('.color-picker__color-view').attr('style', `background-color: rgba(${colorRGB[0]}, ${colorRGB[1]}, ${colorRGB[2]}, ${colorRGB[3]})`);\n }\n }).on('change', (...args) => {\n const colorHex = args[0].toHEXA();\n const colorRGB = args[0].toRGBA();\n if ($(args[1]._root.button).find('p').length) {\n $(args[1]._root.button).find('p').text(['#', ...colorHex].join(''));\n $(args[1]._root.button)\n .find('.color-picker__color-view')\n .attr('style', `background-color: rgba(${colorRGB[0]}, ${colorRGB[1]}, ${colorRGB[2]}, ${colorRGB[3]})`);\n }\n });\n window.pick.full = createPickr();\n window.pick.nano = createPickr('#nano-pickr-root', {theme: 'nano'});\n\n $('.full-pickr').on('click', () => window.pick.full.show());\n $('.nano-pickr').on('click', () => window.pick.nano.show());\n\n $('#standard-pickr').on('click', function (e) {\n e.preventDefault();\n $(this).find(\"input[type='color']\").trigger('click');\n });\n\n $(\"#standard-pickr input[type='color']\").on('click', e => e.stopPropagation());\n});\n\n\n\n","$(document).ready(function(){\n $(\"#1-mask\").mask('(000)-000-0000');\n $(\"#2-mask\").mask('+23-000-0000');\n $(\"#3-mask\").mask('00/00/0000');\n $(\"#4-mask\").mask('00-00-0000');\n $(\"#5-mask\").mask('$000,000,000.00');\n $(\"#6-mask\").mask('AAAA-AAAA-AAAA-AAAA');\n $(\"#7-mask\").mask('000.000.000.000');\n});\n","$(document).ready(function(){\n\n $('.step1').show();\n $('.step2').hide();\n $('.step3').hide();\n\n $('button.next').on('click', function(e){\n e.preventDefault();\n const steps = $(\".wizard__steps .wizard__step\");\n let activeIndex = 0;\n steps.each(function(index, val) {\n if($(val).hasClass('wizard__step--active')){\n activeIndex = index;\n }\n });\n if(steps.eq(activeIndex+1).length){\n $('button.previous').removeClass('disabled');\n steps.removeClass('wizard__step--active');\n steps.eq(activeIndex+1).addClass('wizard__step--active');\n if(!steps.eq(activeIndex+2).length){\n $('button.next').addClass('disabled');\n }\n $(`.step${activeIndex+1}`).hide();\n $(`.step${activeIndex+2}`).show();\n }\n });\n\n $('button.previous').on('click', function(e){\n e.preventDefault();\n const steps = $(\".wizard__steps .wizard__step\");\n let activeIndex = 0;\n steps.each(function(index, val) {\n if($(val).hasClass('wizard__step--active')){\n activeIndex = index;\n }\n });\n if(steps.eq(activeIndex-1).length){\n $('button.next').removeClass('disabled');\n steps.removeClass('wizard__step--active');\n steps.eq(activeIndex-1).addClass('wizard__step--active');\n if(activeIndex-1<=0){\n $('button.previous').addClass('disabled');\n }\n $(`.step${activeIndex+1}`).hide();\n $(`.step${activeIndex}`).show();\n }\n });\n});\n","const callNotification = ({ title='', text='', type, extra = '', img='', full }) => {\n const wrapper = $(`.rc-notification.rc-${full ? 'full' : type} > span`);\n const left = type === 'right' ? 'calc(-100% + 100vw)' : '0px';\n wrapper.append(`\n
      \n
      \n
      \n ${img ? `
      \"\"
      ` : ''}\n
      ${title}
      \n

      ${text}

      \n
      \n \n \n \n
      \n
      \n `);\n wrapper.find('.rc-notification-notice-close-x').last().on('click', function() {\n $(this).parent().parent().remove();\n });\n setTimeout(()=>{\n wrapper.find('.rc-notification-notice').last().remove();\n }, 3000)\n};\n\n$(\".notification-caller\").on('click', function (){\n callNotification({\n title: $(this).attr('data-notification-title'),\n text: $(this).attr('data-notification-text'),\n type: $(this).attr('data-notification-type'),\n extra: $(this).attr('data-notification-extra'),\n img: $(this).attr('data-notification-img'),\n full: $(this).attr('data-notification-full'),\n })\n});\n\n","$(function () {\n const getCoords = elem => elem.getBoundingClientRect();\n\n function Handle({value, max, elem, tooltip}) {\n this.value = value;\n this.valuePercent = value / max * 100;\n this.valuePartMax = value / max;\n this.elem = elem;\n this.tooltip = tooltip;\n tooltip.text(this.value);\n this.setCoords = () => this.coords = getCoords(elem[0]);\n this.getLeft = () => this.elem[0].style.left.replace('%', '');\n this.getCoordsLeft = () => getCoords(elem[0]).left;\n }\n\n window.RangeSlider = function (selector, settings) {\n const root = $(selector);\n if(!Object.keys(root).length){\n return {\n init: () => {},\n };\n }\n const handlers = {\n root: {\n elem: root,\n width: root.width(),\n coords: getCoords(root[0]),\n },\n one: new Handle({\n value: settings.value,\n max: settings.max,\n elem: $(\"
      \").addClass(\"rc-slider-handle\").attr(\"style\", `left: ${settings.value / settings.max * 100}%;`)\n .attr('aria-valuemin', settings.min).attr('aria-valuenow', settings.value).attr('aria-valuemax', settings.max).on('dragstart', () => {\n }),\n tooltip: $(\"
      \").addClass(\"rc-slider-tooltip-inner\").attr('style', \"position: absolute; bottom: 25px; left: -5px;text-align: center;\").on('dragstart', () => {}).text(settings.value),\n })\n };\n const sliderTrack = $(\"
      \").addClass(\"rc-slider-track\").width(`${settings.value / settings.max * 100}%`).on('dragstart', () => {});\n const marks = $(\"
      \").addClass(\"rc-slider-mark\");\n root\n .append($(\"
      \").addClass(\"slider__min\").append($('

      ').text(settings.min)).on('dragstart', () => {\n }))\n .append($(\"

      \").addClass(\"slider__max\").append($('

      ').text(settings.max)).on('dragstart', () => {\n }))\n .append($(\"

      \").addClass(`rc-slider ${settings.marks ? 'rc-slider-with-marks' : ''}`).on('dragstart', () => {\n })\n .append($(\"
      \").addClass(\"rc-slider-rail\").on('dragstart', () => {\n }))\n .append(sliderTrack)\n .append($(\"
      \").addClass(\"rc-slider-step\").on('dragstart', () => {\n }))\n .append(handlers.one.elem\n .append($(\"
      \").addClass(\"rc-slider-tooltip-content\").on('dragstart', () => {\n })\n .append($(\"
      \").addClass(\"rc-slider-tooltip-arrow\").on('dragstart', () => {\n }))\n .append(handlers.one.tooltip)))\n .append(marks.on('dragstart', () => {\n }))\n );\n if (settings.marksItems) {\n settings.marksItems.forEach((val) => {\n marks.append($(`${val.val}`));\n })\n }\n const onEnd = () => document.onmousemove = null;\n const onEndTouch = () => document.ontouchmove = null;\n return {\n root,\n init: function () {\n document.onmouseup = () => document.onmousemove = null;\n document.ontouchend = () => document.ontouchmove = null;\n handlers.one.elem.on('onmouseup', onEnd);\n handlers.one.elem.on('ontouchend', onEndTouch);\n handlers.one.elem.on('dragstart', () => {});\n handlers.one.elem.on(\"mousedown\", function () {\n handlers.one.elem[0].style.zIndex = 20;\n handlers.one.elem[0].onmousedown = null;\n\n function moveAt(e) {\n const result = e.pageX - handlers.root.coords.left;\n if (result < 0) {\n handlers.one.elem[0].style.left = \"0px\";\n } else if (result > handlers.root.width) {\n handlers.one.elem[0].style.left = `${handlers.root.width}px`;\n } else {\n handlers.one.elem[0].style.left = `${result}px`;\n }\n let width = Math.round(result / handlers.root.width * 100);\n if (result < 0) {\n width = 0;\n } else if (result > handlers.root.width) {\n width = 100;\n }\n handlers.one.elem.attr('aria-valuenow', Math.round(width / 100 * settings.max));\n sliderTrack.width(`${width}%`);\n handlers.one.tooltip.text(Math.round(width / 100 * settings.max));\n }\n\n document.onmousemove = function (e) {\n moveAt(e);\n };\n });\n handlers.one.elem.on(\"touchstart\", function () {\n handlers.one.elem[0].style.zIndex = 20;\n handlers.one.elem[0].ontouchstart = null;\n\n function moveAt(e) {\n const result = e.touches[0].pageX - handlers.root.coords.left;\n if (result < 0) {\n handlers.one.elem[0].style.left = \"0px\";\n } else if (result > handlers.root.width) {\n handlers.one.elem[0].style.left = `${handlers.root.width}px`;\n } else {\n handlers.one.elem[0].style.left = `${result}px`;\n }\n let width = Math.round(result / handlers.root.width * 100);\n if (result < 0) {\n width = 0;\n } else if (result > handlers.root.width) {\n width = 100;\n }\n handlers.one.elem.attr('aria-valuenow', Math.round(width / 100 * settings.max));\n sliderTrack.width(`${width}%`);\n handlers.one.tooltip.text(Math.round(width / 100 * settings.max));\n }\n\n document.ontouchmove = function (e) {\n moveAt(e);\n };\n });\n },\n\n };\n };\n\n window.DoubleRangeSlider = function (selector, settings) {\n const root = $(selector);\n if(!Object.keys(root).length){\n return {\n init: () => {},\n };\n }\n const handlers = {\n root: {\n elem: root,\n width: root.width(),\n coords: getCoords(root[0]),\n },\n one: new Handle({\n value: settings.value1,\n max: settings.max,\n elem: $(\"
      \").addClass(\"rc-slider-handle\").addClass(\"rc-slider-handle-1\").attr(\"style\", `left: ${settings.value1 / settings.max * 100}%;`)\n .attr('aria-valuemin', settings.min).attr('aria-valuenow', settings.value1).attr('aria-valuemax', settings.max).on('dragstart', () => {\n }),\n tooltip: $(\"
      \").addClass(\"rc-slider-tooltip-inner\").attr('style', \"position: absolute; bottom: 25px; left: -5px;text-align: center;\"),\n }),\n two: new Handle({\n value: settings.value2,\n max: settings.max,\n elem: $(\"
      \").addClass(\"rc-slider-handle\").addClass(\"rc-slider-handle-2\").attr(\"style\", `left: ${settings.value2 / settings.max * 100}%;`)\n .attr('aria-valuemin', settings.min).attr('aria-valuenow', settings.value2).attr('aria-valuemax', settings.max).on('dragstart', () => {\n }),\n tooltip: $(\"
      \").addClass(\"rc-slider-tooltip-inner\").attr('style', \"position: absolute; bottom: 25px; left: -5px;text-align: center;\"),\n })\n };\n const sliderTrack = $(\"
      \")\n .addClass(\"rc-slider-track\")\n .addClass(\"rc-slider-track-1\")\n .attr(\"style\", `left: ${handlers.one.valuePercent}%;`)\n .width(`${handlers.two.valuePercent - handlers.one.valuePercent}%`);\n root\n .append($(\"
      \").addClass(\"slider__min\").append($('

      ').text(settings.min)))\n .append($(\"

      \").addClass(\"slider__max\").append($('

      ').text(settings.max)))\n .append($(\"

      \").addClass(\"rc-slider\")\n .append($(\"
      \").addClass(\"rc-slider-rail\"))\n .append(sliderTrack)\n .append($(\"
      \").addClass(\"rc-slider-step\"))\n .append(handlers.one.elem\n .append($(\"
      \").addClass(\"rc-slider-tooltip-content\")\n .append($(\"
      \").addClass(\"rc-slider-tooltip-arrow\"))\n .append(handlers.one.tooltip)))\n .append(handlers.two.elem\n .append($(\"
      \").addClass(\"rc-slider-tooltip-content\")\n .append($(\"
      \").addClass(\"rc-slider-tooltip-arrow\"))\n .append(handlers.two.tooltip)))\n .append($(\"
      \").addClass(\"rc-slider-mark\"))\n );\n\n const onEnd = () => document.onmousemove = null;\n const onEndTouch = () => document.ontouchmove = null;\n\n const mouseDown = function (e) {\n let main = $(e.target);\n if(!main.hasClass('rc-slider-handle')){\n main = main.parent().parent();\n }\n document.onmousemove = null;\n document.ontouchmove = null;\n main[0].style.zIndex = 20;\n main[0].onmousedown = null;\n main[0].ontouchstart = null;\n\n handlers.one.setCoords(getCoords(handlers.one.elem[0]));\n handlers.two.setCoords(getCoords(handlers.one.elem[0]));\n\n function move(e) {\n const result = e.pageX - handlers.root.coords.left;\n let leftOffset;\n if (result < 0) {\n leftOffset = 0;\n } else if (result > handlers.root.width) {\n leftOffset = 100;\n } else {\n leftOffset = result / handlers.root.width * 100;\n }\n const isFirst = main.hasClass('rc-slider-handle-1');\n let res;\n if (isFirst ? leftOffset <= handlers.two.getLeft() : leftOffset >= handlers.one.getLeft()) {\n res = Math.round(leftOffset / 100 * settings.max)\n } else {\n res = handlers[isFirst ? 'two' : 'one'].elem.attr('aria-valuenow');\n }\n main[0].style.left = `${res}%`;\n main.attr('aria-valuenow', res);\n handlers[isFirst ? 'one' : 'two'].tooltip.text(res);\n handlers[isFirst ? 'one' : 'two'].value = res;\n sliderTrack.attr('style', `left: ${handlers.one.value}%; width: ${(handlers.two.getCoordsLeft() - handlers.one.getCoordsLeft())}px`);\n }\n function moveTocuh(e) {\n const result = e.touches[0].pageX - handlers.root.coords.left;\n let leftOffset;\n if (result < 0) {\n leftOffset = 0;\n } else if (result > handlers.root.width) {\n leftOffset = 100;\n } else {\n leftOffset = result / handlers.root.width * 100;\n }\n const isFirst = main.hasClass('rc-slider-handle-1');\n let res;\n if (isFirst ? leftOffset <= handlers.two.getLeft() : leftOffset >= handlers.one.getLeft()) {\n res = Math.round(leftOffset / 100 * settings.max)\n } else {\n res = handlers[isFirst ? 'two' : 'one'].elem.attr('aria-valuenow');\n }\n main[0].style.left = `${res}%`;\n main.attr('aria-valuenow', res);\n handlers[isFirst ? 'one' : 'two'].tooltip.text(res);\n handlers[isFirst ? 'one' : 'two'].value = res;\n sliderTrack.attr('style', `left: ${handlers.one.value}%; width: ${(handlers.two.getCoordsLeft() - handlers.one.getCoordsLeft())}px`);\n }\n document.onmousemove = function (e) { move(e); };\n document.ontouchmove = function (e) { moveTocuh(e); };\n };\n\n return {\n root,\n init: function () {\n document.onmouseup = () => document.onmousemove = null;\n handlers.one.elem.on('mouseup', onEnd);\n handlers.one.elem.on('dragstart', () => {});\n handlers.one.elem.on(\"mousedown\", mouseDown);\n handlers.two.elem.on('mouseup', onEnd);\n handlers.two.elem.on('dragstart', () => {});\n handlers.two.elem.on(\"mousedown\", mouseDown);\n handlers.one.elem.on('touchend', onEndTouch);\n handlers.one.elem.on('dragstart', () => {});\n handlers.one.elem.on(\"touchstart\", mouseDown);\n handlers.two.elem.on('touchend', onEndTouch);\n handlers.two.elem.on('dragstart', () => {});\n handlers.two.elem.on(\"touchstart\", mouseDown);\n },\n\n };\n };\n\n}());\n\n"]}