From 2bd08cdc28bf55b7f7a169b02eb288d7b197b8d6 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Fri, 12 Apr 2019 18:44:05 +1000 Subject: [PATCH] 3.5.3 --- demo/dist/demo.css | 2 +- demo/dist/demo.js | 250 +- demo/dist/demo.min.js | 2 +- demo/dist/demo.min.js.map | 2 +- dist/plyr.css | 2 +- dist/plyr.js | 250 +- dist/plyr.min.js | 2 +- dist/plyr.min.js.map | 2 +- dist/plyr.min.mjs | 2 +- dist/plyr.min.mjs.map | 2 +- dist/plyr.mjs | 250 +- dist/plyr.polyfilled.js | 7463 ++++++++++++++++++++---------- dist/plyr.polyfilled.min.js | 2 +- dist/plyr.polyfilled.min.js.map | 2 +- dist/plyr.polyfilled.min.mjs | 2 +- dist/plyr.polyfilled.min.mjs.map | 2 +- dist/plyr.polyfilled.mjs | 7463 ++++++++++++++++++++---------- readme.md | 8 +- src/js/config/defaults.js | 2 +- src/js/plyr.js | 2 +- src/js/plyr.polyfilled.js | 2 +- 21 files changed, 10500 insertions(+), 5214 deletions(-) diff --git a/demo/dist/demo.css b/demo/dist/demo.css index b10eb8e23..ac81127bc 100644 --- a/demo/dist/demo.css +++ b/demo/dist/demo.css @@ -1 +1 @@ -@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:300;src:url(https://cdn.plyr.io/static/fonts/gordita-light.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-light.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:400;src:url(https://cdn.plyr.io/static/fonts/gordita-regular.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-regular.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:500;src:url(https://cdn.plyr.io/static/fonts/gordita-medium.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-medium.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:600;src:url(https://cdn.plyr.io/static/fonts/gordita-bold.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-bold.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:900;src:url(https://cdn.plyr.io/static/fonts/gordita-black.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-black.woff) format("woff")}@keyframes fadein{0%{opacity:0}100%{opacity:1}}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a,button.faux-link{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}body,html{display:flex;width:100%}html{background:linear-gradient(to left top,#4dc1ff,#0074b3);background-attachment:fixed;height:100%}body{align-items:center;display:flex;flex-direction:column;min-height:100%}.grid{flex:1;overflow:auto}main{margin:auto;padding-bottom:1px;text-align:center}aside{align-items:center;background:#fff;color:#55646b;display:flex;flex-shrink:0;justify-content:center;padding:15px;position:relative;text-align:center;text-shadow:none;width:100%}aside .icon{fill:#4baaf4;margin-right:10px}aside p{margin:0}aside a,aside button.faux-link{color:#4baaf4}aside a.tab-focus,aside button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(75,170,244,.35);outline:0}.grid{margin:0 auto;padding:20px}@media only screen and (min-width:768px){.grid{align-items:center;display:flex;max-width:1260px;width:100%}.grid>*{flex:1}}html{font-size:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:15px;font-size:.9375rem;color:#fff;font-family:Gordita,Avenir,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:500;line-height:1.75;text-shadow:0 1px 1px rgba(0,0,0,.15)}button,input,select,textarea{font:inherit}p,small{margin:0 0 20px}small{font-size:13px;font-size:.8125rem;display:block}h1{font-size:64px;font-size:4rem;font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 20px}.button,.button__count{align-items:center;background:#fff;border:0;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.1);color:#55646b;display:inline-flex;padding:15px;position:relative;text-shadow:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.button{font-weight:600;padding-left:20px;padding-right:20px;transition:all .2s ease}.button:focus,.button:hover{color:#343f4a}.button:focus::after,.button:hover::after{display:none}.button:hover{box-shadow:0 2px 2px rgba(0,0,0,.1);transform:translateY(-1px)}.button:focus{outline:0}.button.tab-focus{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}.button:active{transform:translateY(1px)}.button--with-count{display:inline-flex}.button--with-count .button .icon{flex-shrink:0}.button__count{animation:fadein .2s ease;margin-left:10px}.button__count::before{border:5px solid transparent;border-left-width:0;border-right-color:#fff;content:'';height:0;position:absolute;right:100%;top:50%;transform:translateY(-50%);width:0}header{padding-bottom:20px;text-align:center}header .call-to-action{margin-top:30px}@media only screen and (min-width:768px){header{margin-right:60px;max-width:360px;padding-bottom:40px;text-align:left}}.icon{fill:currentColor;height:16px;vertical-align:-3px;width:16px}a svg,button svg,button.faux-link svg,label svg{pointer-events:none}.btn .icon,a .icon,button.faux-link .icon{margin-right:6px}button.faux-link{background:0 0;border:0;border-radius:0;cursor:pointer;font:inherit;line-height:1.75;margin:0;padding:0;position:relative;text-align:inherit;text-shadow:inherit;-moz-user-select:text;vertical-align:baseline;width:auto}a,button.faux-link{border-bottom:1px dotted currentColor;color:#fff;font-weight:600;position:relative;text-decoration:none;transition:all .2s ease}a::after,button.faux-link::after{background:currentColor;content:'';height:1px;left:50%;position:absolute;top:100%;transform:translateX(-50%);transition:width .2s ease;width:0}a:focus,a:hover,button.faux-link:focus,button.faux-link:hover{border-bottom-color:transparent;outline:0}a:focus::after,a:hover::after,button.faux-link:focus::after,button.faux-link:hover::after{width:100%}a.tab-focus,button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}a.no-border::after,button.no-border.faux-link::after{display:none}li,ul{list-style:none;margin:0;padding:0}audio,img,video{max-width:100%;vertical-align:middle}nav{display:flex;justify-content:center;margin-bottom:20px}video{max-width:100%;vertical-align:middle}.plyr{border-radius:4px;box-shadow:0 2px 5px rgba(0,0,0,.2);margin:20px auto}.plyr.plyr--audio{max-width:480px}.plyr__video-wrapper::after{border:1px solid rgba(0,0,0,.15);border-radius:inherit;bottom:0;content:'';left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:4px}.plyr--audio~ul .plyr__cite--audio,.plyr--video:not(.plyr--youtube):not(.plyr--vimeo)~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block}@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-family:inherit;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui button.faux-link,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4f5b5f;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:12px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:13px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}a.plyr__control,button.plyr__control.faux-link{text-decoration:none}a.plyr__control::after,a.plyr__control::before,button.plyr__control.faux-link::after,button.plyr__control.faux-link::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr--video .plyr__control svg{filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr__control--overlaid{background:rgba(26,175,255,.8);border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15);color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#1aafff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls .plyr__volume,.plyr__controls>.plyr__control{margin-left:5px}.plyr__controls .plyr__menu+.plyr__control,.plyr__controls .plyr__progress+.plyr__control,.plyr__controls>.plyr__control+.plyr__control,.plyr__controls>.plyr__control+.plyr__menu{margin-left:2px}.plyr__controls>.plyr__control:first-child,.plyr__controls>.plyr__control:first-child+[data-plyr=pause]{margin-left:0;margin-right:auto}.plyr__controls:empty{display:none}@media (min-width:480px){.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls .plyr__volume,.plyr__controls>.plyr__control{margin-left:10px}}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4f5b5f;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__video-embed{height:0;padding-bottom:56.25%;position:relative}.plyr__video-embed iframe{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4f5b5f;font-size:13px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4f5b5f;display:flex;font-size:13px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(79,91,95,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(79,91,95,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#b7c5cd;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#1aafff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#1aafff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:11px}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4f5b5f;font-size:12px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__progress{flex:1;left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:11px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(183,197,205,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(47,52,61,.6) 25%,transparent 25%,transparent 50%,rgba(47,52,61,.6) 50%,rgba(47,52,61,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(183,197,205,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(47,52,61,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#b7c5cd;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:11px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;-o-object-fit:contain;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.no-border{border:0}[hidden]{display:none}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;opacity:.001;overflow:hidden;padding:0;position:absolute;width:1px} \ No newline at end of file +@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:300;src:url(https://cdn.plyr.io/static/fonts/gordita-light.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-light.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:400;src:url(https://cdn.plyr.io/static/fonts/gordita-regular.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-regular.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:500;src:url(https://cdn.plyr.io/static/fonts/gordita-medium.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-medium.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:600;src:url(https://cdn.plyr.io/static/fonts/gordita-bold.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-bold.woff) format("woff")}@font-face{font-display:swap;font-family:Gordita;font-style:normal;font-weight:900;src:url(https://cdn.plyr.io/static/fonts/gordita-black.woff2) format("woff2"),url(https://cdn.plyr.io/static/fonts/gordita-black.woff) format("woff")}@keyframes fadein{0%{opacity:0}100%{opacity:1}}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a,button.faux-link{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}body,html{display:flex;width:100%}html{background:linear-gradient(to left top,#4dc1ff,#0074b3);background-attachment:fixed;height:100%}body{align-items:center;display:flex;flex-direction:column;min-height:100%}.grid{flex:1;overflow:auto}main{margin:auto;padding-bottom:1px;text-align:center}aside{align-items:center;background:#fff;color:#55646b;display:flex;flex-shrink:0;justify-content:center;padding:15px;position:relative;text-align:center;text-shadow:none;width:100%}aside .icon{fill:#4baaf4;margin-right:10px}aside p{margin:0}aside a,aside button.faux-link{color:#4baaf4}aside a.tab-focus,aside button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(75,170,244,.35);outline:0}.grid{margin:0 auto;padding:20px}@media only screen and (min-width:768px){.grid{align-items:center;display:flex;max-width:1260px;width:100%}.grid>*{flex:1}}html{font-size:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:15px;font-size:.9375rem;color:#fff;font-family:Gordita,Avenir,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:500;line-height:1.75;text-shadow:0 1px 1px rgba(0,0,0,.15)}button,input,select,textarea{font:inherit}p,small{margin:0 0 20px}small{font-size:13px;font-size:.8125rem;display:block}h1{font-size:64px;font-size:4rem;font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 20px}.button,.button__count{align-items:center;background:#fff;border:0;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.1);color:#55646b;display:inline-flex;padding:15px;position:relative;text-shadow:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.button{font-weight:600;padding-left:20px;padding-right:20px;transition:all .2s ease}.button:focus,.button:hover{color:#343f4a}.button:focus::after,.button:hover::after{display:none}.button:hover{box-shadow:0 2px 2px rgba(0,0,0,.1);transform:translateY(-1px)}.button:focus{outline:0}.button.tab-focus{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}.button:active{transform:translateY(1px)}.button--with-count{display:inline-flex}.button--with-count .button .icon{flex-shrink:0}.button__count{animation:fadein .2s ease;margin-left:10px}.button__count::before{border:5px solid transparent;border-left-width:0;border-right-color:#fff;content:'';height:0;position:absolute;right:100%;top:50%;transform:translateY(-50%);width:0}header{padding-bottom:20px;text-align:center}header .call-to-action{margin-top:30px}@media only screen and (min-width:768px){header{margin-right:60px;max-width:360px;padding-bottom:40px;text-align:left}}.icon{fill:currentColor;height:16px;vertical-align:-3px;width:16px}a svg,button svg,button.faux-link svg,label svg{pointer-events:none}.btn .icon,a .icon,button.faux-link .icon{margin-right:6px}button.faux-link{background:0 0;border:0;border-radius:0;cursor:pointer;font:inherit;line-height:1.75;margin:0;padding:0;position:relative;text-align:inherit;text-shadow:inherit;-moz-user-select:text;vertical-align:baseline;width:auto}a,button.faux-link{border-bottom:1px dotted currentColor;color:#fff;font-weight:600;position:relative;text-decoration:none;transition:all .2s ease}a::after,button.faux-link::after{background:currentColor;content:'';height:1px;left:50%;position:absolute;top:100%;transform:translateX(-50%);transition:width .2s ease;width:0}a:focus,a:hover,button.faux-link:focus,button.faux-link:hover{border-bottom-color:transparent;outline:0}a:focus::after,a:hover::after,button.faux-link:focus::after,button.faux-link:hover::after{width:100%}a.tab-focus,button.tab-focus.faux-link{box-shadow:0 0 0 3px rgba(255,255,255,.35);outline:0}a.no-border::after,button.no-border.faux-link::after{display:none}li,ul{list-style:none;margin:0;padding:0}audio,img,video{max-width:100%;vertical-align:middle}nav{display:flex;justify-content:center;margin-bottom:20px}video{max-width:100%;vertical-align:middle}.plyr{border-radius:4px;box-shadow:0 2px 5px rgba(0,0,0,.2);margin:20px auto}.plyr.plyr--audio{max-width:480px}.plyr__video-wrapper::after{border:1px solid rgba(0,0,0,.15);border-radius:inherit;bottom:0;content:'';left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:4px}.plyr--audio~ul .plyr__cite--audio,.plyr--video:not(.plyr--youtube):not(.plyr--vimeo)~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block}@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-family:inherit;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui button.faux-link,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4f5b5f;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:12px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:13px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}a.plyr__control,button.plyr__control.faux-link{text-decoration:none}a.plyr__control::after,a.plyr__control::before,button.plyr__control.faux-link::after,button.plyr__control.faux-link::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr--video .plyr__control svg{filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr__control--overlaid{background:rgba(26,175,255,.8);border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15);color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#1aafff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls .plyr__volume,.plyr__controls>.plyr__control{margin-left:5px}.plyr__controls .plyr__menu+.plyr__control,.plyr__controls .plyr__progress+.plyr__control,.plyr__controls>.plyr__control+.plyr__control,.plyr__controls>.plyr__control+.plyr__menu{margin-left:2px}.plyr__controls>.plyr__control:first-child,.plyr__controls>.plyr__control:first-child+[data-plyr=pause]{margin-left:0;margin-right:auto}.plyr__controls:empty{display:none}@media (min-width:480px){.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls .plyr__volume,.plyr__controls>.plyr__control{margin-left:10px}}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4f5b5f;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4f5b5f;font-size:13px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4f5b5f;display:flex;font-size:13px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(79,91,95,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(79,91,95,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#b7c5cd;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#1aafff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#1aafff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(26,175,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(183,197,205,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(47,52,61,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:11px}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4f5b5f;font-size:12px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__progress{flex:1;left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:11px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(183,197,205,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(47,52,61,.6) 25%,transparent 25%,transparent 50%,rgba(47,52,61,.6) 50%,rgba(47,52,61,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(183,197,205,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;width:100%}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(47,52,61,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#b7c5cd;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:11px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;-o-object-fit:contain;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.no-border{border:0}[hidden]{display:none}.sr-only{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;opacity:.001;overflow:hidden;padding:0;position:absolute;width:1px} \ No newline at end of file diff --git a/demo/dist/demo.js b/demo/dist/demo.js index 4b8071b05..f83878b7f 100644 --- a/demo/dist/demo.js +++ b/demo/dist/demo.js @@ -1,7 +1,7 @@ typeof navigator === "object" && (function () { 'use strict'; - var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; @@ -4951,6 +4951,83 @@ typeof navigator === "object" && (function () { reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches }; + function validateRatio(input) { + if (!is$1.array(input) && (!is$1.string(input) || !input.includes(':'))) { + return false; + } + + var ratio = is$1.array(input) ? input : input.split(':'); + return ratio.map(Number).every(is$1.number); + } + function reduceAspectRatio(ratio) { + if (!is$1.array(ratio) || !ratio.every(is$1.number)) { + return null; + } + + var _ratio = _slicedToArray(ratio, 2), + width = _ratio[0], + height = _ratio[1]; + + var getDivider = function getDivider(w, h) { + return h === 0 ? w : getDivider(h, w % h); + }; + + var divider = getDivider(width, height); + return [width / divider, height / divider]; + } + function getAspectRatio(input) { + var parse = function parse(ratio) { + if (!validateRatio(ratio)) { + return null; + } + + return ratio.split(':').map(Number); + }; // Provided ratio + + + var ratio = parse(input); // Get from config + + if (ratio === null) { + ratio = parse(this.config.ratio); + } // Get from embed + + + if (ratio === null && !is$1.empty(this.embed) && is$1.string(this.embed.ratio)) { + ratio = parse(this.embed.ratio); + } + + return ratio; + } // Set aspect ratio for responsive container + + function setAspectRatio(input) { + if (!this.isVideo) { + return {}; + } + + var ratio = getAspectRatio.call(this, input); + + var _ref = is$1.array(ratio) ? ratio : [0, 0], + _ref2 = _slicedToArray(_ref, 2), + w = _ref2[0], + h = _ref2[1]; + + var padding = 100 / w * h; + this.elements.wrapper.style.paddingBottom = "".concat(padding, "%"); // For Vimeo we have an extra
to hide the standard controls and UI + + if (this.isVimeo && this.supported.ui) { + var height = 240; + var offset = (height - padding) / (height / 50); + this.media.style.transform = "translateY(-".concat(offset, "%)"); + } else if (this.isHTML5) { + this.elements.wrapper.classList.toggle(this.config.classNames.videoFixedRatio, ratio !== null); + } + + return { + padding: padding, + ratio: ratio + }; + } + // ========================================================================== var html5 = { getSources: function getSources() { @@ -4984,7 +5061,9 @@ typeof navigator === "object" && (function () { return; } - var player = this; // Quality + var player = this; // Set aspect ratio if set + + setAspectRatio.call(player); // Quality Object.defineProperty(player.media, 'quality', { get: function get() { @@ -7358,8 +7437,9 @@ typeof navigator === "object" && (function () { invertTime: true, // Clicking the currentTime inverts it's value to show time left rather than elapsed toggleInvert: true, - // Aspect ratio (for embeds) - ratio: '16:9', + // Force an aspect ratio + // The format must be `'w:h'` (e.g. `'16:9'`) + ratio: null, // Click video container to play/pause clickToPlay: true, // Auto hide the controls @@ -7371,7 +7451,7 @@ typeof navigator === "object" && (function () { // Sprite (for icons) loadSprite: true, iconPrefix: 'plyr', - iconUrl: 'https://cdn.plyr.io/3.5.2/plyr.svg', + iconUrl: 'https://cdn.plyr.io/3.5.3/plyr.svg', // Blank video (used to prevent errors on source change) blankVideo: 'https://cdn.plyr.io/static/blank.mp4', // Quality default @@ -7571,6 +7651,7 @@ typeof navigator === "object" && (function () { provider: 'plyr--{0}', video: 'plyr__video-wrapper', embed: 'plyr__video-embed', + videoFixedRatio: 'plyr__video-wrapper--fixed-ratio', embedContainer: 'plyr__video-embed__container', poster: 'plyr__poster', posterEnabled: 'plyr__poster-enabled', @@ -8247,44 +8328,6 @@ typeof navigator === "object" && (function () { } }; - /* function reduceAspectRatio(width, height) { - const getRatio = (w, h) => (h === 0 ? w : getRatio(h, w % h)); - const ratio = getRatio(width, height); - return `${width / ratio}:${height / ratio}`; - } */ - // Set aspect ratio for responsive container - - function setAspectRatio(input) { - var ratio = input; - - if (!is$1.string(ratio) && !is$1.nullOrUndefined(this.embed)) { - ratio = this.embed.ratio; - } - - if (!is$1.string(ratio)) { - ratio = this.config.ratio; - } - - var _ratio$split$map = ratio.split(':').map(Number), - _ratio$split$map2 = _slicedToArray(_ratio$split$map, 2), - x = _ratio$split$map2[0], - y = _ratio$split$map2[1]; - - var padding = 100 / x * y; - this.elements.wrapper.style.paddingBottom = "".concat(padding, "%"); // For Vimeo we have an extra
to hide the standard controls and UI - - if (this.isVimeo && this.supported.ui) { - var height = 240; - var offset = (height - padding) / (height / 50); - this.media.style.transform = "translateY(-".concat(offset, "%)"); - } - - return { - padding: padding, - ratio: ratio - }; - } - var Listeners = /*#__PURE__*/ function () { @@ -8537,6 +8580,8 @@ typeof navigator === "object" && (function () { }, { key: "container", value: function container() { + var _this = this; + var player = this.player; var config = player.config, elements = player.elements, @@ -8588,16 +8633,15 @@ typeof navigator === "object" && (function () { var target = player.elements.wrapper.firstChild; - var _ratio$split$map = ratio.split(':').map(Number), - _ratio$split$map2 = _slicedToArray(_ratio$split$map, 2), - height = _ratio$split$map2[1]; + var _ratio = _slicedToArray(ratio, 2), + y = _ratio[1]; - var _player$embed$ratio$s = player.embed.ratio.split(':').map(Number), - _player$embed$ratio$s2 = _slicedToArray(_player$embed$ratio$s, 2), - videoWidth = _player$embed$ratio$s2[0], - videoHeight = _player$embed$ratio$s2[1]; + var _getAspectRatio$call = getAspectRatio.call(_this), + _getAspectRatio$call2 = _slicedToArray(_getAspectRatio$call, 2), + videoX = _getAspectRatio$call2[0], + videoY = _getAspectRatio$call2[1]; - target.style.maxWidth = toggle ? "".concat(height / videoHeight * videoWidth, "px") : null; + target.style.maxWidth = toggle ? "".concat(y / videoY * videoX, "px") : null; target.style.margin = toggle ? '0 auto' : null; }; // Resize on fullscreen change @@ -8650,7 +8694,7 @@ typeof navigator === "object" && (function () { }, { key: "media", value: function media() { - var _this = this; + var _this2 = this; var player = this.player; var elements = player.elements; // Time change on media @@ -8715,11 +8759,11 @@ typeof navigator === "object" && (function () { } if (player.ended) { - _this.proxy(event, player.restart, 'restart'); + _this2.proxy(event, player.restart, 'restart'); - _this.proxy(event, player.play, 'play'); + _this2.proxy(event, player.play, 'play'); } else { - _this.proxy(event, player.togglePlay, 'play'); + _this2.proxy(event, player.togglePlay, 'play'); } }); } // Disable right click @@ -8794,21 +8838,21 @@ typeof navigator === "object" && (function () { }, { key: "bind", value: function bind(element, type, defaultHandler, customHandlerKey) { - var _this2 = this; + var _this3 = this; var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; var player = this.player; var customHandler = player.config.listeners[customHandlerKey]; var hasCustomHandler = is$1.function(customHandler); on.call(player, element, type, function (event) { - return _this2.proxy(event, defaultHandler, customHandlerKey); + return _this3.proxy(event, defaultHandler, customHandlerKey); }, passive && !hasCustomHandler); } // Listen for control events }, { key: "controls", value: function controls$1() { - var _this3 = this; + var _this4 = this; var player = this.player; var elements = player.elements; // IE doesn't support input event, so we fallback to change @@ -8817,7 +8861,7 @@ typeof navigator === "object" && (function () { if (elements.buttons.play) { Array.from(elements.buttons.play).forEach(function (button) { - _this3.bind(button, 'click', player.togglePlay, 'play'); + _this4.bind(button, 'click', player.togglePlay, 'play'); }); } // Pause @@ -8924,7 +8968,7 @@ typeof navigator === "object" && (function () { if (browser.isIos) { var inputs = getElements.call(player, 'input[type="range"]'); Array.from(inputs).forEach(function (input) { - return _this3.bind(input, inputEvent, function (event) { + return _this4.bind(input, inputEvent, function (event) { return repaint(event.target); }); }); @@ -8982,7 +9026,7 @@ typeof navigator === "object" && (function () { if (browser.isWebkit) { Array.from(getElements.call(player, 'input[type="range"]')).forEach(function (element) { - _this3.bind(element, 'input', function (event) { + _this4.bind(element, 'input', function (event) { return controls.updateRangeFill.call(player, event.target); }); }); @@ -9029,7 +9073,7 @@ typeof navigator === "object" && (function () { toggleClass(elements.controls, config.classNames.noTransition, false); }, 0); // Delay a little more for mouse users - var delay = _this3.touch ? 3000 : 4000; // Clear timer + var delay = _this4.touch ? 3000 : 4000; // Clear timer clearTimeout(timers.controls); // Hide again after delay @@ -9269,9 +9313,11 @@ typeof navigator === "object" && (function () { /** * Initiate script load and register bundle. * @param {(string|string[])} paths - The file paths - * @param {(string|Function)} [arg1] - The bundleId or success callback - * @param {Function} [arg2] - The success or error callback - * @param {Function} [arg3] - The error callback + * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success + * callback or (3) object literal with success/error arguments, numRetries, + * etc. + * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object + * literal with success/error arguments, numRetries, etc. */ @@ -9607,7 +9653,7 @@ typeof navigator === "object" && (function () { height = _dimensions[1]; player.embed.ratio = "".concat(width, ":").concat(height); - setAspectRatio.call(_this2, player.embed.ratio); + setAspectRatio.call(_this2); }); // Set autopause player.embed.setAutopause(player.config.autopause).then(function (state) { @@ -9729,6 +9775,19 @@ typeof navigator === "object" && (function () { } } + function getHost(config) { + if (config.noCookie) { + return 'https://www.youtube-nocookie.com'; + } + + if (window.location.protocol === 'http:') { + return 'http://www.youtube.com'; + } // Use YouTube's default + + + return undefined; + } + var youtube = { setup: function setup() { var _this = this; @@ -9821,7 +9880,7 @@ typeof navigator === "object" && (function () { player.media = replaceElement(container, player.media); // Id to poster wrapper var posterSrc = function posterSrc(format) { - return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg"); + return "https://i.ytimg.com/vi/".concat(videoId, "/").concat(format, "default.jpg"); }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) @@ -9845,7 +9904,7 @@ typeof navigator === "object" && (function () { player.embed = new window.YT.Player(id, { videoId: videoId, - host: config.noCookie ? 'https://www.youtube-nocookie.com' : undefined, + host: getHost(config), playerVars: extend({}, { autoplay: player.config.autoplay ? 1 : 0, // Autoplay @@ -10060,7 +10119,7 @@ typeof navigator === "object" && (function () { case 1: // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet) - if (player.media.paused && !player.embed.hasPlayed) { + if (!player.config.autoplay && player.media.paused && !player.embed.hasPlayed) { player.media.pause(); } else { assurePlaybackState$1.call(player, true); @@ -10782,11 +10841,11 @@ typeof navigator === "object" && (function () { lines.forEach(function (line) { if (!is$1.number(result.startTime)) { // The line with start and end times on it is the first line of interest - var matchTimes = line.match(/([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{2,3})/); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT + var matchTimes = line.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/); // Note that this currently ignores caption formatting directives that are optionally on the end of this line - fine for non-captions VTT if (matchTimes) { - result.startTime = Number(matchTimes[1]) * 60 * 60 + Number(matchTimes[2]) * 60 + Number(matchTimes[3]) + Number("0.".concat(matchTimes[4])); - result.endTime = Number(matchTimes[6]) * 60 * 60 + Number(matchTimes[7]) * 60 + Number(matchTimes[8]) + Number("0.".concat(matchTimes[9])); + result.startTime = Number(matchTimes[1] || 0) * 60 * 60 + Number(matchTimes[2]) * 60 + Number(matchTimes[3]) + Number("0.".concat(matchTimes[4])); + result.endTime = Number(matchTimes[6] || 0) * 60 * 60 + Number(matchTimes[7]) * 60 + Number(matchTimes[8]) + Number("0.".concat(matchTimes[9])); } } else if (!is$1.empty(line.trim()) && is$1.empty(result.text)) { // If we already have the startTime, then we're definitely up to the text line(s) @@ -10921,8 +10980,9 @@ typeof navigator === "object" && (function () { urlPrefix: '' }; // If the URLs don't start with '/', then we need to set their relative path to be the location of the VTT file // If the URLs do start with '/', then they obviously don't need a prefix, so it will remain blank + // If the thumbnail URLs start with with none of '/', 'http://' or 'https://', then we need to set their relative path to be the location of the VTT file - if (!thumbnail.frames[0].text.startsWith('/')) { + if (!thumbnail.frames[0].text.startsWith('/') && !thumbnail.frames[0].text.startsWith('http://') && !thumbnail.frames[0].text.startsWith('https://')) { thumbnail.urlPrefix = url.substring(0, url.lastIndexOf('/') + 1); } // Download the first frame, so that we can determine/set the height of this thumbnailsDef @@ -11826,8 +11886,10 @@ typeof navigator === "object" && (function () { } // Autoplay if required - if (this.config.autoplay) { - this.play(); + if (this.isHTML5 && this.config.autoplay) { + setTimeout(function () { + return _this.play(); + }, 10); } // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek @@ -12137,12 +12199,14 @@ typeof navigator === "object" && (function () { }; // Stop playback - this.stop(); // Provider specific stuff + this.stop(); // Clear timeouts - if (this.isHTML5) { - // Clear timeout - clearTimeout(this.timers.loading); // Restore native video controls + clearTimeout(this.timers.loading); + clearTimeout(this.timers.controls); + clearTimeout(this.timers.resized); // Provider specific stuff + if (this.isHTML5) { + // Restore native video controls ui.toggleNativeControls.call(this, true); // Clean up done(); @@ -12615,6 +12679,34 @@ typeof navigator === "object" && (function () { return this.media.getAttribute('poster'); } + /** + * Get the current aspect ratio in use + */ + + }, { + key: "ratio", + get: function get() { + var ratio = reduceAspectRatio(getAspectRatio.call(this)); + return is$1.array(ratio) ? ratio.join(':') : ratio; + } + /** + * Set video aspect ratio + */ + , + set: function set(input) { + if (!this.isVideo) { + this.debug.warn('Aspect ratio can only be set for video'); + return; + } + + if (!is$1.string(input) || !validateRatio(input)) { + this.debug.error("Invalid aspect ratio specified (".concat(input, ")")); + return; + } + + this.config.ratio = input; + setAspectRatio.call(this); + } /** * Set the autoplay state * @param {Boolean} input - Whether to autoplay or not diff --git a/demo/dist/demo.min.js b/demo/dist/demo.min.js index 07203bc46..92bb2fe44 100644 --- a/demo/dist/demo.min.js +++ b/demo/dist/demo.min.js @@ -1,2 +1,2 @@ -"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n0){var o=n(i,this);~o?i.splice(o+1):i.push(this),~o?r.splice(o,1/0,a):r.push(a),~n(i,s)&&(s=t.call(this,a,s))}else i.push(s);return null==e?s instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}(s):s:e.call(this,a,s)}}(e.exports=function(e,t,n,r){return JSON.stringify(e,i(t,r),n)}).getSerialize=i}),u=(c.getSerialize,"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{});function d(e){return void 0===e}function h(e){return"[object Object]"===Object.prototype.toString.call(e)}function p(e){return"[object String]"===Object.prototype.toString.call(e)}function m(e){return"[object Array]"===Object.prototype.toString.call(e)}function f(){if(!("fetch"in u))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function g(e,t){var n,i;if(d(e.length))for(n in e)v(e,n)&&t.call(null,n,e[n]);else if(i=e.length)for(n=0;n ".length;e&&i++<5&&!("html"===(t=k(e))||i>1&&r+n.length*a+t.length>=80);)n.push(t),r+=t.length,e=e.parentNode;return n.reverse().join(" > ")},htmlElementAsString:k,isSameException:function(e,t){return!w(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&(n=e.stacktrace,i=t.stacktrace,(!d(n)||!d(i))&&_(e.stacktrace,t.stacktrace)));var n,i},isSameStacktrace:_,parseUrl:function(e){if("string"!=typeof e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),n=t[6]||"",i=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+n+i}},fill:function(e,t,n,i){if(null!=e){var r=e[t];e[t]=n(r),e[t].__raven__=!0,e[t].__orig__=r,i&&i.push([e,t,r])}},safeJoin:function(e,t){if(!m(e))return"";for(var n=[],i=0;ii?e(t,n-1):r},serializeKeysForMessage:function(e,t){if("number"==typeof e||"string"==typeof e)return e.toString();if(!Array.isArray(e))return"";if(0===(e=e.filter(function(e){return"string"==typeof e})).length)return"[object has no keys]";if(t="number"!=typeof t?S:t,e[0].length>=t)return e[0];for(var n=e.length;n>0;n--){var i=e.slice(0,n).join(", ");if(!(i.length>t))return n===e.length?i:i+"…"}return""},sanitize:function(e,t){if(!m(t)||m(t)&&0===t.length)return e;var n,i=b(t),r="********";try{n=JSON.parse(c(e))}catch(t){return e}return function e(t){return m(t)?t.map(function(t){return e(t)}):h(t)?Object.keys(t).reduce(function(n,a){return i.test(a)?n[a]=r:n[a]=e(t[a]),n},{}):t}(n)}},P={collectWindowErrors:!0,debug:!1},O="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},M=[].slice,N="?",L=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function I(){return"undefined"==typeof document||null==document.location?"":document.location.href}P.report=function(){var e,t,n=[],i=null,r=null,a=null;function s(e,t){var i=null;if(!t||P.collectWindowErrors){for(var r in n)if(n.hasOwnProperty(r))try{n[r].apply(null,[e].concat(M.call(arguments,2)))}catch(e){i=e}if(i)throw i}}function o(t,n,i,r,o){var c=A.isErrorEvent(o)?o.error:o,u=A.isErrorEvent(t)?t.message:t;if(a)P.computeStackTrace.augmentStackTraceWithInitialElement(a,n,i,u),l();else if(c&&A.isError(c))s(P.computeStackTrace(c),!0);else{var d,h={url:n,line:i,column:r},p=void 0;if("[object String]"==={}.toString.call(u))(d=u.match(L))&&(p=d[1],u=d[2]);h.func=N,s({name:p,message:u,url:I(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function l(){var e=a,t=i;i=null,a=null,r=null,s.apply(null,[e,!1].concat(t))}function c(e,t){var n=M.call(arguments,1);if(a){if(r===e)return;l()}var s=P.computeStackTrace(e);if(a=s,r=e,i=n,setTimeout(function(){r===e&&l()},s.incomplete?2e3:0),!1!==t)throw e}return c.subscribe=function(i){t||(e=O.onerror,O.onerror=o,t=!0),n.push(i)},c.unsubscribe=function(e){for(var t=n.length-1;t>=0;--t)n[t]===e&&n.splice(t,1)},c.uninstall=function(){t&&(O.onerror=e,t=!1,e=void 0),n=[]},c}(),P.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,n,i,r=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,o=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,c=e.stack.split("\n"),u=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=c.length;d eval")>-1&&(t=o.exec(n[3]))?(n[3]=t[1],n[4]=t[2],n[5]=null):0!==d||n[5]||void 0===e.columnNumber||(u[0].column=e.columnNumber+1),i={url:n[3],func:n[1]||N,args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}if(!i.func&&i.line&&(i.func=N),i.url&&"blob:"===i.url.substr(0,5)){var m=new XMLHttpRequest;if(m.open("GET",i.url,!1),m.send(null),200===m.status){var f=m.responseText||"",g=(f=f.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(g){var y=g[1];"~"===y.charAt(0)&&(y=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+y.slice(1)),i.url=y.slice(0,-4)}}}u.push(i)}return u.length?{name:e.name,message:e.message,url:I(),stack:u}:null}}function t(e,t,n,i){var r={url:t,line:n};if(r.url&&r.line){if(e.incomplete=!1,r.func||(r.func=N),e.stack.length>0&&e.stack[0].url===r.url){if(e.stack[0].line===r.line)return!1;if(!e.stack[0].line&&e.stack[0].func===r.func)return e.stack[0].line=r.line,!1}return e.stack.unshift(r),e.partial=!0,!0}return e.incomplete=!0,!1}function n(e,r){for(var a,s,o=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],c={},u=!1,d=n.caller;d&&!u;d=d.caller)if(d!==i&&d!==P.report){if(s={url:null,func:N,line:null,column:null},d.name?s.func=d.name:(a=o.exec(d.toString()))&&(s.func=a[1]),void 0===s.func)try{s.func=a.input.substring(0,a.input.indexOf("{"))}catch(e){}c[""+d]?u=!0:c[""+d]=!0,l.push(s)}r&&l.splice(0,r);var h={name:e.name,message:e.message,url:I(),stack:l};return t(h,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),h}function i(t,i){var r=null;i=null==i?0:+i;try{if(r=e(t))return r}catch(e){if(P.debug)throw e}try{if(r=n(t,i+1))return r}catch(e){if(P.debug)throw e}return{name:t.name,message:t.message,url:I()}}return i.augmentStackTraceWithInitialElement=t,i.computeStackTraceFromStackProp=e,i}();var j=P;function R(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function D(e,t,n,i,r,a){return R((s=R(R(t,e),R(i,a)))<<(o=r)|s>>>32-o,n);var s,o}function F(e,t,n,i,r,a,s){return D(t&n|~t&i,e,t,r,a,s)}function B(e,t,n,i,r,a,s){return D(t&i|n&~i,e,t,r,a,s)}function H(e,t,n,i,r,a,s){return D(t^n^i,e,t,r,a,s)}function q(e,t,n,i,r,a,s){return D(n^(t|~i),e,t,r,a,s)}function U(e,t){var n,i,r,a,s;e[t>>5]|=128<>>9<<4)]=t;var o=1732584193,l=-271733879,c=-1732584194,u=271733878;for(n=0;n>5]>>>t%32&255);return n}function z(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return i}function K(e){return unescape(encodeURIComponent(e))}function X(e){return function(e){return V(U(z(e),8*e.length))}(K(e))}function J(e,t){return function(e,t){var n,i,r=z(e),a=[],s=[];for(a[15]=s[15]=void 0,r.length>16&&(r=U(r,8*e.length)),n=0;n<16;n+=1)a[n]=909522486^r[n],s[n]=1549556828^r[n];return i=U(a.concat(z(t)),512+8*t.length),V(U(s.concat(i),640))}(K(e),K(t))}var Y=function(e,t,n){return t?n?J(t,e):W(J(t,e)):n?X(e):W(X(e))};function $(e){this.name="RavenConfigError",this.message=e}$.prototype=new Error,$.prototype.constructor=$;var G=$,Q=function(e,t,n){var i=e[t],r=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),s=A.safeJoin(e," "),o={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(s="Assertion failed: "+(A.safeJoin(e.slice(1)," ")||"console.assert"),o.extra.arguments=e.slice(1),n&&n(s,o)):n&&n(s,o),i&&Function.prototype.apply.call(i,r,e)}}},Z=A.isErrorEvent,ee=A.isDOMError,te=A.isDOMException,ne=A.isError,ie=A.isObject,re=A.isPlainObject,ae=A.isUndefined,se=A.isFunction,oe=A.isString,le=A.isArray,ce=A.isEmptyObject,ue=A.each,de=A.objectMerge,he=A.truncate,pe=A.objectFrozen,me=A.hasKey,fe=A.joinRegExp,ge=A.urlencode,ye=A.uuid4,ve=A.htmlTreeAsString,be=A.isSameException,ke=A.isSameStacktrace,we=A.parseUrl,_e=A.fill,Te=A.supportsFetch,Ee=A.supportsReferrerPolicy,Se=A.serializeKeysForMessage,Ce=A.serializeException,xe=A.sanitize,Ae=Q,Pe="source protocol user pass host port path".split(" "),Oe=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function Me(){return+new Date}var Ne="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},Le=Ne.document,Ie=Ne.navigator;function je(e,t){return se(t)?function(n){return t(n,e)}:t}function Re(){for(var e in this._hasJSON=!("object"!==("undefined"==typeof JSON?"undefined":n(JSON))||!JSON.stringify),this._hasDocument=!ae(Le),this._hasNavigator=!ae(Ie),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:Ne.SENTRY_RELEASE&&Ne.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:"POST",referrerPolicy:Ee()?"origin":""},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=Ne.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=Me(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=Ne.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}Re.prototype={VERSION:"3.27.0",debug:!1,TraceKit:j,config:function(e,t){var n=this;if(n._globalServer)return this._logDebug("error","Error: Raven has already been configured"),n;if(!e)return n;var i=n._globalOptions;t&&ue(t,function(e,t){"tags"===e||"extra"===e||"user"===e?n._globalContext[e]=t:i[e]=t}),n.setDSN(e),i.ignoreErrors.push(/^Script error\.?$/),i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),i.ignoreErrors=fe(i.ignoreErrors),i.ignoreUrls=!!i.ignoreUrls.length&&fe(i.ignoreUrls),i.whitelistUrls=!!i.whitelistUrls.length&&fe(i.whitelistUrls),i.includePaths=fe(i.includePaths),i.maxBreadcrumbs=Math.max(0,Math.min(i.maxBreadcrumbs||100,100));var r={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},a=i.autoBreadcrumbs;"[object Object]"==={}.toString.call(a)?a=de(r,a):!1!==a&&(a=r),i.autoBreadcrumbs=a;var s={tryCatch:!0},o=i.instrument;return"[object Object]"==={}.toString.call(o)?o=de(s,o):!1!==o&&(o=s),i.instrument=o,j.collectWindowErrors=!!i.collectWindowErrors,n},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(j.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.captureUnhandledRejections&&e._attachPromiseRejectionHandler(),e._patchFunctionToString(),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),n=t.path.lastIndexOf("/"),i=t.path.substr(1,n);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(n+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+i+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,n){return se(e)&&(n=t||[],t=e,e={}),this.wrap(e,t).apply(this,n)},wrap:function(e,t,n){var i=this;if(ae(t)&&!se(e))return e;if(se(e)&&(t=e,e=void 0),!se(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function r(){var r=[],a=arguments.length,s=!e||e&&!1!==e.deep;for(n&&se(n)&&n.apply(this,arguments);a--;)r[a]=s?i.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,r)}catch(t){throw i._ignoreNextOnError(),i.captureException(t,e),t}}for(var a in t)me(t,a)&&(r[a]=t[a]);return r.prototype=t.prototype,t.__raven_wrapper__=r,r.__raven__=!0,r.__orig__=t,r},uninstall:function(){return j.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(e){this._logDebug("debug","Raven caught unhandled promise rejection:",e),this.captureException(e.reason,{mechanism:{type:"onunhandledrejection",handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),Ne.addEventListener&&Ne.addEventListener("unhandledrejection",this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return Ne.removeEventListener&&Ne.removeEventListener("unhandledrejection",this._promiseRejectionHandler),this},captureException:function(e,t){if(t=de({trimHeadFrames:0},t||{}),Z(e)&&e.error)e=e.error;else{if(ee(e)||te(e)){var n=e.name||(ee(e)?"DOMError":"DOMException"),i=e.message?n+": "+e.message:n;return this.captureMessage(i,de(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}))}if(ne(e))e=e;else{if(!re(e))return this.captureMessage(e,de(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}));t=this._getCaptureExceptionOptionsFromPlainObject(t,e),e=new Error(t.message)}}this._lastCapturedException=e;try{var r=j.computeStackTrace(e);this._handleStackInfo(r,t)}catch(t){if(e!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(e,t){var n=Object.keys(t).sort(),i=de(e,{message:"Non-Error exception captured with keys: "+Se(n),fingerprint:[Y(n)],extra:e.extra||{}});return i.extra.__serialized__=Ce(t),i},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var n,i=de({message:e+=""},t=t||{});try{throw new Error(e)}catch(e){n=e}n.name=null;var r=j.computeStackTrace(n),a=le(r.stack)&&r.stack[1];a&&"Raven.captureException"===a.func&&(a=r.stack[2]);var s=a&&a.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(s))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(s))){if(this._globalOptions.stacktrace||t.stacktrace||""===i.message){i.fingerprint=null==i.fingerprint?e:i.fingerprint,(t=de({trimHeadFrames:0},t)).trimHeadFrames+=1;var o=this._prepareFrames(r,t);i.stacktrace={frames:o.reverse()}}return i.fingerprint&&(i.fingerprint=le(i.fingerprint)?i.fingerprint:[i.fingerprint]),this._send(i),this}}},captureBreadcrumb:function(e){var t=de({timestamp:Me()/1e3},e);if(se(this._globalOptions.breadcrumbCallback)){var n=this._globalOptions.breadcrumbCallback(t);if(ie(n)&&!ce(n))t=n;else if(!1===n)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(c(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=je(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=je(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=je(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=Ne.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(Le){if(!(e=de({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},e)).eventId)throw new G("Missing eventId");if(!e.dsn)throw new G("Missing DSN");var t=encodeURIComponent,n=[];for(var i in e)if("user"===i){var r=e.user;r.name&&n.push("name="+t(r.name)),r.email&&n.push("email="+t(r.email))}else n.push(t(i)+"="+t(e[i]));var a=this._getGlobalServer(this._parseDSN(e.dsn)),s=Le.createElement("script");s.async=!0,s.src=a+"/api/embed/error-page/?"+n.join("&"),(Le.head||Le.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var n,i;if(this._hasDocument){for(i in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),Le.createEvent?(n=Le.createEvent("HTMLEvents")).initEvent(e,!0,!0):(n=Le.createEventObject()).eventType=e,t)me(t,i)&&(n[i]=t[i]);if(Le.createEvent)Le.dispatchEvent(n);else try{Le.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(n){if(t._keypressTimeout=null,t._lastCapturedEvent!==n){var i;t._lastCapturedEvent=n;try{i=ve(n.target)}catch(e){i=""}t.captureBreadcrumb({category:"ui."+e,message:i})}}},_keypressEventHandler:function(){var e=this;return function(t){var n;try{n=t.target}catch(e){return}var i=n&&n.tagName;if(i&&("INPUT"===i||"TEXTAREA"===i||n.isContentEditable)){var r=e._keypressTimeout;r||e._breadcrumbEventHandler("input")(t),clearTimeout(r),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var n=we(this._location.href),i=we(t),r=we(e);this._lastHref=t,n.protocol===i.protocol&&n.host===i.host&&(t=i.relative),n.protocol===r.protocol&&n.host===r.host&&(e=r.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_patchFunctionToString:function(){var e=this;e._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.__raven__?e._originalFunctionToString.apply(this.__orig__,arguments):e._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function n(t){return function(n,i){for(var r=new Array(arguments.length),a=0;a"}}},s)),t.apply?t.apply(this,r):t(r[0],r[1])}}var i=this._globalOptions.autoBreadcrumbs;function r(n){var r=Ne[n]&&Ne[n].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty("addEventListener")&&(_e(r,"addEventListener",function(t){return function(r,a,s,o){try{a&&a.handleEvent&&(a.handleEvent=e.wrap({mechanism:{type:"instrument",data:{target:n,function:"handleEvent",handler:a&&a.name||""}}},a.handleEvent))}catch(e){}var l,c,u;return i&&i.dom&&("EventTarget"===n||"Node"===n)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),l=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,r,e.wrap({mechanism:{type:"instrument",data:{target:n,function:"addEventListener",handler:a&&a.name||""}}},a,l),s,o)}},t),_e(r,"removeEventListener",function(e){return function(t,n,i,r){try{n=n&&(n.__raven_wrapper__?n.__raven_wrapper__:n)}catch(e){}return e.call(this,t,n,i,r)}},t))}_e(Ne,"setTimeout",n,t),_e(Ne,"setInterval",n,t),Ne.requestAnimationFrame&&_e(Ne,"requestAnimationFrame",function(t){return function(n){return t(e.wrap({mechanism:{type:"instrument",data:{function:"requestAnimationFrame",handler:t&&t.name||""}}},n))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],s=0;s"}}},n)})}if(t.xhr&&"XMLHttpRequest"in Ne){var r=Ne.XMLHttpRequest&&Ne.XMLHttpRequest.prototype;_e(r,"open",function(t){return function(n,i){return oe(i)&&-1===i.indexOf(e._globalKey)&&(this.__raven_xhr={method:n,url:i,status_code:null}),t.apply(this,arguments)}},n),_e(r,"send",function(t){return function(){var n=this;function r(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var a=["onload","onerror","onprogress"],s=0;s"}}},t,r)}):n.onreadystatechange=r,t.apply(this,arguments)}},n)}t.xhr&&Te()&&_e(Ne,"fetch",function(t){return function(){for(var n=new Array(arguments.length),i=0;i2?arguments[2]:void 0;return n&&e._captureUrlChange(e._lastHref,n+""),t.apply(this,arguments)}};_e(Ne.history,"pushState",l,n),_e(Ne.history,"replaceState",l,n)}if(t.console&&"console"in Ne&&console.log){var c=function(t,n){e.captureBreadcrumb({message:t,level:n.level,category:"console"})};ue(["debug","info","warn","error","log"],function(e,t){Ae(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],n=e[1],i=e[2];t[n]=i}},_restoreConsole:function(){for(var e in this._originalConsoleMethods)this._originalConsole[e]=this._originalConsoleMethods[e]},_drainPlugins:function(){var e=this;ue(this._plugins,function(t,n){var i=n[0],r=n[1];i.apply(e,[e].concat(r))})},_parseDSN:function(e){var t=Oe.exec(e),n={},i=7;try{for(;i--;)n[Pe[i]]=t[i]||""}catch(t){throw new G("Invalid DSN: "+e)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new G("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(e,t){(t=t||{}).mechanism=t.mechanism||{type:"onerror",handled:!1},this._ignoreOnError||this._handleStackInfo(e,t)},_handleStackInfo:function(e,t){var n=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,n,t)},_prepareFrames:function(e,t){var n=this,i=[];if(e.stack&&e.stack.length&&(ue(e.stack,function(t,r){var a=n._normalizeFrame(r,e.url);a&&i.push(a)}),t&&t.trimHeadFrames))for(var r=0;r0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),e=this._sanitizeData(e),Object.keys(e).forEach(function(t){(null==e[t]||""===e[t]||ce(e[t]))&&delete e[t]}),se(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!ce(e)&&(se(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()100&&(n=100),n<50?n-=(100-2*n)*u:n>50&&(n+=2*(n-50)*u),a+Qe(l*(n/100),o)}},{key:"set",value:function(t){e.enabled&&Ge.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t);e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;if(Ge.empty(t)||Ge.string(t)?i=Array.from(document.querySelectorAll(Ge.string(t)?t:'input[type="range"]')):Ge.element(t)?i=[t]:Ge.nodeList(t)?i=Array.from(t):Ge.array(t)&&(i=t.filter(Ge.element)),Ge.empty(i))return null;var r=Object.assign({},Ve,n);Ge.string(t)&&r.watch&&new MutationObserver(function(n){Array.from(n).forEach(function(n){Array.from(n.addedNodes).forEach(function(n){if(Ge.element(n)&&function(){return Array.from(document.querySelectorAll(i)).includes(this)}.call(n,i=t)){var i;new e(n,r)}})})}).observe(document.body,{childList:!0,subtree:!0});return i.map(function(t){return new e(t,n)})}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),et=function(e){return null!=e?e.constructor:null},tt=function(e,t){return Boolean(e&&t&&e instanceof t)},nt=function(e){return null==e},it=function(e){return et(e)===Object},rt=function(e){return et(e)===String},at=function(e){return Array.isArray(e)},st=function(e){return tt(e,NodeList)},ot=function(e){return nt(e)||(rt(e)||at(e)||st(e))&&!e.length||it(e)&&!Object.keys(e).length},lt={nullOrUndefined:nt,object:it,number:function(e){return et(e)===Number&&!Number.isNaN(e)},string:rt,boolean:function(e){return et(e)===Boolean},function:function(e){return et(e)===Function},array:at,weakMap:function(e){return tt(e,WeakMap)},nodeList:st,element:function(e){return tt(e,Element)},textNode:function(e){return et(e)===Text},event:function(e){return tt(e,Event)},keyboardEvent:function(e){return tt(e,KeyboardEvent)},cue:function(e){return tt(e,window.TextTrackCue)||tt(e,window.VTTCue)},track:function(e){return tt(e,TextTrack)||!nt(e)&&rt(e.kind)},promise:function(e){return tt(e,Promise)},url:function(e){if(tt(e,window.URL))return!0;if(!rt(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!ot(new URL(t).hostname)}catch(e){return!1}},empty:ot},ct=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function ut(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!lt.empty(t)&<.function(n)){var o=t.split(" "),l=s;ct&&(l={passive:a,capture:s}),o.forEach(function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)})}}function dt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,t,n,!0,i,r)}function ht(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,t,n,!1,i,r)}function pt(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,n,function s(){ht(e,n,s,r,a);for(var o=arguments.length,l=new Array(o),c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(lt.element(e)&&!lt.empty(t)){var r=new CustomEvent(t,{bubbles:n,detail:Object.assign({},i,{plyr:this})});e.dispatchEvent(r)}}function ft(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)})}function gt(e,t){lt.element(e)&&!lt.empty(t)&&Object.entries(t).filter(function(e){var t=o(e,2)[1];return!lt.nullOrUndefined(t)}).forEach(function(t){var n=o(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)})}function yt(e,t,n){var i=document.createElement(e);return lt.object(t)&>(i,t),lt.string(n)&&(i.innerText=n),i}function vt(e,t,n,i){lt.element(t)&&t.appendChild(yt(e,n,i))}function bt(e){lt.nodeList(e)||lt.array(e)?Array.from(e).forEach(bt):lt.element(e)&<.element(e.parentNode)&&e.parentNode.removeChild(e)}function kt(e){if(lt.element(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function wt(e,t){return lt.element(t)&<.element(t.parentNode)&<.element(e)?(t.parentNode.replaceChild(e,t),e):null}function _t(e,t){if(!lt.string(e)||lt.empty(e))return{};var n={},i=t;return e.split(",").forEach(function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),s=a[0],o=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":lt.object(i)&<.string(i.class)&&(i.class+=" ".concat(r)),n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[s]=o}}),n}function Tt(e,t){if(lt.element(e)){var n=t;lt.boolean(n)||(n=!e.hidden),n?e.setAttribute("hidden",""):e.removeAttribute("hidden")}}function Et(e,t,n){if(lt.nodeList(e))return Array.from(e).map(function(e){return Et(e,t,n)});if(lt.element(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function St(e,t){return lt.element(e)&&e.classList.contains(t)}function Ct(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function xt(e){return this.elements.container.querySelectorAll(e)}function At(e){return this.elements.container.querySelector(e)}function Pt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];lt.element(e)&&(e.focus({preventScroll:!0}),t&&Et(e,this.config.classNames.tabFocus))}var Ot,Mt,Nt,Lt=(Ot=document.createElement("span"),Mt={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Nt=Object.keys(Mt).find(function(e){return void 0!==Ot.style[e]}),!!lt.string(Nt)&&Mt[Nt]);function It(e){setTimeout(function(){try{Tt(e,!0),e.offsetHeight,Tt(e,!1)}catch(e){}},0)}var jt,Rt={isIE:!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},Dt={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},Ft={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=Rt.isIPhone&&n&&Ft.playsinline,r=Ft[e]||"html5"!==t;return{api:r,ui:r&&Ft.rangeInput&&("video"!==e||!Rt.isIPhone||i)}},pip:!(Rt.isIPhone||!lt.function(yt("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||yt("video").disablePictureInPicture)),airplay:lt.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(lt.empty(e))return!1;var t=o(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Dt).includes(n)&&(n+='; codecs="'.concat(Dt[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(jt=document.createElement("input"),jt.type="range","range"===jt.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==Lt,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Bt={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter(function(t){var n=t.getAttribute("type");return!!lt.empty(n)||Ft.mime.call(e,n)}):[]},getQualityOptions:function(){return Bt.getSources.call(this).map(function(e){return Number(e.getAttribute("size"))}).filter(Boolean)},extend:function(){if(this.isHTML5){var e=this;Object.defineProperty(e.media,"quality",{get:function(){var t=Bt.getSources.call(e).find(function(t){return t.getAttribute("src")===e.source});return t&&Number(t.getAttribute("size"))},set:function(t){var n=Bt.getSources.call(e).find(function(e){return Number(e.getAttribute("size"))===t});if(n){var i=e.media,r=i.currentTime,a=i.paused,s=i.preload,o=i.readyState;e.media.src=n.getAttribute("src"),("none"!==s||o)&&(e.once("loadedmetadata",function(){e.currentTime=r,a||e.play()}),e.media.load()),mt.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(bt(Bt.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function Ht(e){return lt.array(e)?e.filter(function(t,n){return e.indexOf(t)===n}):e}function qt(e,t){return t.split(".").reduce(function(e,t){return e&&e[t]},e)}function Ut(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1"),"g"),n.toString())}function Wt(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}function Kt(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return(e=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return e=zt(e,"-"," "),e=zt(e,"_"," "),zt(e=Wt(e)," ","")}(e)).charAt(0).toLowerCase()+e.slice(1)}function Xt(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var Jt={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Yt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(lt.empty(e)||lt.empty(t))return"";var n=qt(t.i18n,e);if(lt.empty(n))return Object.keys(Jt).includes(e)?Jt[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach(function(e){var t=o(e,2),i=t[0],r=t[1];n=zt(n,i,r)}),n},$t=function(){function e(t){i(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return a(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(lt.empty(n))return null;var i=JSON.parse(n);return lt.string(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&<.object(t)){var n=this.get();lt.empty(n)&&(n={}),Ut(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Gt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise(function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)}),r.addEventListener("error",function(){throw new Error(r.status)}),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}})}function Qt(e,t){if(lt.string(e)){var n=lt.string(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=$t.supported,s=document.createElement("div");if(s.setAttribute("hidden",""),n&&s.setAttribute("id",t),a){var o=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==o){var l=JSON.parse(o);r(s,l.content)}}Gt(e).then(function(e){lt.empty(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(s,e))}).catch(function(){})}}}var Zt=function(e){return Math.trunc(e/60/60%60,10)},en=function(e){return Math.trunc(e/60%60,10)},tn=function(e){return Math.trunc(e%60,10)};function nn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!lt.number(e))return nn(null,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Zt(e),a=en(e),s=tn(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(s))}var rn={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||Rt.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=At.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:xt.call(this,this.config.selectors.buttons.play),pause:At.call(this,this.config.selectors.buttons.pause),restart:At.call(this,this.config.selectors.buttons.restart),rewind:At.call(this,this.config.selectors.buttons.rewind),fastForward:At.call(this,this.config.selectors.buttons.fastForward),mute:At.call(this,this.config.selectors.buttons.mute),pip:At.call(this,this.config.selectors.buttons.pip),airplay:At.call(this,this.config.selectors.buttons.airplay),settings:At.call(this,this.config.selectors.buttons.settings),captions:At.call(this,this.config.selectors.buttons.captions),fullscreen:At.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=At.call(this,this.config.selectors.progress),this.elements.inputs={seek:At.call(this,this.config.selectors.inputs.seek),volume:At.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:At.call(this,this.config.selectors.display.buffer),currentTime:At.call(this,this.config.selectors.display.currentTime),duration:At.call(this,this.config.selectors.display.duration)},lt.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=rn.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");gt(r,Ut(t,{role:"presentation",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),s="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",s),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Yt(e,this.config);return yt("span",Object.assign({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")}),n)},createBadge:function(e){if(lt.empty(e))return null;var t=yt("span",{class:this.config.classNames.menu.value});return t.appendChild(yt("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=Object.assign({},t),i=Kt(e),r={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(function(e){Object.keys(n).includes(e)&&(r[e]=n[e],delete n[e])}),"button"!==r.element||Object.keys(n).includes("type")||(n.type="button"),Object.keys(n).includes("class")?n.class.includes(this.config.classNames.control)||(n.class+=" ".concat(this.config.classNames.control)):n.class=this.config.classNames.control,e){case"play":r.toggle=!0,r.label="play",r.labelPressed="pause",r.icon="play",r.iconPressed="pause";break;case"mute":r.toggle=!0,r.label="mute",r.labelPressed="unmute",r.icon="volume",r.iconPressed="muted";break;case"captions":r.toggle=!0,r.label="enableCaptions",r.labelPressed="disableCaptions",r.icon="captions-off",r.iconPressed="captions-on";break;case"fullscreen":r.toggle=!0,r.label="enterFullscreen",r.labelPressed="exitFullscreen",r.icon="enter-fullscreen",r.iconPressed="exit-fullscreen";break;case"play-large":n.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",r.label="play",r.icon="play";break;default:lt.empty(r.label)&&(r.label=i),lt.empty(r.icon)&&(r.icon=e)}var a=yt(r.element);return r.toggle?(a.appendChild(rn.createIcon.call(this,r.iconPressed,{class:"icon--pressed"})),a.appendChild(rn.createIcon.call(this,r.icon,{class:"icon--not-pressed"})),a.appendChild(rn.createLabel.call(this,r.labelPressed,{class:"label--pressed"})),a.appendChild(rn.createLabel.call(this,r.label,{class:"label--not-pressed"}))):(a.appendChild(rn.createIcon.call(this,r.icon)),a.appendChild(rn.createLabel.call(this,r.label))),Ut(n,_t(this.config.selectors.buttons[i],n)),gt(a,n),"play"===i?(lt.array(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=yt("input",Ut(_t(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Yt(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,rn.updateRangeFill.call(this,n),Ze.setup(n),n},createProgress:function(e,t){var n=yt("progress",Ut(_t(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(yt("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Yt(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e){var t=_t(this.config.selectors.display[e]),n=yt("div",Ut(t,{class:"".concat(this.config.classNames.display.time," ").concat(t.class?t.class:"").trim(),"aria-label":Yt(e,this.config)}),"00:00");return this.elements.display[e]=n,n},bindMenuItemShortcuts:function(e,t){var n=this;dt(e,"keydown keyup",function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ct(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))rn.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,lt.element(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,lt.element(r)||(r=e.parentNode.lastElementChild)),Pt.call(n,r,!0))}},!1),dt(e,"keyup",function(e){13===e.which&&rn.focusFirstMenuItem.call(n,null,!0)})},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,s=e.badge,o=void 0===s?null:s,l=e.checked,c=void 0!==l&&l,u=_t(this.config.selectors.inputs[r]),d=yt("button",Ut(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),h=yt("span");h.innerHTML=a,lt.element(o)&&h.appendChild(o),d.appendChild(h),Object.defineProperty(d,"checked",{enumerable:!0,get:function(){return"true"===d.getAttribute("aria-checked")},set:function(e){e&&Array.from(d.parentNode.children).filter(function(e){return Ct(e,'[role="menuitemradio"]')}).forEach(function(e){return e.setAttribute("aria-checked","false")}),d.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(d,"click keyup",function(e){if(!lt.keyboardEvent(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),d.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}rn.showMenuPanel.call(t,"home",lt.keyboardEvent(e))}},r,!1),rn.bindMenuItemShortcuts.call(this,d,r),i.appendChild(d)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return lt.number(e)?nn(e,Zt(this.duration)>0,t):e},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];lt.element(e)&<.number(t)&&(e.innerText=rn.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(lt.element(this.elements.inputs.volume)&&rn.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),lt.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;lt.element(e)&&(e.value=t,rn.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&<.event(e)){var n,i,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=this.currentTime,i=this.duration,r=0===n||0===i||Number.isNaN(n)||Number.isNaN(i)?0:(n/i*100).toFixed(2),"timeupdate"===e.type&&rn.setRange.call(this,this.elements.inputs.seek,r);break;case"playing":case"progress":!function(e,n){var i=lt.number(n)?n:0,r=lt.element(e)?e:t.elements.display.buffer;if(lt.element(r)){r.value=i;var a=r.getElementsByTagName("span")[0];lt.element(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lt.event(e)?e.target:e;if(lt.element(t)&&"range"===t.getAttribute("type")){if(Ct(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=rn.formatTime(this.currentTime),i=rn.formatTime(this.duration),r=Yt("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ct(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);Rt.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&<.element(this.elements.inputs.seek)&<.element(this.elements.display.seekTooltip)&&0!==this.duration){var n=0,i=this.elements.progress.getBoundingClientRect(),r="".concat(this.config.classNames.tooltip,"--visible"),a=function(e){Et(t.elements.display.seekTooltip,r,e)};if(this.touch)a(!1);else{if(lt.event(e))n=100/i.width*(e.pageX-i.left);else{if(!St(this.elements.display.seekTooltip,r))return;n=parseFloat(this.elements.display.seekTooltip.style.left,10)}n<0?n=0:n>100&&(n=100),rn.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*n),this.elements.display.seekTooltip.style.left="".concat(n,"%"),lt.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!lt.element(this.elements.display.duration)&&this.config.invertTime;rn.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||rn.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Tt(this.elements.display.currentTime,!0),void Tt(this.elements.progress,!0);lt.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=lt.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&rn.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&rn.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),rn.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Tt(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=lt.empty(n)?this[e]:n,lt.empty(r)&&(r=this.config[e].default),!lt.empty(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(lt.element(a)||(a=i&&i.querySelector('[role="menu"]')),lt.element(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=rn.getLabel.call(this,e,r);var s=a&&a.querySelector('[value="'.concat(r,'"]'));lt.element(s)&&(s.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Yt("normal",this.config):"".concat(t,"×");case"quality":if(lt.number(t)){var n=Yt("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return Wt(t);case"captions":return on.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(lt.element(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');lt.array(e)&&(this.options.quality=Ht(e).filter(function(e){return t.config.quality.options.includes(e)}));var i=!lt.empty(this.options.quality)&&this.options.quality.length>1;if(rn.toggleMenuButton.call(this,"quality",i),kt(n),rn.checkMenu.call(this),i){var r=function(e){var n=Yt("qualityBadge.".concat(e),t.config);return n.length?rn.createBadge.call(t,n):null};this.options.quality.sort(function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1}).forEach(function(e){rn.createMenuItem.call(t,{value:e,list:n,type:"quality",title:rn.getLabel.call(t,"quality",e),badge:r(e)})}),rn.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(lt.element(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=on.getTracks.call(this),i=Boolean(n.length);if(rn.toggleMenuButton.call(this,"captions",i),kt(t),rn.checkMenu.call(this),i){var r=n.map(function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:on.getLabel.call(e,n),badge:n.language&&rn.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}});r.unshift({value:-1,checked:!this.captions.toggled,title:Yt("disabled",this.config),list:t,type:"language"}),r.forEach(rn.createMenuItem.bind(this)),rn.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(e){var t=this;if(lt.element(this.elements.settings.panels.speed)){var n=this.elements.settings.panels.speed.querySelector('[role="menu"]');lt.array(e)?this.options.speed=e:(this.isHTML5||this.isVimeo)&&(this.options.speed=[.5,.75,1,1.25,1.5,1.75,2]),this.options.speed=this.options.speed.filter(function(e){return t.config.speed.options.includes(e)});var i=!lt.empty(this.options.speed)&&this.options.speed.length>1;rn.toggleMenuButton.call(this,"speed",i),kt(n),rn.checkMenu.call(this),i&&(this.options.speed.forEach(function(e){rn.createMenuItem.call(t,{value:e,list:n,type:"speed",title:rn.getLabel.call(t,"speed",e)})}),rn.updateSetting.call(this,"speed",n))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!lt.empty(e)&&Object.values(e).some(function(e){return!e.hidden});Tt(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;lt.element(n)||(n=Object.values(this.elements.settings.panels).find(function(e){return!e.hidden}));var i=n.querySelector('[role^="menuitem"]');Pt.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(lt.element(t)&<.element(n)){var i=t.hidden,r=i;if(lt.boolean(e))r=e;else if(lt.keyboardEvent(e)&&27===e.which)r=!1;else if(lt.event(e)){var a=t.contains(e.target);if(a||!a&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Tt(t,!r),Et(this.elements.container,this.config.classNames.menu.open,r),r&<.keyboardEvent(e)?rn.focusFirstMenuItem.call(this,null,!0):r||i||Pt.call(this,n,lt.keyboardEvent(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return bt(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=document.getElementById("plyr-settings-".concat(this.id,"-").concat(t));if(lt.element(i)){var r=i.parentNode,a=Array.from(r.children).find(function(e){return!e.hidden});if(Ft.transitions&&!Ft.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var s=rn.getMenuSize.call(this,i);dt.call(this,r,Lt,function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",ht.call(e,r,Lt,t))}),r.style.width="".concat(s.width,"px"),r.style.height="".concat(s.height,"px")}Tt(a,!0),Tt(i,!1),rn.focusFirstMenuItem.call(this,i,n)}},setDownloadLink:function(){var e=this.elements.buttons.download;lt.element(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=yt("div",_t(this.config.selectors.controls.wrapper));if(this.config.controls.includes("restart")&&n.appendChild(rn.createButton.call(this,"restart")),this.config.controls.includes("rewind")&&n.appendChild(rn.createButton.call(this,"rewind")),this.config.controls.includes("play")&&n.appendChild(rn.createButton.call(this,"play")),this.config.controls.includes("fast-forward")&&n.appendChild(rn.createButton.call(this,"fast-forward")),this.config.controls.includes("progress")){var i=yt("div",_t(this.config.selectors.progress));if(i.appendChild(rn.createRange.call(this,"seek",{id:"plyr-seek-".concat(e.id)})),i.appendChild(rn.createProgress.call(this,"buffer")),this.config.tooltips.seek){var r=yt("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(r),this.elements.display.seekTooltip=r}this.elements.progress=i,n.appendChild(this.elements.progress)}if(this.config.controls.includes("current-time")&&n.appendChild(rn.createTime.call(this,"currentTime")),this.config.controls.includes("duration")&&n.appendChild(rn.createTime.call(this,"duration")),this.config.controls.includes("mute")||this.config.controls.includes("volume")){var a=yt("div",{class:"plyr__volume"});if(this.config.controls.includes("mute")&&a.appendChild(rn.createButton.call(this,"mute")),this.config.controls.includes("volume")){var s={max:1,step:.05,value:this.config.volume};a.appendChild(rn.createRange.call(this,"volume",Ut(s,{id:"plyr-volume-".concat(e.id)}))),this.elements.volume=a}n.appendChild(a)}if(this.config.controls.includes("captions")&&n.appendChild(rn.createButton.call(this,"captions")),this.config.controls.includes("settings")&&!lt.empty(this.config.settings)){var o=yt("div",{class:"plyr__menu",hidden:""});o.appendChild(rn.createButton.call(this,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var l=yt("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),c=yt("div"),u=yt("div",{id:"plyr-settings-".concat(e.id,"-home")}),d=yt("div",{role:"menu"});u.appendChild(d),c.appendChild(u),this.elements.settings.panels.home=u,this.config.settings.forEach(function(n){var i=yt("button",Ut(_t(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));rn.bindMenuItemShortcuts.call(t,i,n),dt(i,"click",function(){rn.showMenuPanel.call(t,n,!1)});var r=yt("span",null,Yt(n,t.config)),a=yt("span",{class:t.config.classNames.menu.value});a.innerHTML=e[n],r.appendChild(a),i.appendChild(r),d.appendChild(i);var s=yt("div",{id:"plyr-settings-".concat(e.id,"-").concat(n),hidden:""}),o=yt("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});o.appendChild(yt("span",{"aria-hidden":!0},Yt(n,t.config))),o.appendChild(yt("span",{class:t.config.classNames.hidden},Yt("menuBack",t.config))),dt(s,"keydown",function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),rn.showMenuPanel.call(t,"home",!0))},!1),dt(o,"click",function(){rn.showMenuPanel.call(t,"home",!1)}),s.appendChild(o),s.appendChild(yt("div",{role:"menu"})),c.appendChild(s),t.elements.settings.buttons[n]=i,t.elements.settings.panels[n]=s}),l.appendChild(c),o.appendChild(l),n.appendChild(o),this.elements.settings.popup=l,this.elements.settings.menu=o}if(this.config.controls.includes("pip")&&Ft.pip&&n.appendChild(rn.createButton.call(this,"pip")),this.config.controls.includes("airplay")&&Ft.airplay&&n.appendChild(rn.createButton.call(this,"airplay")),this.config.controls.includes("download")){var h={element:"a",href:this.download,target:"_blank"},p=this.config.urls.download;!lt.url(p)&&this.isEmbed&&Ut(h,{icon:"logo-".concat(this.provider),label:this.provider}),n.appendChild(rn.createButton.call(this,"download",h))}return this.config.controls.includes("fullscreen")&&n.appendChild(rn.createButton.call(this,"fullscreen")),this.config.controls.includes("play-large")&&this.elements.container.appendChild(rn.createButton.call(this,"play-large")),this.elements.controls=n,this.isHTML5&&rn.setQualityMenu.call(this,Bt.getQualityOptions.call(this)),rn.setSpeedMenu.call(this),n},inject:function(){var e=this;if(this.config.loadSprite){var t=rn.getIconUrl.call(this);t.cors&&Qt(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;lt.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),lt.element(this.config.controls)||lt.string(this.config.controls)?n=this.config.controls:(n=rn.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:on.getLabel.call(this)}),r=!1);var a,s=function(e){var t=e;return Object.entries(i).forEach(function(e){var n=o(e,2),i=n[0],r=n[1];t=zt(t,"{".concat(i,"}"),r)}),t};if(r&&(lt.string(this.config.controls)?n=s(n):lt.element(n)&&(n.innerHTML=s(n.innerHTML))),lt.string(this.config.selectors.controls.container)&&(a=document.querySelector(this.config.selectors.controls.container)),lt.element(a)||(a=this.elements.container),a[lt.element(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),lt.element(this.elements.controls)||rn.findElements.call(this),!lt.empty(this.elements.buttons)){var l=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return St(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Et(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach(function(e){lt.array(e)||lt.nodeList(e)?Array.from(e).filter(Boolean).forEach(l):l(e)})}if(Rt.isEdge&&It(a),this.config.tooltips.controls){var c=this.config,u=c.classNames,d=c.selectors,h="".concat(d.controls.wrapper," ").concat(d.labels," .").concat(u.hidden),p=xt.call(this,h);Array.from(p).forEach(function(t){Et(t,e.config.classNames.hidden,!1),Et(t,e.config.classNames.tooltip,!0)})}}};function an(e){var t=e;if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=document.createElement("a");n.href=t,t=n.href}try{return new URL(t)}catch(e){return null}}function sn(e){var t=new URLSearchParams;return lt.object(e)&&Object.entries(e).forEach(function(e){var n=o(e,2),i=n[0],r=n[1];t.set(i,r)}),t}var on={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!Ft.textTracks)lt.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&rn.setCaptionsMenu.call(this);else{var e,t;if(lt.element(this.elements.captions)||(this.elements.captions=yt("div",_t(this.config.selectors.captions)),e=this.elements.captions,t=this.elements.wrapper,lt.element(e)&<.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),Rt.isIE&&window.URL){var n=this.media.querySelectorAll("track");Array.from(n).forEach(function(e){var t=e.getAttribute("src"),n=an(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Gt(t,"blob").then(function(t){e.setAttribute("src",window.URL.createObjectURL(t))}).catch(function(){bt(e)})})}var i=Ht((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map(function(e){return e.split("-")[0]})),r=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===r)r=o(i,1)[0];var a=this.storage.get("captions");if(lt.boolean(a)||(a=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:a,language:r,languages:i}),this.isHTML5){var s=this.config.captions.update?"addtrack removetrack":"removetrack";dt.call(this,this.media.textTracks,s,on.update.bind(this))}setTimeout(on.update.bind(this),0)}},update:function(){var e=this,t=on.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,s=n.currentTrackNode,o=Boolean(t.find(function(e){return e.language===r}));this.isHTML5&&this.isVideo&&t.filter(function(e){return!a.get(e)}).forEach(function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),t.mode="hidden",dt.call(e,t,"cuechange",function(){return on.updateCues.call(e)})}),(o&&this.language!==r||!t.includes(s))&&(on.setLanguage.call(this,r),on.toggle.call(this,i&&o)),Et(this.elements.container,this.config.classNames.captions.enabled,!lt.empty(t)),(this.config.controls||[]).includes("settings")&&this.config.settings.includes("captions")&&rn.setCaptionsMenu.call(this)},toggle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var n=this.captions.toggled,i=this.config.classNames.captions.active,r=lt.nullOrUndefined(e)?!n:e;if(r!==n){if(t||(this.captions.active=r,this.storage.set({captions:r})),!this.language&&r&&!t){var a=on.getTracks.call(this),s=on.findTrack.call(this,[this.captions.language].concat(l(this.captions.languages)),!0);return this.captions.language=s.language,void on.set.call(this,a.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=r),Et(this.elements.container,i,r),this.captions.toggled=r,rn.updateSetting.call(this,"captions"),mt.call(this,this.media,r?"captionsenabled":"captionsdisabled")}}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=on.getTracks.call(this);if(-1!==e)if(lt.number(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=(i||{}).language;this.captions.currentTrackNode=i,rn.updateSetting.call(this,"captions"),t||(this.captions.language=r,this.storage.set({language:r})),this.isVimeo&&this.embed.enableTextTrack(r),mt.call(this,this.media,"languagechange")}on.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&on.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else on.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(lt.string(e)){var n=e.toLowerCase();this.captions.language=n;var i=on.getTracks.call(this),r=on.findTrack.call(this,[n]);on.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Array.from((this.media||{}).textTracks||[]).filter(function(n){return!e.isHTML5||t||e.captions.meta.has(n)}).filter(function(e){return["captions","subtitles"].includes(e.kind)})},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=on.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},s=Array.from(r).sort(function(e,t){return a(t)-a(e)});return e.every(function(e){return!(t=s.find(function(t){return t.language===e}))}),t||(i?s[0]:void 0)},getCurrentTrack:function(){return on.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!lt.track(t)&&Ft.textTracks&&this.captions.toggled&&(t=on.getCurrentTrack.call(this)),lt.track(t)?lt.empty(t.label)?lt.empty(t.language)?Yt("enabled",this.config):e.language.toUpperCase():t.label:Yt("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(lt.element(this.elements.captions))if(lt.nullOrUndefined(e)||Array.isArray(e)){var t=e;if(!t){var n=on.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map(function(e){return e.getCueAsHTML()}).map(Xt)}var i=t.map(function(e){return e.trim()}).join("\n");if(i!==this.elements.captions.innerHTML){kt(this.elements.captions);var r=yt("span",_t(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),mt.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},ln={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:"16:9",clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.5.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240]},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption",menu:{quality:".js-plyr__menu__list--quality"}},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},keys:{google:null},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1},youtube:{noCookie:!1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},cn="picture-in-picture",un="inline",dn={html5:"html5",youtube:"youtube",vimeo:"vimeo"},hn={audio:"audio",video:"video"};var pn=function(){},mn=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];i(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return a(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):pn}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):pn}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):pn}}]),e}();function fn(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;lt.element(e)&&(e.pressed=this.active),mt.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0),Rt.isIos||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(lt.element(e)){var n=xt.call(this,"button:not(:disabled), input:not(:disabled), [tabindex]"),i=n[0],r=n[n.length-1];ut.call(this,this.elements.container,"keydown",function(e){if("Tab"===e.key&&9===e.keyCode){var t=document.activeElement;t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}},t,!1)}}.call(this.player,this.target,this.active)}}function gn(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(t?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=t?"hidden":"",Et(this.target,this.player.config.classNames.fullscreen.fallback,t),Rt.isIos){var n=document.head.querySelector('meta[name="viewport"]'),i="viewport-fit=cover";n||(n=document.createElement("meta")).setAttribute("name","viewport");var r=lt.string(n.content)&&n.content.includes(i);t?(this.cleanupViewport=!r,r||(n.content+=",".concat(i))):this.cleanupViewport&&(n.content=n.content.split(",").filter(function(e){return e.trim()!==i}).join(",")),setTimeout(function(){return It(e.target)},100)}fn.call(this)}var yn=function(){function e(t){var n=this;i(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,dt.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),function(){fn.call(n)}),dt.call(this.player,this.player.elements.container,"dblclick",function(e){lt.element(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()}),this.update()}return a(e,[{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");Et(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(Rt.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?gn.call(this,!0):this.prefix?lt.empty(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen())}},{key:"exit",value:function(){if(this.enabled)if(Rt.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),this.player.play();else if(!e.native||this.forceFallback)gn.call(this,!1);else if(this.prefix){if(!lt.empty(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){return!!this.enabled&&(!e.native||this.forceFallback?St(this.target,this.player.config.classNames.fullscreen.fallback):(this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement)===this.target)}},{key:"target",get:function(){return Rt.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(lt.function(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some(function(t){return!(!lt.function(document["".concat(t,"ExitFullscreen")])&&!lt.function(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)}),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}();function vn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise(function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})})}var bn={addStyleHook:function(){Et(this.elements.container,this.config.selectors.container.replace(".",""),!0),Et(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void bn.toggleNativeControls.call(this,!0);lt.element(this.elements.controls)||(rn.inject.call(this),this.listeners.controls()),bn.toggleNativeControls.call(this),this.isHTML5&&on.setup.call(this),this.volume=null,this.muted=null,this.speed=null,this.loop=null,this.quality=null,rn.updateVolume.call(this),rn.timeUpdate.call(this),bn.checkPlaying.call(this),Et(this.elements.container,this.config.classNames.pip.supported,Ft.pip&&this.isHTML5&&this.isVideo),Et(this.elements.container,this.config.classNames.airplay.supported,Ft.airplay&&this.isHTML5),Et(this.elements.container,this.config.classNames.isIos,Rt.isIos),Et(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(function(){mt.call(e,e.media,"ready")},0),bn.setTitle.call(this),this.poster&&bn.setPoster.call(this,this.poster,!1).catch(function(){}),this.config.duration&&rn.durationUpdate.call(this)},setTitle:function(){var e=Yt("play",this.config);if(lt.string(this.config.title)&&!lt.empty(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach(function(t){t.setAttribute("aria-label",e)}),this.isEmbed){var t=At.call(this,"iframe");if(!lt.element(t))return;var n=lt.empty(this.config.title)?"video":this.config.title,i=Yt("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){Et(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this;return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]||!this.poster?(this.media.setAttribute("poster",e),function(){var e=this;return new Promise(function(t){return e.ready?setTimeout(t,0):dt.call(e,e.elements.container,"ready",t)}).then(function(){})}.call(this).then(function(){return vn(e)}).catch(function(n){throw e===t.poster&&bn.togglePoster.call(t,!1),n}).then(function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),bn.togglePoster.call(t,!0),e})):Promise.reject(new Error("Poster already set"))},checkPlaying:function(e){var t=this;Et(this.elements.container,this.config.classNames.playing,this.playing),Et(this.elements.container,this.config.classNames.paused,this.paused),Et(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(function(e){e.pressed=t.playing}),lt.event(e)&&"timeupdate"===e.type||bn.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(function(){Et(t.elements.container,t.config.classNames.loading,t.loading),bn.toggleControls.call(t)},this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}}};function kn(e){var t=e;lt.string(t)||lt.nullOrUndefined(this.embed)||(t=this.embed.ratio),lt.string(t)||(t=this.config.ratio);var n=o(t.split(":").map(Number),2),i=100/n[0]*n[1];if(this.elements.wrapper.style.paddingBottom="".concat(i,"%"),this.isVimeo&&this.supported.ui){var r=(240-i)/4.8;this.media.style.transform="translateY(-".concat(r,"%)")}return{padding:i,ratio:t}}var wn=function(){function e(t){i(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return a(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&<.number(i)){if(r){var s=document.activeElement;if(lt.element(s)){var o=t.config.selectors.editable;if(s!==n.inputs.seek&&Ct(s,o))return;if(32===e.which&&Ct(s,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||t.togglePlay();break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){rn.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,Et(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,Et(xt.call(t,".".concat(i)),i,!1),this.focusTimer=setTimeout(function(){var e=document.activeElement;n.container.contains(e)&&Et(document.activeElement,t.config.classNames.tabFocus,!0)},10)}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&ut.call(t,window,"keydown keyup",this.handleKey,e,!1),ut.call(t,document.body,"click",this.toggleMenu,e),pt.call(t,document.body,"touchstart",this.firstTouch),ut.call(t,document.body,"keydown focus blur",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&dt.call(e,n.container,"keydown keyup",this.handleKey,!1),dt.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(bn.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout(function(){return bn.toggleControls.call(e,!1)},a)});var r=function(t){if(!t)return kn.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return kn.call(e,"".concat(r,":").concat(a))},a=function(){window.clearTimeout(i.resized),i.resized=window.setTimeout(r,50)};dt.call(e,n.container,"enterfullscreen exitfullscreen",function(t){var i=e.fullscreen,s=i.target,l=i.usingNative;if(e.isEmbed&&s===n.container){var c="enterfullscreen"===t.type,u=r(c);u.padding;!function(t,n,i){if(e.isVimeo){var r=e.elements.wrapper.firstChild,a=o(t.split(":").map(Number),2)[1],s=o(e.embed.ratio.split(":").map(Number),2),l=s[0],c=s[1];r.style.maxWidth=i?"".concat(a/c*l,"px"):null,r.style.margin=i?"0 auto":null}}(u.ratio,0,c),l||(c?dt.call(e,window,"resize",a):ht.call(e,window,"resize",a))}})}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(dt.call(t,t.media,"timeupdate seeking seeked",function(e){return rn.timeUpdate.call(t,e)}),dt.call(t,t.media,"durationchange loadeddata loadedmetadata",function(e){return rn.durationUpdate.call(t,e)}),dt.call(t,t.media,"canplay loadeddata",function(){Tt(n.volume,!t.hasAudio),Tt(n.buttons.mute,!t.hasAudio)}),dt.call(t,t.media,"ended",function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&t.restart()}),dt.call(t,t.media,"progress playing seeking seeked",function(e){return rn.updateProgress.call(t,e)}),dt.call(t,t.media,"volumechange",function(e){return rn.updateVolume.call(t,e)}),dt.call(t,t.media,"playing play pause ended emptied timeupdate",function(e){return bn.checkPlaying.call(t,e)}),dt.call(t,t.media,"waiting canplay seeked playing",function(e){return bn.checkLoading.call(t,e)}),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=At.call(t,".".concat(t.config.classNames.video));if(!lt.element(i))return;dt.call(t,n.container,"click",function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,t.play,"play")):e.proxy(r,t.togglePlay,"play")))})}t.supported.ui&&t.config.disableContextMenu&&dt.call(t,n.wrapper,"contextmenu",function(e){e.preventDefault()},!1),dt.call(t,t.media,"volumechange",function(){t.storage.set({volume:t.volume,muted:t.muted})}),dt.call(t,t.media,"ratechange",function(){rn.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})}),dt.call(t,t.media,"qualitychange",function(e){rn.updateSetting.call(t,"quality",null,e.detail.quality)}),dt.call(t,t.media,"ready qualitychange",function(){rn.setDownloadLink.call(t)});var r=t.config.events.concat(["keyup","keydown"]).join(" ");dt.call(t,t.media,r,function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),mt.call(t,n.container,e.type,!0,r)})}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;lt.function(r)&&(a=r.call(i,e)),a&<.function(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=this.player,o=s.config.listeners[i],l=lt.function(o);dt.call(s,e,t,function(e){return r.proxy(e,n,i)},a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=Rt.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach(function(n){e.bind(n,"click",t.togglePlay,"play")}),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",function(){t.muted=!t.muted},"mute"),this.bind(n.buttons.captions,"click",function(){return t.toggleCaptions()}),this.bind(n.buttons.download,"click",function(){mt.call(t,t.media,"download")},"download"),this.bind(n.buttons.fullscreen,"click",function(){t.fullscreen.toggle()},"fullscreen"),this.bind(n.buttons.pip,"click",function(){t.pip="toggle"},"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",function(e){e.stopPropagation(),rn.toggleMenu.call(t,e)}),this.bind(n.buttons.settings,"keyup",function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),rn.toggleMenu.call(t,e)):rn.focusFirstMenuItem.call(t,null,!0))},null,!1),this.bind(n.settings.menu,"keydown",function(e){27===e.which&&rn.toggleMenu.call(t,e)}),this.bind(n.inputs.seek,"mousedown mousemove",function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)}),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!lt.keyboardEvent(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),t.play()):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}}),Rt.isIos){var r=xt.call(t,'input[type="range"]');Array.from(r).forEach(function(t){return e.bind(t,i,function(e){return It(e.target)})})}this.bind(n.inputs.seek,i,function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");lt.empty(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration},"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",function(e){return rn.updateSeekTooltip.call(t,e)}),this.bind(n.progress,"mousemove touchmove",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)}),this.bind(n.progress,"mouseleave click",function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)}),this.bind(n.progress,"mousedown touchstart",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)}),this.bind(n.progress,"mouseup touchend",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)}),Rt.isWebkit&&Array.from(xt.call(t,'input[type="range"]')).forEach(function(n){e.bind(n,"input",function(e){return rn.updateRangeFill.call(t,e.target)})}),t.config.toggleInvert&&!lt.element(n.display.duration)&&this.bind(n.display.currentTime,"click",function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,rn.timeUpdate.call(t))}),this.bind(n.inputs.volume,i,function(e){t.volume=e.target.value},"volume"),this.bind(n.controls,"mouseenter mouseleave",function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(n.controls,"focusin",function(){var n=t.config,i=t.elements,r=t.timers;Et(i.controls,n.classNames.noTransition,!0),bn.toggleControls.call(t,!0),setTimeout(function(){Et(i.controls,n.classNames.noTransition,!1)},0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout(function(){return bn.toggleControls.call(t,!1)},a)}),this.bind(n.inputs.volume,"wheel",function(e){var n=e.webkitDirectionInvertedFromDevice,i=o([e.deltaX,-e.deltaY].map(function(e){return n?-e:e}),2),r=i[0],a=i[1],s=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(s/50);var l=t.media.volume;(1===s&&l<1||-1===s&&l>0)&&e.preventDefault()},"volume",!1)}}]),e}(),_n=t(function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function s(t,n,i,r){var a,o,l=document,c=i.async,u=(i.numRetries||0)+1,d=i.before||e,h=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(t)?((o=l.createElement("link")).rel="stylesheet",o.href=h,(a="hideFocus"in o)&&o.relList&&(a=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg)$)/.test(t)?(o=l.createElement("img")).src=h:((o=l.createElement("script")).src=t,o.async=void 0===c||c),o.onload=o.onerror=o.onbeforeload=function(e){var l=e.type[0];if(a)try{o.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)0&&void 0!==arguments[0]&&arguments[0]))return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval(function(){var t=nn(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Yt("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)},100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.setVolume(this.player.volume),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,function(e){return t.onAdError(e)}),Object.keys(google.ima.AdEvent.Type).forEach(function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],function(e){return t.onAdEvent(e)})}),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;lt.empty(this.cuePoints)||this.cuePoints.forEach(function(t){if(0!==t&&-1!==t&&t1?n-1:0),r=1;r ?)([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1])*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6])*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}}),t.text&&a.push(t)}),a),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var l=new Image;l.onload=function(){s.height=l.naturalHeight,s.width=l.naturalWidth,t.thumbnails.push(s),n()},l.src=s.urlPrefix+s.frames[0].text})})}},{key:"startMove",value:function(e){if(this.loaded&<.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=nn(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){!1!==e.button&&0!==e.button||(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):pt.call(this.player,this.player.media,"timeupdate",function(){e.mouseDown||e.toggleScrubbingContainer(!1)})}},{key:"listeners",value:function(){var e=this;this.player.on("play",function(){e.toggleThumbContainer(!1,!0)}),this.player.on("seeked",function(){e.toggleThumbContainer(!1)}),this.player.on("timeupdate",function(){e.lastTime=e.player.media.currentTime})}},{key:"render",value:function(){this.elements.thumb.container=yt("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=yt("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=yt("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=yt("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=yt("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex(function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime}),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach(function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)}),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],s=i.frames[n].text,o=r+s;if(this.currentImageElement&&this.currentImageElement.dataset.filename===s)this.showImage(this.currentImageElement,a,t,n,s,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=o,l.dataset.index=n,l.dataset.filename=s,this.showingThumbFilename=s,this.player.debug.log("Loading image: ".concat(o)),l.onload=function(){return e.showImage(l,a,t,n,s,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach(function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout(function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))},i)}}})}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise(function(i){setTimeout(function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var s=!1;a.forEach(function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){s=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,o=new Image;o.src=a,o.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}}),s||i()}},300)})}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){this.elements.thumb.imageContainer.clientHeight>20&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(!this.sizeSpecifiedInCSS){var e=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(e,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;ar&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){this.elements.scrubbing.container.style.width="".concat(this.player.media.clientWidth,"px"),this.elements.scrubbing.container.style.height="".concat(this.player.media.clientWidth/this.thumbAspectRatio,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(Math.floor(e.naturalHeight*n),"px"),e.style.width="".concat(Math.floor(e.naturalWidth*n),"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?Math.floor(this.player.media.clientWidth/this.thumbAspectRatio):Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),In={insertElements:function(e,t){var n=this;lt.string(t)?vt(e,this.media,{src:t}):lt.array(t)&&t.forEach(function(t){vt(e,n.media,t)})},change:function(e){var t=this;qt(e,"sources.length")?(Bt.cancelRequests.call(this),this.destroy.call(this,function(){t.options.quality=[],bt(t.media),t.media=null,lt.element(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=o(n,1)[0],a=r.provider,s=void 0===a?dn.html5:a,l=r.src,c="html5"===s?i:"div",u="html5"===s?{}:{src:l};Object.assign(t,{provider:s,type:i,supported:Ft.check(i,s,t.config.playsinline),media:yt(c,u)}),t.elements.container.appendChild(t.media),lt.boolean(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),lt.empty(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),bn.addStyleHook.call(t),t.isHTML5&&In.insertElements.call(t,"source",n),t.config.title=e.title,Mn.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&In.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&bn.build.call(t),t.isHTML5&&t.media.load(),t.previewThumbnails&&t.previewThumbnails.load(),t.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}},jn=function(){function e(t,n){var r=this;if(i(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=Ft.touch,this.media=t,lt.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||lt.nodeList(this.media)||lt.array(this.media))&&(this.media=this.media[0]),this.config=Ut({},ln,e.defaults,n||{},function(){try{return JSON.parse(r.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new mn(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",Ft),!lt.nullOrUndefined(this.media)&<.element(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(Ft.check().api){var a=this.media.cloneNode(!0);a.autoplay=!1,this.elements.original=a;var s=this.media.tagName.toLowerCase(),o=null,l=null;switch(s){case"div":if(o=this.media.querySelector("iframe"),lt.element(o)){if(l=an(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?dn.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?dn.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",l.search.length){var c=["1","true"];c.includes(l.searchParams.get("autoplay"))&&(this.config.autoplay=!0),c.includes(l.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=c.includes(l.searchParams.get("playsinline")),this.config.youtube.hl=l.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(lt.empty(this.provider)||!Object.keys(dn).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=hn.video;break;case"video":case"audio":this.type=s,this.provider=dn.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=Ft.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new wn(this),this.storage=new $t(this),this.media.plyr=this,lt.element(this.elements.container)||(this.elements.container=yt("div",{tabindex:0}),ft(this.media,this.elements.container)),bn.addStyleHook.call(this),Mn.setup.call(this),this.config.debug&&dt.call(this,this.elements.container,this.config.events.join(" "),function(e){r.debug.log("event: ".concat(e.type))}),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&bn.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new yn(this),this.config.ads.enabled&&(this.ads=new Nn(this)),this.config.autoplay&&this.play(),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Ln(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return a(e,[{key:"play",value:function(){var e=this;return lt.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(function(){return e.ads.play()}).catch(function(){return e.media.play()}),this.media.play()):null}},{key:"pause",value:function(){this.playing&<.function(this.media.pause)&&this.media.pause()}},{key:"togglePlay",value:function(e){(lt.boolean(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):lt.function(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime=this.currentTime-(lt.number(e)?e:this.config.seekTime)}},{key:"forward",value:function(e){this.currentTime=this.currentTime+(lt.number(e)?e:this.config.seekTime)}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(lt.number(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){on.toggle.call(this,e,!1)}},{key:"airplay",value:function(){Ft.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=St(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=Et(this.elements.container,this.config.classNames.hideControls,n);if(i&&this.config.controls.includes("settings")&&!lt.empty(this.config.settings)&&rn.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";mt.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){dt.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){pt.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){ht(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(bt(t.elements.buttons.play),bt(t.elements.captions),bt(t.elements.controls),bt(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),lt.function(e)&&e()):(function(){this&&this.eventListeners&&(this.eventListeners.forEach(function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)}),this.eventListeners=[])}.call(t),wt(t.elements.original,t.elements.container),mt.call(t,t.elements.original,"destroyed",!0),lt.function(e)&&e.call(t.elements.original),t.ready=!1,setTimeout(function(){t.elements=null,t.media=null},200))};this.stop(),this.isHTML5?(clearTimeout(this.timers.loading),bn.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&<.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return Ft.mime.call(this,e)}},{key:"isHTML5",get:function(){return Boolean(this.provider===dn.html5)}},{key:"isEmbed",get:function(){return Boolean(this.isYouTube||this.isVimeo)}},{key:"isYouTube",get:function(){return Boolean(this.provider===dn.youtube)}},{key:"isVimeo",get:function(){return Boolean(this.provider===dn.vimeo)}},{key:"isVideo",get:function(){return Boolean(this.type===hn.video)}},{key:"isAudio",get:function(){return Boolean(this.type===hn.audio)}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=lt.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return lt.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=lt.number(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;lt.string(t)&&(t=Number(t)),lt.number(t)||(t=this.storage.get("volume")),lt.number(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!lt.empty(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;lt.boolean(t)||(t=this.storage.get("muted")),lt.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=null;lt.number(e)&&(t=e),lt.number(t)||(t=this.storage.get("speed")),lt.number(t)||(t=this.config.speed.selected),t<.1&&(t=.1),t>2&&(t=2),this.config.speed.options.includes(t)?(this.config.speed.selected=t,this.media.playbackRate=t):this.debug.warn("Unsupported speed (".concat(t,")"))},get:function(){return Number(this.media.playbackRate)}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!lt.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(lt.number),r=!0;if(!n.includes(i)){var a=function(e,t){return lt.array(e)&&e.length?e.reduce(function(e,n){return Math.abs(n-t)1&&void 0!==arguments[1]?arguments[1]:{},i=null;return lt.string(t)?i=Array.from(document.querySelectorAll(t)):lt.nodeList(t)?i=Array.from(t):lt.array(t)&&(i=t.filter(lt.element)),lt.empty(i)?null:i.map(function(t){return new e(t,n)})}}]),e}();jn.defaults=(xn=ln,JSON.parse(JSON.stringify(xn))),An=window.location.host,Pn={prod:"plyr.io"===An,dev:"dev.plyr.io"===An},document.addEventListener("DOMContentLoaded",function(){qe.context(function(){var e=document.getElementById("container");window.Shr&&window.Shr.setup(".js-shr-button",{count:{classname:"button__count"}}),document.addEventListener("focusout",function(t){t.target.classList&&!e.contains(t.target)&&t.target.classList.remove("tab-focus")}),document.addEventListener("keydown",function(t){9===t.keyCode&&setTimeout(function(){var t=document.activeElement;t&&t.classList&&!e.contains(t)&&t.classList.add("tab-focus")},10)});var t=new jn("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},keys:{google:"AIzaSyDrNwtN3nLH_8rjCmu5Wq3ZCm4MNAVdc0c"},ads:{enabled:Pn.prod||Pn.dev,publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]}});window.player=t;var n=document.querySelectorAll("[data-source]"),i={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState;function s(e,t,n){e&&e.classList[n?"add":"remove"](t)}function o(e,a){if(e in i&&(a||e!==r)&&(r.length||e!==i.video)){switch(e){case i.video:t.source={type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}]};break;case i.audio:t.source={type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]};break;case i.youtube:t.source={type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]};break;case i.vimeo:t.source={type:"video",sources:[{src:"https://vimeo.com/76979871",provider:"vimeo"}]}}r=e,Array.from(n).forEach(function(e){return s(e.parentElement,"active",!1)}),s(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach(function(e){e.setAttribute("hidden","")}),document.querySelector(".plyr__cite--".concat(e)).removeAttribute("hidden")}}if(Array.from(n).forEach(function(e){e.addEventListener("click",function(){var t=e.getAttribute("data-source");o(t),a&&window.history.pushState({type:t},"","#".concat(t))})}),window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&o(e.state.type)}),a){var l=!r.length;l&&(r=i.video),r in i&&window.history.replaceState({type:r},"",l?"":"#".concat(r)),r!==i.video&&o(r,!0)}})}),Pn.prod&&qe.config("https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555").install()}(); +"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n0){var o=n(i,this);~o?i.splice(o+1):i.push(this),~o?r.splice(o,1/0,a):r.push(a),~n(i,s)&&(s=t.call(this,a,s))}else i.push(s);return null==e?s instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}(s):s:e.call(this,a,s)}}(e.exports=function(e,t,n,r){return JSON.stringify(e,i(t,r),n)}).getSerialize=i}),u=(c.getSerialize,"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{});function d(e){return void 0===e}function h(e){return"[object Object]"===Object.prototype.toString.call(e)}function p(e){return"[object String]"===Object.prototype.toString.call(e)}function m(e){return"[object Array]"===Object.prototype.toString.call(e)}function f(){if(!("fetch"in u))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function g(e,t){var n,i;if(d(e.length))for(n in e)v(e,n)&&t.call(null,n,e[n]);else if(i=e.length)for(n=0;n ".length;e&&i++<5&&!("html"===(t=k(e))||i>1&&r+n.length*a+t.length>=80);)n.push(t),r+=t.length,e=e.parentNode;return n.reverse().join(" > ")},htmlElementAsString:k,isSameException:function(e,t){return!w(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&(n=e.stacktrace,i=t.stacktrace,(!d(n)||!d(i))&&_(e.stacktrace,t.stacktrace)));var n,i},isSameStacktrace:_,parseUrl:function(e){if("string"!=typeof e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),n=t[6]||"",i=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+n+i}},fill:function(e,t,n,i){if(null!=e){var r=e[t];e[t]=n(r),e[t].__raven__=!0,e[t].__orig__=r,i&&i.push([e,t,r])}},safeJoin:function(e,t){if(!m(e))return"";for(var n=[],i=0;ii?e(t,n-1):r},serializeKeysForMessage:function(e,t){if("number"==typeof e||"string"==typeof e)return e.toString();if(!Array.isArray(e))return"";if(0===(e=e.filter(function(e){return"string"==typeof e})).length)return"[object has no keys]";if(t="number"!=typeof t?S:t,e[0].length>=t)return e[0];for(var n=e.length;n>0;n--){var i=e.slice(0,n).join(", ");if(!(i.length>t))return n===e.length?i:i+"…"}return""},sanitize:function(e,t){if(!m(t)||m(t)&&0===t.length)return e;var n,i=b(t),r="********";try{n=JSON.parse(c(e))}catch(t){return e}return function e(t){return m(t)?t.map(function(t){return e(t)}):h(t)?Object.keys(t).reduce(function(n,a){return i.test(a)?n[a]=r:n[a]=e(t[a]),n},{}):t}(n)}},P={collectWindowErrors:!0,debug:!1},O="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},M=[].slice,N="?",L=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function I(){return"undefined"==typeof document||null==document.location?"":document.location.href}P.report=function(){var e,t,n=[],i=null,r=null,a=null;function s(e,t){var i=null;if(!t||P.collectWindowErrors){for(var r in n)if(n.hasOwnProperty(r))try{n[r].apply(null,[e].concat(M.call(arguments,2)))}catch(e){i=e}if(i)throw i}}function o(t,n,i,r,o){var c=A.isErrorEvent(o)?o.error:o,u=A.isErrorEvent(t)?t.message:t;if(a)P.computeStackTrace.augmentStackTraceWithInitialElement(a,n,i,u),l();else if(c&&A.isError(c))s(P.computeStackTrace(c),!0);else{var d,h={url:n,line:i,column:r},p=void 0;if("[object String]"==={}.toString.call(u))(d=u.match(L))&&(p=d[1],u=d[2]);h.func=N,s({name:p,message:u,url:I(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function l(){var e=a,t=i;i=null,a=null,r=null,s.apply(null,[e,!1].concat(t))}function c(e,t){var n=M.call(arguments,1);if(a){if(r===e)return;l()}var s=P.computeStackTrace(e);if(a=s,r=e,i=n,setTimeout(function(){r===e&&l()},s.incomplete?2e3:0),!1!==t)throw e}return c.subscribe=function(i){t||(e=O.onerror,O.onerror=o,t=!0),n.push(i)},c.unsubscribe=function(e){for(var t=n.length-1;t>=0;--t)n[t]===e&&n.splice(t,1)},c.uninstall=function(){t&&(O.onerror=e,t=!1,e=void 0),n=[]},c}(),P.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,n,i,r=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,o=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,c=e.stack.split("\n"),u=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=c.length;d eval")>-1&&(t=o.exec(n[3]))?(n[3]=t[1],n[4]=t[2],n[5]=null):0!==d||n[5]||void 0===e.columnNumber||(u[0].column=e.columnNumber+1),i={url:n[3],func:n[1]||N,args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}if(!i.func&&i.line&&(i.func=N),i.url&&"blob:"===i.url.substr(0,5)){var m=new XMLHttpRequest;if(m.open("GET",i.url,!1),m.send(null),200===m.status){var f=m.responseText||"",g=(f=f.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(g){var y=g[1];"~"===y.charAt(0)&&(y=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+y.slice(1)),i.url=y.slice(0,-4)}}}u.push(i)}return u.length?{name:e.name,message:e.message,url:I(),stack:u}:null}}function t(e,t,n,i){var r={url:t,line:n};if(r.url&&r.line){if(e.incomplete=!1,r.func||(r.func=N),e.stack.length>0&&e.stack[0].url===r.url){if(e.stack[0].line===r.line)return!1;if(!e.stack[0].line&&e.stack[0].func===r.func)return e.stack[0].line=r.line,!1}return e.stack.unshift(r),e.partial=!0,!0}return e.incomplete=!0,!1}function n(e,r){for(var a,s,o=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],c={},u=!1,d=n.caller;d&&!u;d=d.caller)if(d!==i&&d!==P.report){if(s={url:null,func:N,line:null,column:null},d.name?s.func=d.name:(a=o.exec(d.toString()))&&(s.func=a[1]),void 0===s.func)try{s.func=a.input.substring(0,a.input.indexOf("{"))}catch(e){}c[""+d]?u=!0:c[""+d]=!0,l.push(s)}r&&l.splice(0,r);var h={name:e.name,message:e.message,url:I(),stack:l};return t(h,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),h}function i(t,i){var r=null;i=null==i?0:+i;try{if(r=e(t))return r}catch(e){if(P.debug)throw e}try{if(r=n(t,i+1))return r}catch(e){if(P.debug)throw e}return{name:t.name,message:t.message,url:I()}}return i.augmentStackTraceWithInitialElement=t,i.computeStackTraceFromStackProp=e,i}();var j=P;function R(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function D(e,t,n,i,r,a){return R((s=R(R(t,e),R(i,a)))<<(o=r)|s>>>32-o,n);var s,o}function F(e,t,n,i,r,a,s){return D(t&n|~t&i,e,t,r,a,s)}function B(e,t,n,i,r,a,s){return D(t&i|n&~i,e,t,r,a,s)}function H(e,t,n,i,r,a,s){return D(t^n^i,e,t,r,a,s)}function q(e,t,n,i,r,a,s){return D(n^(t|~i),e,t,r,a,s)}function U(e,t){var n,i,r,a,s;e[t>>5]|=128<>>9<<4)]=t;var o=1732584193,l=-271733879,c=-1732584194,u=271733878;for(n=0;n>5]>>>t%32&255);return n}function z(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return i}function K(e){return unescape(encodeURIComponent(e))}function X(e){return function(e){return V(U(z(e),8*e.length))}(K(e))}function J(e,t){return function(e,t){var n,i,r=z(e),a=[],s=[];for(a[15]=s[15]=void 0,r.length>16&&(r=U(r,8*e.length)),n=0;n<16;n+=1)a[n]=909522486^r[n],s[n]=1549556828^r[n];return i=U(a.concat(z(t)),512+8*t.length),V(U(s.concat(i),640))}(K(e),K(t))}var Y=function(e,t,n){return t?n?J(t,e):W(J(t,e)):n?X(e):W(X(e))};function $(e){this.name="RavenConfigError",this.message=e}$.prototype=new Error,$.prototype.constructor=$;var G=$,Q=function(e,t,n){var i=e[t],r=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),s=A.safeJoin(e," "),o={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(s="Assertion failed: "+(A.safeJoin(e.slice(1)," ")||"console.assert"),o.extra.arguments=e.slice(1),n&&n(s,o)):n&&n(s,o),i&&Function.prototype.apply.call(i,r,e)}}},Z=A.isErrorEvent,ee=A.isDOMError,te=A.isDOMException,ne=A.isError,ie=A.isObject,re=A.isPlainObject,ae=A.isUndefined,se=A.isFunction,oe=A.isString,le=A.isArray,ce=A.isEmptyObject,ue=A.each,de=A.objectMerge,he=A.truncate,pe=A.objectFrozen,me=A.hasKey,fe=A.joinRegExp,ge=A.urlencode,ye=A.uuid4,ve=A.htmlTreeAsString,be=A.isSameException,ke=A.isSameStacktrace,we=A.parseUrl,_e=A.fill,Te=A.supportsFetch,Ee=A.supportsReferrerPolicy,Se=A.serializeKeysForMessage,Ce=A.serializeException,xe=A.sanitize,Ae=Q,Pe="source protocol user pass host port path".split(" "),Oe=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function Me(){return+new Date}var Ne="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},Le=Ne.document,Ie=Ne.navigator;function je(e,t){return se(t)?function(n){return t(n,e)}:t}function Re(){for(var e in this._hasJSON=!("object"!==("undefined"==typeof JSON?"undefined":n(JSON))||!JSON.stringify),this._hasDocument=!ae(Le),this._hasNavigator=!ae(Ie),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:Ne.SENTRY_RELEASE&&Ne.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:"POST",referrerPolicy:Ee()?"origin":""},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=Ne.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=Me(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=Ne.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}Re.prototype={VERSION:"3.27.0",debug:!1,TraceKit:j,config:function(e,t){var n=this;if(n._globalServer)return this._logDebug("error","Error: Raven has already been configured"),n;if(!e)return n;var i=n._globalOptions;t&&ue(t,function(e,t){"tags"===e||"extra"===e||"user"===e?n._globalContext[e]=t:i[e]=t}),n.setDSN(e),i.ignoreErrors.push(/^Script error\.?$/),i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),i.ignoreErrors=fe(i.ignoreErrors),i.ignoreUrls=!!i.ignoreUrls.length&&fe(i.ignoreUrls),i.whitelistUrls=!!i.whitelistUrls.length&&fe(i.whitelistUrls),i.includePaths=fe(i.includePaths),i.maxBreadcrumbs=Math.max(0,Math.min(i.maxBreadcrumbs||100,100));var r={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},a=i.autoBreadcrumbs;"[object Object]"==={}.toString.call(a)?a=de(r,a):!1!==a&&(a=r),i.autoBreadcrumbs=a;var s={tryCatch:!0},o=i.instrument;return"[object Object]"==={}.toString.call(o)?o=de(s,o):!1!==o&&(o=s),i.instrument=o,j.collectWindowErrors=!!i.collectWindowErrors,n},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(j.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.captureUnhandledRejections&&e._attachPromiseRejectionHandler(),e._patchFunctionToString(),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),n=t.path.lastIndexOf("/"),i=t.path.substr(1,n);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(n+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+i+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,n){return se(e)&&(n=t||[],t=e,e={}),this.wrap(e,t).apply(this,n)},wrap:function(e,t,n){var i=this;if(ae(t)&&!se(e))return e;if(se(e)&&(t=e,e=void 0),!se(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function r(){var r=[],a=arguments.length,s=!e||e&&!1!==e.deep;for(n&&se(n)&&n.apply(this,arguments);a--;)r[a]=s?i.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,r)}catch(t){throw i._ignoreNextOnError(),i.captureException(t,e),t}}for(var a in t)me(t,a)&&(r[a]=t[a]);return r.prototype=t.prototype,t.__raven_wrapper__=r,r.__raven__=!0,r.__orig__=t,r},uninstall:function(){return j.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(e){this._logDebug("debug","Raven caught unhandled promise rejection:",e),this.captureException(e.reason,{mechanism:{type:"onunhandledrejection",handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),Ne.addEventListener&&Ne.addEventListener("unhandledrejection",this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return Ne.removeEventListener&&Ne.removeEventListener("unhandledrejection",this._promiseRejectionHandler),this},captureException:function(e,t){if(t=de({trimHeadFrames:0},t||{}),Z(e)&&e.error)e=e.error;else{if(ee(e)||te(e)){var n=e.name||(ee(e)?"DOMError":"DOMException"),i=e.message?n+": "+e.message:n;return this.captureMessage(i,de(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}))}if(ne(e))e=e;else{if(!re(e))return this.captureMessage(e,de(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}));t=this._getCaptureExceptionOptionsFromPlainObject(t,e),e=new Error(t.message)}}this._lastCapturedException=e;try{var r=j.computeStackTrace(e);this._handleStackInfo(r,t)}catch(t){if(e!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(e,t){var n=Object.keys(t).sort(),i=de(e,{message:"Non-Error exception captured with keys: "+Se(n),fingerprint:[Y(n)],extra:e.extra||{}});return i.extra.__serialized__=Ce(t),i},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var n,i=de({message:e+=""},t=t||{});try{throw new Error(e)}catch(e){n=e}n.name=null;var r=j.computeStackTrace(n),a=le(r.stack)&&r.stack[1];a&&"Raven.captureException"===a.func&&(a=r.stack[2]);var s=a&&a.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(s))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(s))){if(this._globalOptions.stacktrace||t.stacktrace||""===i.message){i.fingerprint=null==i.fingerprint?e:i.fingerprint,(t=de({trimHeadFrames:0},t)).trimHeadFrames+=1;var o=this._prepareFrames(r,t);i.stacktrace={frames:o.reverse()}}return i.fingerprint&&(i.fingerprint=le(i.fingerprint)?i.fingerprint:[i.fingerprint]),this._send(i),this}}},captureBreadcrumb:function(e){var t=de({timestamp:Me()/1e3},e);if(se(this._globalOptions.breadcrumbCallback)){var n=this._globalOptions.breadcrumbCallback(t);if(ie(n)&&!ce(n))t=n;else if(!1===n)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(c(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=je(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=je(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=je(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=Ne.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(Le){if(!(e=de({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},e)).eventId)throw new G("Missing eventId");if(!e.dsn)throw new G("Missing DSN");var t=encodeURIComponent,n=[];for(var i in e)if("user"===i){var r=e.user;r.name&&n.push("name="+t(r.name)),r.email&&n.push("email="+t(r.email))}else n.push(t(i)+"="+t(e[i]));var a=this._getGlobalServer(this._parseDSN(e.dsn)),s=Le.createElement("script");s.async=!0,s.src=a+"/api/embed/error-page/?"+n.join("&"),(Le.head||Le.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var n,i;if(this._hasDocument){for(i in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),Le.createEvent?(n=Le.createEvent("HTMLEvents")).initEvent(e,!0,!0):(n=Le.createEventObject()).eventType=e,t)me(t,i)&&(n[i]=t[i]);if(Le.createEvent)Le.dispatchEvent(n);else try{Le.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(n){if(t._keypressTimeout=null,t._lastCapturedEvent!==n){var i;t._lastCapturedEvent=n;try{i=ve(n.target)}catch(e){i=""}t.captureBreadcrumb({category:"ui."+e,message:i})}}},_keypressEventHandler:function(){var e=this;return function(t){var n;try{n=t.target}catch(e){return}var i=n&&n.tagName;if(i&&("INPUT"===i||"TEXTAREA"===i||n.isContentEditable)){var r=e._keypressTimeout;r||e._breadcrumbEventHandler("input")(t),clearTimeout(r),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var n=we(this._location.href),i=we(t),r=we(e);this._lastHref=t,n.protocol===i.protocol&&n.host===i.host&&(t=i.relative),n.protocol===r.protocol&&n.host===r.host&&(e=r.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_patchFunctionToString:function(){var e=this;e._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.__raven__?e._originalFunctionToString.apply(this.__orig__,arguments):e._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function n(t){return function(n,i){for(var r=new Array(arguments.length),a=0;a"}}},s)),t.apply?t.apply(this,r):t(r[0],r[1])}}var i=this._globalOptions.autoBreadcrumbs;function r(n){var r=Ne[n]&&Ne[n].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty("addEventListener")&&(_e(r,"addEventListener",function(t){return function(r,a,s,o){try{a&&a.handleEvent&&(a.handleEvent=e.wrap({mechanism:{type:"instrument",data:{target:n,function:"handleEvent",handler:a&&a.name||""}}},a.handleEvent))}catch(e){}var l,c,u;return i&&i.dom&&("EventTarget"===n||"Node"===n)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),l=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,r,e.wrap({mechanism:{type:"instrument",data:{target:n,function:"addEventListener",handler:a&&a.name||""}}},a,l),s,o)}},t),_e(r,"removeEventListener",function(e){return function(t,n,i,r){try{n=n&&(n.__raven_wrapper__?n.__raven_wrapper__:n)}catch(e){}return e.call(this,t,n,i,r)}},t))}_e(Ne,"setTimeout",n,t),_e(Ne,"setInterval",n,t),Ne.requestAnimationFrame&&_e(Ne,"requestAnimationFrame",function(t){return function(n){return t(e.wrap({mechanism:{type:"instrument",data:{function:"requestAnimationFrame",handler:t&&t.name||""}}},n))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],s=0;s"}}},n)})}if(t.xhr&&"XMLHttpRequest"in Ne){var r=Ne.XMLHttpRequest&&Ne.XMLHttpRequest.prototype;_e(r,"open",function(t){return function(n,i){return oe(i)&&-1===i.indexOf(e._globalKey)&&(this.__raven_xhr={method:n,url:i,status_code:null}),t.apply(this,arguments)}},n),_e(r,"send",function(t){return function(){var n=this;function r(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var a=["onload","onerror","onprogress"],s=0;s"}}},t,r)}):n.onreadystatechange=r,t.apply(this,arguments)}},n)}t.xhr&&Te()&&_e(Ne,"fetch",function(t){return function(){for(var n=new Array(arguments.length),i=0;i2?arguments[2]:void 0;return n&&e._captureUrlChange(e._lastHref,n+""),t.apply(this,arguments)}};_e(Ne.history,"pushState",l,n),_e(Ne.history,"replaceState",l,n)}if(t.console&&"console"in Ne&&console.log){var c=function(t,n){e.captureBreadcrumb({message:t,level:n.level,category:"console"})};ue(["debug","info","warn","error","log"],function(e,t){Ae(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],n=e[1],i=e[2];t[n]=i}},_restoreConsole:function(){for(var e in this._originalConsoleMethods)this._originalConsole[e]=this._originalConsoleMethods[e]},_drainPlugins:function(){var e=this;ue(this._plugins,function(t,n){var i=n[0],r=n[1];i.apply(e,[e].concat(r))})},_parseDSN:function(e){var t=Oe.exec(e),n={},i=7;try{for(;i--;)n[Pe[i]]=t[i]||""}catch(t){throw new G("Invalid DSN: "+e)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new G("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(e,t){(t=t||{}).mechanism=t.mechanism||{type:"onerror",handled:!1},this._ignoreOnError||this._handleStackInfo(e,t)},_handleStackInfo:function(e,t){var n=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,n,t)},_prepareFrames:function(e,t){var n=this,i=[];if(e.stack&&e.stack.length&&(ue(e.stack,function(t,r){var a=n._normalizeFrame(r,e.url);a&&i.push(a)}),t&&t.trimHeadFrames))for(var r=0;r0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),e=this._sanitizeData(e),Object.keys(e).forEach(function(t){(null==e[t]||""===e[t]||ce(e[t]))&&delete e[t]}),se(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!ce(e)&&(se(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()100&&(n=100),n<50?n-=(100-2*n)*u:n>50&&(n+=2*(n-50)*u),a+Qe(l*(n/100),o)}},{key:"set",value:function(t){e.enabled&&Ge.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t);e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;if(Ge.empty(t)||Ge.string(t)?i=Array.from(document.querySelectorAll(Ge.string(t)?t:'input[type="range"]')):Ge.element(t)?i=[t]:Ge.nodeList(t)?i=Array.from(t):Ge.array(t)&&(i=t.filter(Ge.element)),Ge.empty(i))return null;var r=Object.assign({},Ve,n);Ge.string(t)&&r.watch&&new MutationObserver(function(n){Array.from(n).forEach(function(n){Array.from(n.addedNodes).forEach(function(n){if(Ge.element(n)&&function(){return Array.from(document.querySelectorAll(i)).includes(this)}.call(n,i=t)){var i;new e(n,r)}})})}).observe(document.body,{childList:!0,subtree:!0});return i.map(function(t){return new e(t,n)})}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),et=function(e){return null!=e?e.constructor:null},tt=function(e,t){return Boolean(e&&t&&e instanceof t)},nt=function(e){return null==e},it=function(e){return et(e)===Object},rt=function(e){return et(e)===String},at=function(e){return Array.isArray(e)},st=function(e){return tt(e,NodeList)},ot=function(e){return nt(e)||(rt(e)||at(e)||st(e))&&!e.length||it(e)&&!Object.keys(e).length},lt={nullOrUndefined:nt,object:it,number:function(e){return et(e)===Number&&!Number.isNaN(e)},string:rt,boolean:function(e){return et(e)===Boolean},function:function(e){return et(e)===Function},array:at,weakMap:function(e){return tt(e,WeakMap)},nodeList:st,element:function(e){return tt(e,Element)},textNode:function(e){return et(e)===Text},event:function(e){return tt(e,Event)},keyboardEvent:function(e){return tt(e,KeyboardEvent)},cue:function(e){return tt(e,window.TextTrackCue)||tt(e,window.VTTCue)},track:function(e){return tt(e,TextTrack)||!nt(e)&&rt(e.kind)},promise:function(e){return tt(e,Promise)},url:function(e){if(tt(e,window.URL))return!0;if(!rt(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!ot(new URL(t).hostname)}catch(e){return!1}},empty:ot},ct=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function ut(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!lt.empty(t)&<.function(n)){var o=t.split(" "),l=s;ct&&(l={passive:a,capture:s}),o.forEach(function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)})}}function dt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,t,n,!0,i,r)}function ht(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,t,n,!1,i,r)}function pt(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ut.call(this,e,n,function s(){ht(e,n,s,r,a);for(var o=arguments.length,l=new Array(o),c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(lt.element(e)&&!lt.empty(t)){var r=new CustomEvent(t,{bubbles:n,detail:Object.assign({},i,{plyr:this})});e.dispatchEvent(r)}}function ft(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)})}function gt(e,t){lt.element(e)&&!lt.empty(t)&&Object.entries(t).filter(function(e){var t=o(e,2)[1];return!lt.nullOrUndefined(t)}).forEach(function(t){var n=o(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)})}function yt(e,t,n){var i=document.createElement(e);return lt.object(t)&>(i,t),lt.string(n)&&(i.innerText=n),i}function vt(e,t,n,i){lt.element(t)&&t.appendChild(yt(e,n,i))}function bt(e){lt.nodeList(e)||lt.array(e)?Array.from(e).forEach(bt):lt.element(e)&<.element(e.parentNode)&&e.parentNode.removeChild(e)}function kt(e){if(lt.element(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function wt(e,t){return lt.element(t)&<.element(t.parentNode)&<.element(e)?(t.parentNode.replaceChild(e,t),e):null}function _t(e,t){if(!lt.string(e)||lt.empty(e))return{};var n={},i=t;return e.split(",").forEach(function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),s=a[0],o=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":lt.object(i)&<.string(i.class)&&(i.class+=" ".concat(r)),n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[s]=o}}),n}function Tt(e,t){if(lt.element(e)){var n=t;lt.boolean(n)||(n=!e.hidden),n?e.setAttribute("hidden",""):e.removeAttribute("hidden")}}function Et(e,t,n){if(lt.nodeList(e))return Array.from(e).map(function(e){return Et(e,t,n)});if(lt.element(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function St(e,t){return lt.element(e)&&e.classList.contains(t)}function Ct(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function xt(e){return this.elements.container.querySelectorAll(e)}function At(e){return this.elements.container.querySelector(e)}function Pt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];lt.element(e)&&(e.focus({preventScroll:!0}),t&&Et(e,this.config.classNames.tabFocus))}var Ot,Mt,Nt,Lt=(Ot=document.createElement("span"),Mt={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Nt=Object.keys(Mt).find(function(e){return void 0!==Ot.style[e]}),!!lt.string(Nt)&&Mt[Nt]);function It(e){setTimeout(function(){try{Tt(e,!0),e.offsetHeight,Tt(e,!1)}catch(e){}},0)}var jt,Rt={isIE:!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},Dt={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},Ft={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=Rt.isIPhone&&n&&Ft.playsinline,r=Ft[e]||"html5"!==t;return{api:r,ui:r&&Ft.rangeInput&&("video"!==e||!Rt.isIPhone||i)}},pip:!(Rt.isIPhone||!lt.function(yt("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||yt("video").disablePictureInPicture)),airplay:lt.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(lt.empty(e))return!1;var t=o(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Dt).includes(n)&&(n+='; codecs="'.concat(Dt[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(jt=document.createElement("input"),jt.type="range","range"===jt.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==Lt,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches};function Bt(e){return!!(lt.array(e)||lt.string(e)&&e.includes(":"))&&(lt.array(e)?e:e.split(":")).map(Number).every(lt.number)}function Ht(e){var t=function(e){return Bt(e)?e.split(":").map(Number):null},n=t(e);return null===n&&(n=t(this.config.ratio)),null===n&&!lt.empty(this.embed)&<.string(this.embed.ratio)&&(n=t(this.embed.ratio)),n}function qt(e){if(!this.isVideo)return{};var t=Ht.call(this,e),n=o(lt.array(t)?t:[0,0],2),i=100/n[0]*n[1];if(this.elements.wrapper.style.paddingBottom="".concat(i,"%"),this.isVimeo&&this.supported.ui){var r=(240-i)/4.8;this.media.style.transform="translateY(-".concat(r,"%)")}else this.isHTML5&&this.elements.wrapper.classList.toggle(this.config.classNames.videoFixedRatio,null!==t);return{padding:i,ratio:t}}var Ut={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter(function(t){var n=t.getAttribute("type");return!!lt.empty(n)||Ft.mime.call(e,n)}):[]},getQualityOptions:function(){return Ut.getSources.call(this).map(function(e){return Number(e.getAttribute("size"))}).filter(Boolean)},extend:function(){if(this.isHTML5){var e=this;qt.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=Ut.getSources.call(e).find(function(t){return t.getAttribute("src")===e.source});return t&&Number(t.getAttribute("size"))},set:function(t){var n=Ut.getSources.call(e).find(function(e){return Number(e.getAttribute("size"))===t});if(n){var i=e.media,r=i.currentTime,a=i.paused,s=i.preload,o=i.readyState;e.media.src=n.getAttribute("src"),("none"!==s||o)&&(e.once("loadedmetadata",function(){e.currentTime=r,a||e.play()}),e.media.load()),mt.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(bt(Ut.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function Vt(e){return lt.array(e)?e.filter(function(t,n){return e.indexOf(t)===n}):e}function zt(e,t){return t.split(".").reduce(function(e,t){return e&&e[t]},e)}function Wt(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1"),"g"),n.toString())}function Jt(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}function Yt(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return(e=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return e=Xt(e,"-"," "),e=Xt(e,"_"," "),Xt(e=Jt(e)," ","")}(e)).charAt(0).toLowerCase()+e.slice(1)}function $t(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var Gt={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Qt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(lt.empty(e)||lt.empty(t))return"";var n=zt(t.i18n,e);if(lt.empty(n))return Object.keys(Gt).includes(e)?Gt[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach(function(e){var t=o(e,2),i=t[0],r=t[1];n=Xt(n,i,r)}),n},Zt=function(){function e(t){i(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return a(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(lt.empty(n))return null;var i=JSON.parse(n);return lt.string(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&<.object(t)){var n=this.get();lt.empty(n)&&(n={}),Wt(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function en(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise(function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)}),r.addEventListener("error",function(){throw new Error(r.status)}),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}})}function tn(e,t){if(lt.string(e)){var n=lt.string(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Zt.supported,s=document.createElement("div");if(s.setAttribute("hidden",""),n&&s.setAttribute("id",t),a){var o=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==o){var l=JSON.parse(o);r(s,l.content)}}en(e).then(function(e){lt.empty(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(s,e))}).catch(function(){})}}}var nn=function(e){return Math.trunc(e/60/60%60,10)},rn=function(e){return Math.trunc(e/60%60,10)},an=function(e){return Math.trunc(e%60,10)};function sn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!lt.number(e))return sn(null,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=nn(e),a=rn(e),s=an(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(s))}var on={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||Rt.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=At.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:xt.call(this,this.config.selectors.buttons.play),pause:At.call(this,this.config.selectors.buttons.pause),restart:At.call(this,this.config.selectors.buttons.restart),rewind:At.call(this,this.config.selectors.buttons.rewind),fastForward:At.call(this,this.config.selectors.buttons.fastForward),mute:At.call(this,this.config.selectors.buttons.mute),pip:At.call(this,this.config.selectors.buttons.pip),airplay:At.call(this,this.config.selectors.buttons.airplay),settings:At.call(this,this.config.selectors.buttons.settings),captions:At.call(this,this.config.selectors.buttons.captions),fullscreen:At.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=At.call(this,this.config.selectors.progress),this.elements.inputs={seek:At.call(this,this.config.selectors.inputs.seek),volume:At.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:At.call(this,this.config.selectors.display.buffer),currentTime:At.call(this,this.config.selectors.display.currentTime),duration:At.call(this,this.config.selectors.display.duration)},lt.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=on.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");gt(r,Wt(t,{role:"presentation",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),s="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",s),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Qt(e,this.config);return yt("span",Object.assign({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")}),n)},createBadge:function(e){if(lt.empty(e))return null;var t=yt("span",{class:this.config.classNames.menu.value});return t.appendChild(yt("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=Object.assign({},t),i=Yt(e),r={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(function(e){Object.keys(n).includes(e)&&(r[e]=n[e],delete n[e])}),"button"!==r.element||Object.keys(n).includes("type")||(n.type="button"),Object.keys(n).includes("class")?n.class.includes(this.config.classNames.control)||(n.class+=" ".concat(this.config.classNames.control)):n.class=this.config.classNames.control,e){case"play":r.toggle=!0,r.label="play",r.labelPressed="pause",r.icon="play",r.iconPressed="pause";break;case"mute":r.toggle=!0,r.label="mute",r.labelPressed="unmute",r.icon="volume",r.iconPressed="muted";break;case"captions":r.toggle=!0,r.label="enableCaptions",r.labelPressed="disableCaptions",r.icon="captions-off",r.iconPressed="captions-on";break;case"fullscreen":r.toggle=!0,r.label="enterFullscreen",r.labelPressed="exitFullscreen",r.icon="enter-fullscreen",r.iconPressed="exit-fullscreen";break;case"play-large":n.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",r.label="play",r.icon="play";break;default:lt.empty(r.label)&&(r.label=i),lt.empty(r.icon)&&(r.icon=e)}var a=yt(r.element);return r.toggle?(a.appendChild(on.createIcon.call(this,r.iconPressed,{class:"icon--pressed"})),a.appendChild(on.createIcon.call(this,r.icon,{class:"icon--not-pressed"})),a.appendChild(on.createLabel.call(this,r.labelPressed,{class:"label--pressed"})),a.appendChild(on.createLabel.call(this,r.label,{class:"label--not-pressed"}))):(a.appendChild(on.createIcon.call(this,r.icon)),a.appendChild(on.createLabel.call(this,r.label))),Wt(n,_t(this.config.selectors.buttons[i],n)),gt(a,n),"play"===i?(lt.array(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=yt("input",Wt(_t(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Qt(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,on.updateRangeFill.call(this,n),Ze.setup(n),n},createProgress:function(e,t){var n=yt("progress",Wt(_t(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(yt("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Qt(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e){var t=_t(this.config.selectors.display[e]),n=yt("div",Wt(t,{class:"".concat(this.config.classNames.display.time," ").concat(t.class?t.class:"").trim(),"aria-label":Qt(e,this.config)}),"00:00");return this.elements.display[e]=n,n},bindMenuItemShortcuts:function(e,t){var n=this;dt(e,"keydown keyup",function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ct(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))on.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,lt.element(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,lt.element(r)||(r=e.parentNode.lastElementChild)),Pt.call(n,r,!0))}},!1),dt(e,"keyup",function(e){13===e.which&&on.focusFirstMenuItem.call(n,null,!0)})},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,s=e.badge,o=void 0===s?null:s,l=e.checked,c=void 0!==l&&l,u=_t(this.config.selectors.inputs[r]),d=yt("button",Wt(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),h=yt("span");h.innerHTML=a,lt.element(o)&&h.appendChild(o),d.appendChild(h),Object.defineProperty(d,"checked",{enumerable:!0,get:function(){return"true"===d.getAttribute("aria-checked")},set:function(e){e&&Array.from(d.parentNode.children).filter(function(e){return Ct(e,'[role="menuitemradio"]')}).forEach(function(e){return e.setAttribute("aria-checked","false")}),d.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(d,"click keyup",function(e){if(!lt.keyboardEvent(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),d.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}on.showMenuPanel.call(t,"home",lt.keyboardEvent(e))}},r,!1),on.bindMenuItemShortcuts.call(this,d,r),i.appendChild(d)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return lt.number(e)?sn(e,nn(this.duration)>0,t):e},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];lt.element(e)&<.number(t)&&(e.innerText=on.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(lt.element(this.elements.inputs.volume)&&on.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),lt.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;lt.element(e)&&(e.value=t,on.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&<.event(e)){var n,i,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=this.currentTime,i=this.duration,r=0===n||0===i||Number.isNaN(n)||Number.isNaN(i)?0:(n/i*100).toFixed(2),"timeupdate"===e.type&&on.setRange.call(this,this.elements.inputs.seek,r);break;case"playing":case"progress":!function(e,n){var i=lt.number(n)?n:0,r=lt.element(e)?e:t.elements.display.buffer;if(lt.element(r)){r.value=i;var a=r.getElementsByTagName("span")[0];lt.element(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lt.event(e)?e.target:e;if(lt.element(t)&&"range"===t.getAttribute("type")){if(Ct(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=on.formatTime(this.currentTime),i=on.formatTime(this.duration),r=Qt("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ct(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);Rt.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&<.element(this.elements.inputs.seek)&<.element(this.elements.display.seekTooltip)&&0!==this.duration){var n=0,i=this.elements.progress.getBoundingClientRect(),r="".concat(this.config.classNames.tooltip,"--visible"),a=function(e){Et(t.elements.display.seekTooltip,r,e)};if(this.touch)a(!1);else{if(lt.event(e))n=100/i.width*(e.pageX-i.left);else{if(!St(this.elements.display.seekTooltip,r))return;n=parseFloat(this.elements.display.seekTooltip.style.left,10)}n<0?n=0:n>100&&(n=100),on.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*n),this.elements.display.seekTooltip.style.left="".concat(n,"%"),lt.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!lt.element(this.elements.display.duration)&&this.config.invertTime;on.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||on.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Tt(this.elements.display.currentTime,!0),void Tt(this.elements.progress,!0);lt.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=lt.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&on.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&on.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),on.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Tt(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=lt.empty(n)?this[e]:n,lt.empty(r)&&(r=this.config[e].default),!lt.empty(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(lt.element(a)||(a=i&&i.querySelector('[role="menu"]')),lt.element(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=on.getLabel.call(this,e,r);var s=a&&a.querySelector('[value="'.concat(r,'"]'));lt.element(s)&&(s.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Qt("normal",this.config):"".concat(t,"×");case"quality":if(lt.number(t)){var n=Qt("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return Jt(t);case"captions":return un.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(lt.element(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');lt.array(e)&&(this.options.quality=Vt(e).filter(function(e){return t.config.quality.options.includes(e)}));var i=!lt.empty(this.options.quality)&&this.options.quality.length>1;if(on.toggleMenuButton.call(this,"quality",i),kt(n),on.checkMenu.call(this),i){var r=function(e){var n=Qt("qualityBadge.".concat(e),t.config);return n.length?on.createBadge.call(t,n):null};this.options.quality.sort(function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1}).forEach(function(e){on.createMenuItem.call(t,{value:e,list:n,type:"quality",title:on.getLabel.call(t,"quality",e),badge:r(e)})}),on.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(lt.element(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=un.getTracks.call(this),i=Boolean(n.length);if(on.toggleMenuButton.call(this,"captions",i),kt(t),on.checkMenu.call(this),i){var r=n.map(function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:un.getLabel.call(e,n),badge:n.language&&on.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}});r.unshift({value:-1,checked:!this.captions.toggled,title:Qt("disabled",this.config),list:t,type:"language"}),r.forEach(on.createMenuItem.bind(this)),on.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(e){var t=this;if(lt.element(this.elements.settings.panels.speed)){var n=this.elements.settings.panels.speed.querySelector('[role="menu"]');lt.array(e)?this.options.speed=e:(this.isHTML5||this.isVimeo)&&(this.options.speed=[.5,.75,1,1.25,1.5,1.75,2]),this.options.speed=this.options.speed.filter(function(e){return t.config.speed.options.includes(e)});var i=!lt.empty(this.options.speed)&&this.options.speed.length>1;on.toggleMenuButton.call(this,"speed",i),kt(n),on.checkMenu.call(this),i&&(this.options.speed.forEach(function(e){on.createMenuItem.call(t,{value:e,list:n,type:"speed",title:on.getLabel.call(t,"speed",e)})}),on.updateSetting.call(this,"speed",n))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!lt.empty(e)&&Object.values(e).some(function(e){return!e.hidden});Tt(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;lt.element(n)||(n=Object.values(this.elements.settings.panels).find(function(e){return!e.hidden}));var i=n.querySelector('[role^="menuitem"]');Pt.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(lt.element(t)&<.element(n)){var i=t.hidden,r=i;if(lt.boolean(e))r=e;else if(lt.keyboardEvent(e)&&27===e.which)r=!1;else if(lt.event(e)){var a=t.contains(e.target);if(a||!a&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Tt(t,!r),Et(this.elements.container,this.config.classNames.menu.open,r),r&<.keyboardEvent(e)?on.focusFirstMenuItem.call(this,null,!0):r||i||Pt.call(this,n,lt.keyboardEvent(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return bt(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=document.getElementById("plyr-settings-".concat(this.id,"-").concat(t));if(lt.element(i)){var r=i.parentNode,a=Array.from(r.children).find(function(e){return!e.hidden});if(Ft.transitions&&!Ft.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var s=on.getMenuSize.call(this,i);dt.call(this,r,Lt,function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",ht.call(e,r,Lt,t))}),r.style.width="".concat(s.width,"px"),r.style.height="".concat(s.height,"px")}Tt(a,!0),Tt(i,!1),on.focusFirstMenuItem.call(this,i,n)}},setDownloadLink:function(){var e=this.elements.buttons.download;lt.element(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=yt("div",_t(this.config.selectors.controls.wrapper));if(this.config.controls.includes("restart")&&n.appendChild(on.createButton.call(this,"restart")),this.config.controls.includes("rewind")&&n.appendChild(on.createButton.call(this,"rewind")),this.config.controls.includes("play")&&n.appendChild(on.createButton.call(this,"play")),this.config.controls.includes("fast-forward")&&n.appendChild(on.createButton.call(this,"fast-forward")),this.config.controls.includes("progress")){var i=yt("div",_t(this.config.selectors.progress));if(i.appendChild(on.createRange.call(this,"seek",{id:"plyr-seek-".concat(e.id)})),i.appendChild(on.createProgress.call(this,"buffer")),this.config.tooltips.seek){var r=yt("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(r),this.elements.display.seekTooltip=r}this.elements.progress=i,n.appendChild(this.elements.progress)}if(this.config.controls.includes("current-time")&&n.appendChild(on.createTime.call(this,"currentTime")),this.config.controls.includes("duration")&&n.appendChild(on.createTime.call(this,"duration")),this.config.controls.includes("mute")||this.config.controls.includes("volume")){var a=yt("div",{class:"plyr__volume"});if(this.config.controls.includes("mute")&&a.appendChild(on.createButton.call(this,"mute")),this.config.controls.includes("volume")){var s={max:1,step:.05,value:this.config.volume};a.appendChild(on.createRange.call(this,"volume",Wt(s,{id:"plyr-volume-".concat(e.id)}))),this.elements.volume=a}n.appendChild(a)}if(this.config.controls.includes("captions")&&n.appendChild(on.createButton.call(this,"captions")),this.config.controls.includes("settings")&&!lt.empty(this.config.settings)){var o=yt("div",{class:"plyr__menu",hidden:""});o.appendChild(on.createButton.call(this,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var l=yt("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),c=yt("div"),u=yt("div",{id:"plyr-settings-".concat(e.id,"-home")}),d=yt("div",{role:"menu"});u.appendChild(d),c.appendChild(u),this.elements.settings.panels.home=u,this.config.settings.forEach(function(n){var i=yt("button",Wt(_t(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));on.bindMenuItemShortcuts.call(t,i,n),dt(i,"click",function(){on.showMenuPanel.call(t,n,!1)});var r=yt("span",null,Qt(n,t.config)),a=yt("span",{class:t.config.classNames.menu.value});a.innerHTML=e[n],r.appendChild(a),i.appendChild(r),d.appendChild(i);var s=yt("div",{id:"plyr-settings-".concat(e.id,"-").concat(n),hidden:""}),o=yt("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});o.appendChild(yt("span",{"aria-hidden":!0},Qt(n,t.config))),o.appendChild(yt("span",{class:t.config.classNames.hidden},Qt("menuBack",t.config))),dt(s,"keydown",function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),on.showMenuPanel.call(t,"home",!0))},!1),dt(o,"click",function(){on.showMenuPanel.call(t,"home",!1)}),s.appendChild(o),s.appendChild(yt("div",{role:"menu"})),c.appendChild(s),t.elements.settings.buttons[n]=i,t.elements.settings.panels[n]=s}),l.appendChild(c),o.appendChild(l),n.appendChild(o),this.elements.settings.popup=l,this.elements.settings.menu=o}if(this.config.controls.includes("pip")&&Ft.pip&&n.appendChild(on.createButton.call(this,"pip")),this.config.controls.includes("airplay")&&Ft.airplay&&n.appendChild(on.createButton.call(this,"airplay")),this.config.controls.includes("download")){var h={element:"a",href:this.download,target:"_blank"},p=this.config.urls.download;!lt.url(p)&&this.isEmbed&&Wt(h,{icon:"logo-".concat(this.provider),label:this.provider}),n.appendChild(on.createButton.call(this,"download",h))}return this.config.controls.includes("fullscreen")&&n.appendChild(on.createButton.call(this,"fullscreen")),this.config.controls.includes("play-large")&&this.elements.container.appendChild(on.createButton.call(this,"play-large")),this.elements.controls=n,this.isHTML5&&on.setQualityMenu.call(this,Ut.getQualityOptions.call(this)),on.setSpeedMenu.call(this),n},inject:function(){var e=this;if(this.config.loadSprite){var t=on.getIconUrl.call(this);t.cors&&tn(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;lt.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),lt.element(this.config.controls)||lt.string(this.config.controls)?n=this.config.controls:(n=on.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:un.getLabel.call(this)}),r=!1);var a,s=function(e){var t=e;return Object.entries(i).forEach(function(e){var n=o(e,2),i=n[0],r=n[1];t=Xt(t,"{".concat(i,"}"),r)}),t};if(r&&(lt.string(this.config.controls)?n=s(n):lt.element(n)&&(n.innerHTML=s(n.innerHTML))),lt.string(this.config.selectors.controls.container)&&(a=document.querySelector(this.config.selectors.controls.container)),lt.element(a)||(a=this.elements.container),a[lt.element(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),lt.element(this.elements.controls)||on.findElements.call(this),!lt.empty(this.elements.buttons)){var l=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return St(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Et(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach(function(e){lt.array(e)||lt.nodeList(e)?Array.from(e).filter(Boolean).forEach(l):l(e)})}if(Rt.isEdge&&It(a),this.config.tooltips.controls){var c=this.config,u=c.classNames,d=c.selectors,h="".concat(d.controls.wrapper," ").concat(d.labels," .").concat(u.hidden),p=xt.call(this,h);Array.from(p).forEach(function(t){Et(t,e.config.classNames.hidden,!1),Et(t,e.config.classNames.tooltip,!0)})}}};function ln(e){var t=e;if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=document.createElement("a");n.href=t,t=n.href}try{return new URL(t)}catch(e){return null}}function cn(e){var t=new URLSearchParams;return lt.object(e)&&Object.entries(e).forEach(function(e){var n=o(e,2),i=n[0],r=n[1];t.set(i,r)}),t}var un={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!Ft.textTracks)lt.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&on.setCaptionsMenu.call(this);else{var e,t;if(lt.element(this.elements.captions)||(this.elements.captions=yt("div",_t(this.config.selectors.captions)),e=this.elements.captions,t=this.elements.wrapper,lt.element(e)&<.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),Rt.isIE&&window.URL){var n=this.media.querySelectorAll("track");Array.from(n).forEach(function(e){var t=e.getAttribute("src"),n=ln(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&en(t,"blob").then(function(t){e.setAttribute("src",window.URL.createObjectURL(t))}).catch(function(){bt(e)})})}var i=Vt((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map(function(e){return e.split("-")[0]})),r=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===r)r=o(i,1)[0];var a=this.storage.get("captions");if(lt.boolean(a)||(a=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:a,language:r,languages:i}),this.isHTML5){var s=this.config.captions.update?"addtrack removetrack":"removetrack";dt.call(this,this.media.textTracks,s,un.update.bind(this))}setTimeout(un.update.bind(this),0)}},update:function(){var e=this,t=un.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,s=n.currentTrackNode,o=Boolean(t.find(function(e){return e.language===r}));this.isHTML5&&this.isVideo&&t.filter(function(e){return!a.get(e)}).forEach(function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),t.mode="hidden",dt.call(e,t,"cuechange",function(){return un.updateCues.call(e)})}),(o&&this.language!==r||!t.includes(s))&&(un.setLanguage.call(this,r),un.toggle.call(this,i&&o)),Et(this.elements.container,this.config.classNames.captions.enabled,!lt.empty(t)),(this.config.controls||[]).includes("settings")&&this.config.settings.includes("captions")&&on.setCaptionsMenu.call(this)},toggle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var n=this.captions.toggled,i=this.config.classNames.captions.active,r=lt.nullOrUndefined(e)?!n:e;if(r!==n){if(t||(this.captions.active=r,this.storage.set({captions:r})),!this.language&&r&&!t){var a=un.getTracks.call(this),s=un.findTrack.call(this,[this.captions.language].concat(l(this.captions.languages)),!0);return this.captions.language=s.language,void un.set.call(this,a.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=r),Et(this.elements.container,i,r),this.captions.toggled=r,on.updateSetting.call(this,"captions"),mt.call(this,this.media,r?"captionsenabled":"captionsdisabled")}}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=un.getTracks.call(this);if(-1!==e)if(lt.number(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=(i||{}).language;this.captions.currentTrackNode=i,on.updateSetting.call(this,"captions"),t||(this.captions.language=r,this.storage.set({language:r})),this.isVimeo&&this.embed.enableTextTrack(r),mt.call(this,this.media,"languagechange")}un.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&un.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else un.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(lt.string(e)){var n=e.toLowerCase();this.captions.language=n;var i=un.getTracks.call(this),r=un.findTrack.call(this,[n]);un.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Array.from((this.media||{}).textTracks||[]).filter(function(n){return!e.isHTML5||t||e.captions.meta.has(n)}).filter(function(e){return["captions","subtitles"].includes(e.kind)})},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=un.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},s=Array.from(r).sort(function(e,t){return a(t)-a(e)});return e.every(function(e){return!(t=s.find(function(t){return t.language===e}))}),t||(i?s[0]:void 0)},getCurrentTrack:function(){return un.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!lt.track(t)&&Ft.textTracks&&this.captions.toggled&&(t=un.getCurrentTrack.call(this)),lt.track(t)?lt.empty(t.label)?lt.empty(t.language)?Qt("enabled",this.config):e.language.toUpperCase():t.label:Qt("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(lt.element(this.elements.captions))if(lt.nullOrUndefined(e)||Array.isArray(e)){var t=e;if(!t){var n=un.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map(function(e){return e.getCueAsHTML()}).map($t)}var i=t.map(function(e){return e.trim()}).join("\n");if(i!==this.elements.captions.innerHTML){kt(this.elements.captions);var r=yt("span",_t(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),mt.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},dn={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.5.3/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240]},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption",menu:{quality:".js-plyr__menu__list--quality"}},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},keys:{google:null},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1},youtube:{noCookie:!1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},hn="picture-in-picture",pn="inline",mn={html5:"html5",youtube:"youtube",vimeo:"vimeo"},fn={audio:"audio",video:"video"};var gn=function(){},yn=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];i(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return a(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):gn}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):gn}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):gn}}]),e}();function vn(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;lt.element(e)&&(e.pressed=this.active),mt.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0),Rt.isIos||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(lt.element(e)){var n=xt.call(this,"button:not(:disabled), input:not(:disabled), [tabindex]"),i=n[0],r=n[n.length-1];ut.call(this,this.elements.container,"keydown",function(e){if("Tab"===e.key&&9===e.keyCode){var t=document.activeElement;t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}},t,!1)}}.call(this.player,this.target,this.active)}}function bn(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(t?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=t?"hidden":"",Et(this.target,this.player.config.classNames.fullscreen.fallback,t),Rt.isIos){var n=document.head.querySelector('meta[name="viewport"]'),i="viewport-fit=cover";n||(n=document.createElement("meta")).setAttribute("name","viewport");var r=lt.string(n.content)&&n.content.includes(i);t?(this.cleanupViewport=!r,r||(n.content+=",".concat(i))):this.cleanupViewport&&(n.content=n.content.split(",").filter(function(e){return e.trim()!==i}).join(",")),setTimeout(function(){return It(e.target)},100)}vn.call(this)}var kn=function(){function e(t){var n=this;i(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,dt.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),function(){vn.call(n)}),dt.call(this.player,this.player.elements.container,"dblclick",function(e){lt.element(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()}),this.update()}return a(e,[{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");Et(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(Rt.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?bn.call(this,!0):this.prefix?lt.empty(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen())}},{key:"exit",value:function(){if(this.enabled)if(Rt.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),this.player.play();else if(!e.native||this.forceFallback)bn.call(this,!1);else if(this.prefix){if(!lt.empty(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){return!!this.enabled&&(!e.native||this.forceFallback?St(this.target,this.player.config.classNames.fullscreen.fallback):(this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement)===this.target)}},{key:"target",get:function(){return Rt.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(lt.function(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some(function(t){return!(!lt.function(document["".concat(t,"ExitFullscreen")])&&!lt.function(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)}),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}();function wn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise(function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})})}var _n={addStyleHook:function(){Et(this.elements.container,this.config.selectors.container.replace(".",""),!0),Et(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void _n.toggleNativeControls.call(this,!0);lt.element(this.elements.controls)||(on.inject.call(this),this.listeners.controls()),_n.toggleNativeControls.call(this),this.isHTML5&&un.setup.call(this),this.volume=null,this.muted=null,this.speed=null,this.loop=null,this.quality=null,on.updateVolume.call(this),on.timeUpdate.call(this),_n.checkPlaying.call(this),Et(this.elements.container,this.config.classNames.pip.supported,Ft.pip&&this.isHTML5&&this.isVideo),Et(this.elements.container,this.config.classNames.airplay.supported,Ft.airplay&&this.isHTML5),Et(this.elements.container,this.config.classNames.isIos,Rt.isIos),Et(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(function(){mt.call(e,e.media,"ready")},0),_n.setTitle.call(this),this.poster&&_n.setPoster.call(this,this.poster,!1).catch(function(){}),this.config.duration&&on.durationUpdate.call(this)},setTitle:function(){var e=Qt("play",this.config);if(lt.string(this.config.title)&&!lt.empty(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach(function(t){t.setAttribute("aria-label",e)}),this.isEmbed){var t=At.call(this,"iframe");if(!lt.element(t))return;var n=lt.empty(this.config.title)?"video":this.config.title,i=Qt("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){Et(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this;return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]||!this.poster?(this.media.setAttribute("poster",e),function(){var e=this;return new Promise(function(t){return e.ready?setTimeout(t,0):dt.call(e,e.elements.container,"ready",t)}).then(function(){})}.call(this).then(function(){return wn(e)}).catch(function(n){throw e===t.poster&&_n.togglePoster.call(t,!1),n}).then(function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),_n.togglePoster.call(t,!0),e})):Promise.reject(new Error("Poster already set"))},checkPlaying:function(e){var t=this;Et(this.elements.container,this.config.classNames.playing,this.playing),Et(this.elements.container,this.config.classNames.paused,this.paused),Et(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(function(e){e.pressed=t.playing}),lt.event(e)&&"timeupdate"===e.type||_n.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(function(){Et(t.elements.container,t.config.classNames.loading,t.loading),_n.toggleControls.call(t)},this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}}},Tn=function(){function e(t){i(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return a(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&<.number(i)){if(r){var s=document.activeElement;if(lt.element(s)){var o=t.config.selectors.editable;if(s!==n.inputs.seek&&Ct(s,o))return;if(32===e.which&&Ct(s,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||t.togglePlay();break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){on.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,Et(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,Et(xt.call(t,".".concat(i)),i,!1),this.focusTimer=setTimeout(function(){var e=document.activeElement;n.container.contains(e)&&Et(document.activeElement,t.config.classNames.tabFocus,!0)},10)}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&ut.call(t,window,"keydown keyup",this.handleKey,e,!1),ut.call(t,document.body,"click",this.toggleMenu,e),pt.call(t,document.body,"touchstart",this.firstTouch),ut.call(t,document.body,"keydown focus blur",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this,t=this.player,n=t.config,i=t.elements,r=t.timers;!n.keyboard.global&&n.keyboard.focused&&dt.call(t,i.container,"keydown keyup",this.handleKey,!1),dt.call(t,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",function(e){var n=i.controls;n&&"enterfullscreen"===e.type&&(n.pressed=!1,n.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(e.type)&&(_n.toggleControls.call(t,!0),a=t.touch?3e3:2e3),clearTimeout(r.controls),r.controls=setTimeout(function(){return _n.toggleControls.call(t,!1)},a)});var a=function(e){if(!e)return qt.call(t);var n=i.container.getBoundingClientRect(),r=n.width,a=n.height;return qt.call(t,"".concat(r,":").concat(a))},s=function(){window.clearTimeout(r.resized),r.resized=window.setTimeout(a,50)};dt.call(t,i.container,"enterfullscreen exitfullscreen",function(n){var r=t.fullscreen,l=r.target,c=r.usingNative;if(t.isEmbed&&l===i.container){var u="enterfullscreen"===n.type,d=a(u);d.padding;!function(n,i,r){if(t.isVimeo){var a=t.elements.wrapper.firstChild,s=o(n,2)[1],l=o(Ht.call(e),2),c=l[0],u=l[1];a.style.maxWidth=r?"".concat(s/u*c,"px"):null,a.style.margin=r?"0 auto":null}}(d.ratio,0,u),c||(u?dt.call(t,window,"resize",s):ht.call(t,window,"resize",s))}})}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(dt.call(t,t.media,"timeupdate seeking seeked",function(e){return on.timeUpdate.call(t,e)}),dt.call(t,t.media,"durationchange loadeddata loadedmetadata",function(e){return on.durationUpdate.call(t,e)}),dt.call(t,t.media,"canplay loadeddata",function(){Tt(n.volume,!t.hasAudio),Tt(n.buttons.mute,!t.hasAudio)}),dt.call(t,t.media,"ended",function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&t.restart()}),dt.call(t,t.media,"progress playing seeking seeked",function(e){return on.updateProgress.call(t,e)}),dt.call(t,t.media,"volumechange",function(e){return on.updateVolume.call(t,e)}),dt.call(t,t.media,"playing play pause ended emptied timeupdate",function(e){return _n.checkPlaying.call(t,e)}),dt.call(t,t.media,"waiting canplay seeked playing",function(e){return _n.checkLoading.call(t,e)}),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=At.call(t,".".concat(t.config.classNames.video));if(!lt.element(i))return;dt.call(t,n.container,"click",function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,t.play,"play")):e.proxy(r,t.togglePlay,"play")))})}t.supported.ui&&t.config.disableContextMenu&&dt.call(t,n.wrapper,"contextmenu",function(e){e.preventDefault()},!1),dt.call(t,t.media,"volumechange",function(){t.storage.set({volume:t.volume,muted:t.muted})}),dt.call(t,t.media,"ratechange",function(){on.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})}),dt.call(t,t.media,"qualitychange",function(e){on.updateSetting.call(t,"quality",null,e.detail.quality)}),dt.call(t,t.media,"ready qualitychange",function(){on.setDownloadLink.call(t)});var r=t.config.events.concat(["keyup","keydown"]).join(" ");dt.call(t,t.media,r,function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),mt.call(t,n.container,e.type,!0,r)})}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;lt.function(r)&&(a=r.call(i,e)),a&<.function(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=this.player,o=s.config.listeners[i],l=lt.function(o);dt.call(s,e,t,function(e){return r.proxy(e,n,i)},a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=Rt.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach(function(n){e.bind(n,"click",t.togglePlay,"play")}),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",function(){t.muted=!t.muted},"mute"),this.bind(n.buttons.captions,"click",function(){return t.toggleCaptions()}),this.bind(n.buttons.download,"click",function(){mt.call(t,t.media,"download")},"download"),this.bind(n.buttons.fullscreen,"click",function(){t.fullscreen.toggle()},"fullscreen"),this.bind(n.buttons.pip,"click",function(){t.pip="toggle"},"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",function(e){e.stopPropagation(),on.toggleMenu.call(t,e)}),this.bind(n.buttons.settings,"keyup",function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),on.toggleMenu.call(t,e)):on.focusFirstMenuItem.call(t,null,!0))},null,!1),this.bind(n.settings.menu,"keydown",function(e){27===e.which&&on.toggleMenu.call(t,e)}),this.bind(n.inputs.seek,"mousedown mousemove",function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)}),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!lt.keyboardEvent(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),t.play()):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}}),Rt.isIos){var r=xt.call(t,'input[type="range"]');Array.from(r).forEach(function(t){return e.bind(t,i,function(e){return It(e.target)})})}this.bind(n.inputs.seek,i,function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");lt.empty(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration},"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",function(e){return on.updateSeekTooltip.call(t,e)}),this.bind(n.progress,"mousemove touchmove",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)}),this.bind(n.progress,"mouseleave click",function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)}),this.bind(n.progress,"mousedown touchstart",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)}),this.bind(n.progress,"mouseup touchend",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)}),Rt.isWebkit&&Array.from(xt.call(t,'input[type="range"]')).forEach(function(n){e.bind(n,"input",function(e){return on.updateRangeFill.call(t,e.target)})}),t.config.toggleInvert&&!lt.element(n.display.duration)&&this.bind(n.display.currentTime,"click",function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,on.timeUpdate.call(t))}),this.bind(n.inputs.volume,i,function(e){t.volume=e.target.value},"volume"),this.bind(n.controls,"mouseenter mouseleave",function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(n.controls,"focusin",function(){var n=t.config,i=t.elements,r=t.timers;Et(i.controls,n.classNames.noTransition,!0),_n.toggleControls.call(t,!0),setTimeout(function(){Et(i.controls,n.classNames.noTransition,!1)},0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout(function(){return _n.toggleControls.call(t,!1)},a)}),this.bind(n.inputs.volume,"wheel",function(e){var n=e.webkitDirectionInvertedFromDevice,i=o([e.deltaX,-e.deltaY].map(function(e){return n?-e:e}),2),r=i[0],a=i[1],s=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(s/50);var l=t.media.volume;(1===s&&l<1||-1===s&&l>0)&&e.preventDefault()},"volume",!1)}}]),e}(),En=t(function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function s(t,n,i,r){var a,o,l=document,c=i.async,u=(i.numRetries||0)+1,d=i.before||e,h=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(t)?((o=l.createElement("link")).rel="stylesheet",o.href=h,(a="hideFocus"in o)&&o.relList&&(a=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg)$)/.test(t)?(o=l.createElement("img")).src=h:((o=l.createElement("script")).src=t,o.async=void 0===c||c),o.onload=o.onerror=o.onbeforeload=function(e){var l=e.type[0];if(a)try{o.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)0&&void 0!==arguments[0]&&arguments[0]))return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval(function(){var t=sn(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Qt("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)},100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.setVolume(this.player.volume),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,function(e){return t.onAdError(e)}),Object.keys(google.ima.AdEvent.Type).forEach(function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],function(e){return t.onAdEvent(e)})}),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;lt.empty(this.cuePoints)||this.cuePoints.forEach(function(t){if(0!==t&&-1!==t&&t1?n-1:0),r=1;r ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1]||0)*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6]||0)*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}}),t.text&&a.push(t)}),a),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var l=new Image;l.onload=function(){s.height=l.naturalHeight,s.width=l.naturalWidth,t.thumbnails.push(s),n()},l.src=s.urlPrefix+s.frames[0].text})})}},{key:"startMove",value:function(e){if(this.loaded&<.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=sn(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){!1!==e.button&&0!==e.button||(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):pt.call(this.player,this.player.media,"timeupdate",function(){e.mouseDown||e.toggleScrubbingContainer(!1)})}},{key:"listeners",value:function(){var e=this;this.player.on("play",function(){e.toggleThumbContainer(!1,!0)}),this.player.on("seeked",function(){e.toggleThumbContainer(!1)}),this.player.on("timeupdate",function(){e.lastTime=e.player.media.currentTime})}},{key:"render",value:function(){this.elements.thumb.container=yt("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=yt("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=yt("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=yt("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=yt("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex(function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime}),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach(function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)}),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],s=i.frames[n].text,o=r+s;if(this.currentImageElement&&this.currentImageElement.dataset.filename===s)this.showImage(this.currentImageElement,a,t,n,s,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=o,l.dataset.index=n,l.dataset.filename=s,this.showingThumbFilename=s,this.player.debug.log("Loading image: ".concat(o)),l.onload=function(){return e.showImage(l,a,t,n,s,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach(function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout(function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))},i)}}})}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise(function(i){setTimeout(function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var s=!1;a.forEach(function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){s=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,o=new Image;o.src=a,o.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}}),s||i()}},300)})}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){this.elements.thumb.imageContainer.clientHeight>20&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(!this.sizeSpecifiedInCSS){var e=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(e,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;ar&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){this.elements.scrubbing.container.style.width="".concat(this.player.media.clientWidth,"px"),this.elements.scrubbing.container.style.height="".concat(this.player.media.clientWidth/this.thumbAspectRatio,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(Math.floor(e.naturalHeight*n),"px"),e.style.width="".concat(Math.floor(e.naturalWidth*n),"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?Math.floor(this.player.media.clientWidth/this.thumbAspectRatio):Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),Dn={insertElements:function(e,t){var n=this;lt.string(t)?vt(e,this.media,{src:t}):lt.array(t)&&t.forEach(function(t){vt(e,n.media,t)})},change:function(e){var t=this;zt(e,"sources.length")?(Ut.cancelRequests.call(this),this.destroy.call(this,function(){t.options.quality=[],bt(t.media),t.media=null,lt.element(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=o(n,1)[0],a=r.provider,s=void 0===a?mn.html5:a,l=r.src,c="html5"===s?i:"div",u="html5"===s?{}:{src:l};Object.assign(t,{provider:s,type:i,supported:Ft.check(i,s,t.config.playsinline),media:yt(c,u)}),t.elements.container.appendChild(t.media),lt.boolean(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),lt.empty(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),_n.addStyleHook.call(t),t.isHTML5&&Dn.insertElements.call(t,"source",n),t.config.title=e.title,In.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&Dn.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&_n.build.call(t),t.isHTML5&&t.media.load(),t.previewThumbnails&&t.previewThumbnails.load(),t.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}},Fn=function(){function e(t,n){var r=this;if(i(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=Ft.touch,this.media=t,lt.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||lt.nodeList(this.media)||lt.array(this.media))&&(this.media=this.media[0]),this.config=Wt({},dn,e.defaults,n||{},function(){try{return JSON.parse(r.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new yn(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",Ft),!lt.nullOrUndefined(this.media)&<.element(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(Ft.check().api){var a=this.media.cloneNode(!0);a.autoplay=!1,this.elements.original=a;var s=this.media.tagName.toLowerCase(),o=null,l=null;switch(s){case"div":if(o=this.media.querySelector("iframe"),lt.element(o)){if(l=ln(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?mn.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?mn.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",l.search.length){var c=["1","true"];c.includes(l.searchParams.get("autoplay"))&&(this.config.autoplay=!0),c.includes(l.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=c.includes(l.searchParams.get("playsinline")),this.config.youtube.hl=l.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(lt.empty(this.provider)||!Object.keys(mn).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=fn.video;break;case"video":case"audio":this.type=s,this.provider=mn.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=Ft.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Tn(this),this.storage=new Zt(this),this.media.plyr=this,lt.element(this.elements.container)||(this.elements.container=yt("div",{tabindex:0}),ft(this.media,this.elements.container)),_n.addStyleHook.call(this),In.setup.call(this),this.config.debug&&dt.call(this,this.elements.container,this.config.events.join(" "),function(e){r.debug.log("event: ".concat(e.type))}),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&_n.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new kn(this),this.config.ads.enabled&&(this.ads=new jn(this)),this.isHTML5&&this.config.autoplay&&setTimeout(function(){return r.play()},10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Rn(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return a(e,[{key:"play",value:function(){var e=this;return lt.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(function(){return e.ads.play()}).catch(function(){return e.media.play()}),this.media.play()):null}},{key:"pause",value:function(){this.playing&<.function(this.media.pause)&&this.media.pause()}},{key:"togglePlay",value:function(e){(lt.boolean(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):lt.function(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime=this.currentTime-(lt.number(e)?e:this.config.seekTime)}},{key:"forward",value:function(e){this.currentTime=this.currentTime+(lt.number(e)?e:this.config.seekTime)}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(lt.number(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){un.toggle.call(this,e,!1)}},{key:"airplay",value:function(){Ft.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=St(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=Et(this.elements.container,this.config.classNames.hideControls,n);if(i&&this.config.controls.includes("settings")&&!lt.empty(this.config.settings)&&on.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";mt.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){dt.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){pt.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){ht(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(bt(t.elements.buttons.play),bt(t.elements.captions),bt(t.elements.controls),bt(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),lt.function(e)&&e()):(function(){this&&this.eventListeners&&(this.eventListeners.forEach(function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)}),this.eventListeners=[])}.call(t),wt(t.elements.original,t.elements.container),mt.call(t,t.elements.original,"destroyed",!0),lt.function(e)&&e.call(t.elements.original),t.ready=!1,setTimeout(function(){t.elements=null,t.media=null},200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(_n.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&<.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return Ft.mime.call(this,e)}},{key:"isHTML5",get:function(){return Boolean(this.provider===mn.html5)}},{key:"isEmbed",get:function(){return Boolean(this.isYouTube||this.isVimeo)}},{key:"isYouTube",get:function(){return Boolean(this.provider===mn.youtube)}},{key:"isVimeo",get:function(){return Boolean(this.provider===mn.vimeo)}},{key:"isVideo",get:function(){return Boolean(this.type===fn.video)}},{key:"isAudio",get:function(){return Boolean(this.type===fn.audio)}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=lt.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return lt.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=lt.number(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;lt.string(t)&&(t=Number(t)),lt.number(t)||(t=this.storage.get("volume")),lt.number(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!lt.empty(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;lt.boolean(t)||(t=this.storage.get("muted")),lt.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=null;lt.number(e)&&(t=e),lt.number(t)||(t=this.storage.get("speed")),lt.number(t)||(t=this.config.speed.selected),t<.1&&(t=.1),t>2&&(t=2),this.config.speed.options.includes(t)?(this.config.speed.selected=t,this.media.playbackRate=t):this.debug.warn("Unsupported speed (".concat(t,")"))},get:function(){return Number(this.media.playbackRate)}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!lt.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(lt.number),r=!0;if(!n.includes(i)){var a=function(e,t){return lt.array(e)&&e.length?e.reduce(function(e,n){return Math.abs(n-t)1&&void 0!==arguments[1]?arguments[1]:{},i=null;return lt.string(t)?i=Array.from(document.querySelectorAll(t)):lt.nodeList(t)?i=Array.from(t):lt.array(t)&&(i=t.filter(lt.element)),lt.empty(i)?null:i.map(function(t){return new e(t,n)})}}]),e}();Fn.defaults=(On=dn,JSON.parse(JSON.stringify(On))),Mn=window.location.host,Nn={prod:"plyr.io"===Mn,dev:"dev.plyr.io"===Mn},document.addEventListener("DOMContentLoaded",function(){qe.context(function(){var e=document.getElementById("container");window.Shr&&window.Shr.setup(".js-shr-button",{count:{classname:"button__count"}}),document.addEventListener("focusout",function(t){t.target.classList&&!e.contains(t.target)&&t.target.classList.remove("tab-focus")}),document.addEventListener("keydown",function(t){9===t.keyCode&&setTimeout(function(){var t=document.activeElement;t&&t.classList&&!e.contains(t)&&t.classList.add("tab-focus")},10)});var t=new Fn("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},keys:{google:"AIzaSyDrNwtN3nLH_8rjCmu5Wq3ZCm4MNAVdc0c"},ads:{enabled:Nn.prod||Nn.dev,publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]}});window.player=t;var n=document.querySelectorAll("[data-source]"),i={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState;function s(e,t,n){e&&e.classList[n?"add":"remove"](t)}function o(e,a){if(e in i&&(a||e!==r)&&(r.length||e!==i.video)){switch(e){case i.video:t.source={type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}]};break;case i.audio:t.source={type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]};break;case i.youtube:t.source={type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]};break;case i.vimeo:t.source={type:"video",sources:[{src:"https://vimeo.com/76979871",provider:"vimeo"}]}}r=e,Array.from(n).forEach(function(e){return s(e.parentElement,"active",!1)}),s(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach(function(e){e.setAttribute("hidden","")}),document.querySelector(".plyr__cite--".concat(e)).removeAttribute("hidden")}}if(Array.from(n).forEach(function(e){e.addEventListener("click",function(){var t=e.getAttribute("data-source");o(t),a&&window.history.pushState({type:t},"","#".concat(t))})}),window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&o(e.state.type)}),a){var l=!r.length;l&&(r=i.video),r in i&&window.history.replaceState({type:r},"",l?"":"#".concat(r)),r!==i.video&&o(r,!0)}})}),Nn.prod&&qe.config("https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555").install()}(); //# sourceMappingURL=demo.min.js.map diff --git a/demo/dist/demo.min.js.map b/demo/dist/demo.min.js.map index 4a32ace5f..dff40b299 100644 --- a/demo/dist/demo.min.js.map +++ b/demo/dist/demo.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["demo.js","node_modules/raven-js/vendor/json-stringify-safe/stringify.js","node_modules/raven-js/src/utils.js","node_modules/raven-js/vendor/TraceKit/tracekit.js","node_modules/raven-js/vendor/md5/md5.js","node_modules/raven-js/src/configError.js","node_modules/raven-js/src/console.js","node_modules/raven-js/src/raven.js","node_modules/raven-js/src/singleton.js","node_modules/rangetouch/src/js/config.js","node_modules/rangetouch/src/js/utils/is.js","node_modules/rangetouch/src/js/utils/numbers.js","node_modules/rangetouch/src/js/rangetouch.js","node_modules/rangetouch/src/js/utils/events.js","node_modules/rangetouch/src/js/utils/css.js","src/js/utils/is.js","src/js/utils/events.js","src/js/utils/elements.js","src/js/utils/animation.js","src/js/utils/browser.js","src/js/support.js","src/js/html5.js","src/js/utils/arrays.js","src/js/utils/objects.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/loadSprite.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","src/js/utils/loadImage.js","src/js/ui.js","src/js/utils/style.js","src/js/listeners.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/loadScript.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","demo/src/js/demo.js","src/js/media.js","src/js/plugins/ads.js","src/js/plugins/previewThumbnails.js","src/js/source.js","src/js/plyr.js"],"names":["navigator","commonjsGlobal","window","global","self","createCommonjsModule","fn","module","exports","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_defineProperty","value","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","iter","toString","call","from","_iterableToArray","_nonIterableSpread","stringify_1","indexOf","haystack","needle","serializer","replacer","cycleReplacer","stack","keys","slice","join","thisPos","this","splice","Infinity","Error","message","name","hasOwnProperty","stringifyError","spaces","JSON","stringify","_window","getSerialize","isUndefined","what","isPlainObject","isString","supportsFetch","Headers","Request","Response","e","each","callback","j","hasKey","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","htmlElementAsString","elem","className","classes","attr","out","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","MAX_SERIALIZE_KEYS_LENGTH","jsonSize","encodeURI","utf8Length","serializeValue","type","utils","isObject","isError","isErrorEvent","isDOMError","isDOMException","isFunction","isEmptyObject","_","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","data","original","normalizedData","objectMerge","obj1","obj2","objectFrozen","isFrozen","urlencode","o","pairs","encodeURIComponent","uuid4","crypto","msCrypto","getRandomValues","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString","nextStr","height","sepLength","parentNode","reverse","isSameException","ex1","ex2","values","stacktrace","parseUrl","url","match","query","fragment","protocol","host","path","relative","fill","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","serializeException","ex","depth","maxSize","serialized","serializeObject","reduce","acc","map","val","serializeKeysForMessage","maxLength","filter","usedKeys","sanitize","sanitizeKeys","safeInput","sanitizeRegExp","sanitizeMask","parse","o_O","sanitizeWorker","workerInput","k","test","TraceKit","collectWindowErrors","debug","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","document","location","href","report","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastException","lastExceptionStack","notifyHandlers","isWindowError","exception","apply","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","error","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","func","_lastExceptionStack","_lastArgs","rethrow","args","setTimeout","incomplete","subscribe","handler","onerror","unsubscribe","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","winjs","gecko","geckoEval","chromeEval","lines","exec","isNative","columnNumber","xhr","XMLHttpRequest","open","send","status","responseText","sourceMaps","sourceMapAddress","charAt","origin","hostname","port","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","safeAdd","x","y","lsw","md5cmn","q","s","t","cnt","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstr2hex","str2rstrUTF8","unescape","rawMD5","rstrMD5","rawHMACMD5","hash","bkey","ipad","opad","rstrHMACMD5","md5_1","string","raw","RavenConfigError","configError","console$1","console","level","originalConsoleLevel","originalConsole","sentryLevel","logger","extra","Function","wrapConsoleMethod","require$$0","dsnKeys","dsnPattern","now","Date","_document","_navigator","keepOriginalCallback","Raven","method","_hasJSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","SENTRY_RELEASE","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","_lastHref","_resetBackoff","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","property","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","_promiseRejectionHandler","event","reason","mechanism","handled","bind","addEventListener","removeEventListener","trimHeadFrames","captureMessage","_getCaptureExceptionOptionsFromPlainObject","_handleStackInfo","currentOptions","exKeys","sort","fingerprint","md5","__serialized__","initialCall","fileurl","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodedOptions","email","globalServer","script","createElement","async","src","head","body","appendChild","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","_breadcrumbEventHandler","evtName","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","to","parsedLoc","parsedTo","parsedFrom","_originalFunctionToString","wrappedBuiltIns","wrapTimeFn","originalCallback","function","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","onreadystatechange","origFetch","fetchInput","fetchData","then","response","attachEvent","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","installer","m","allowSecretKey","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","prefixedMessage","transaction","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","_setBackoffState","retry","get","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sanitizeData","forEach","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","XDomainRequest","onload","setRequestHeader","evaluated","setUser","setReleaseContext","raven","_Raven","RavenConstructor","noConflict","singleton","Client","defaults","addCSS","thumbWidth","watch","getConstructor","instanceOf","Boolean","isNullOrUndefined","isNodeList","NodeList","is","nullOrUndefined","number","Number","isNaN","boolean","array","nodeList","Element","Event","empty","round","step","places","parseFloat","toFixed","RangeTouch","querySelector","rangeTouch","assign","init","enabled","style","userSelect","webKitUserSelect","touchAction","listeners","toggle","_this","set","percent","touch","changedTouches","delta","clientRect","getBoundingClientRect","width","clientX","left","disabled","preventDefault","trigger","targets","querySelectorAll","MutationObserver","mutations","mutation","addedNodes","node","selector","includes","observe","childList","subtree","documentElement","isEmpty","is$1","weakMap","WeakMap","textNode","Text","keyboardEvent","KeyboardEvent","cue","TextTrackCue","VTTCue","TextTrack","kind","promise","Promise","URL","startsWith","supportsPassiveListeners","supported","toggleListener","passive","events","eventListeners","on","off","once","_this2","onceCallback","_len","_key","triggerEvent","bubbles","detail","CustomEvent","plyr","elements","wrapper","index","child","cloneNode","parent","sibling","nextSibling","insertBefore","setAttributes","attributes","entries","_ref","_ref3","_ref4","setAttribute","text","innerText","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","trim","class","toggleHidden","hidden","hide","removeAttribute","toggleClass","force","classList","contains","hasClass","matches","getElements","container","getElement","setFocus","tabFocus","focus","preventScroll","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","repaint","offsetHeight","range","browser","isIE","documentMode","isEdge","isWebkit","isIPhone","isIos","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","transitions","reducedMotion","matchMedia","html5","getSources","getQualityOptions","extend","player","_player$media","currentTime","paused","preload","play","load","quality","cancelRequests","blankVideo","dedupe","getDeep","format","replaceAll","toTitleCase","toCamelCase","toPascalCase","getHTML","innerHTML","resources","vimeo","youtube","i18n","{seektime}","seekTime","{title}","title","_ref2","Storage","storage","store","localStorage","getItem","json","setItem","removeItem","responseType","resolve","reject","loadSprite","hasId","exists","getElementById","update","insertAdjacentElement","useStorage","cached","content","catch","getHours","trunc","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","tooltip","warn","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","role","focusable","use","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","label","labelPressed","iconPressed","control","button","createRange","autocomplete","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","setup","createProgress","aria-hidden","suffixKey","played","suffix","createTime","bindMenuItemShortcuts","menuItem","which","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","_ref$badge","_ref$checked","checked","aria-checked","flex","children","currentTrack","speed","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this3","getElementsByTagName","nodeValue","setProgress","buffered","setProperty","updateSeekTooltip","_this4","tooltips","visible","pageX","timeUpdate","invert","invertTime","seeking","durationUpdate","pow","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this5","checkMenu","getBadge","sorting","setCaptionsMenu","_this6","tracks","getTracks","toggled","language","setSpeedMenu","_this7","isVimeo","some","popup","firstItem","toggleMenu","show","isMenuItem","getMenuSize","tab","clone","position","opacity","scrollWidth","scrollHeight","_this8","size","restore","propertyName","setDownloadLink","download","create","_this9","aria-haspopup","aria-controls","aria-expanded","home","backButton","urls","isEmbed","inject","_this10","floor","seektime","addProperty","controlPressed","_this$config","labels","parser","buildUrlParams","params","URLSearchParams","isVideo","isYouTube","blob","createObjectURL","languages","userLanguage","active","trackEvents","_this$captions","meta","currentTrackNode","languageExists","mode","updateCues","setLanguage","activeClass","findTrack","embed","enableTextTrack","has","sortIsDefault","sorted","every","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","caption","autoplay","autopause","toggleInvert","ratio","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","focused","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","start","end","all","reset","advertisement","qualityBadge","2160","1440","1080","720","576","480","sdk","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","stopped","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","google","publisherId","tagUrl","byline","portrait","transparent","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","noop","Console","onChange","first","keyCode","activeElement","shiftKey","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","overflow","viewport","hasProperty","cleanupViewport","part","Fullscreen","prefix","forceFallback","native","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","action","cancelFullScreen","exit","enter","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","loadImage","minWidth","image","Image","naturalWidth","addStyleHook","build","checkPlaying","ready","setTitle","setPoster","togglePoster","enable","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","recentTouchSeek","lastSeekTime","setAspectRatio","_ratio$split$map2","padding","paddingBottom","offset","transform","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","code","repeat","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","delay","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_player$embed$ratio$s2","videoWidth","videoHeight","maxWidth","margin","setGutter","hasAudio","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","sign","abs","loadjs_umd","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isLegacyIECss","doc","maxTries","numRetries","beforeCallbackFn","pathStripped","relList","as","onbeforeload","ev","sheet","cssText","defaultPrevented","loadjs","paths","arg1","arg2","loadFn","numWaiting","loadFiles","returnPromise","deps","bundleIds","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","gesture","$2","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","state","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","createDocumentFragment","getPaused","seconds","env","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","getTitle","videoId","getVideoData","items","snippet","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","2","5","100","101","150","onPlaybackRateChange","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","ima","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","LOG","adError","getMessage","cancel","addCuePoints","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","zIndex","_this11","destroy","_this12","_this13","AV_PUBLISHERID","AV_CHANNELID","AV_URL","AV_WIDTH","AV_HEIGHT","AV_CDIM2","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","vttDataString","processedList","thumbnail","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","w","h","matchTimes","endTime","urlPrefix","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","ceil","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","findIndex","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","sizeSpecifiedInCSS","thumbAspectRatio","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","right","clientWidth","previewPos","multiplier","top","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","attribute","change","_sources$","_sources$$provider","crossorigin","Plyr","failed","jQuery","getProviderByUrl","search","truthy","searchParams","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","prev","closest","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","prod","dev","Shr","count","classname","remove","add","currentType","historySupport","newSource","srclang","parentElement","cite"],"mappings":"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","file":"demo.min.js","sourcesContent":["typeof navigator === \"object\" && (function () {\n\t'use strict';\n\n\tvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tfunction _typeof(obj) {\n\t if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n\t _typeof = function (obj) {\n\t return typeof obj;\n\t };\n\t } else {\n\t _typeof = function (obj) {\n\t return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t };\n\t }\n\n\t return _typeof(obj);\n\t}\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t}\n\n\tfunction _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t}\n\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction _slicedToArray(arr, i) {\n\t return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n\t}\n\n\tfunction _toConsumableArray(arr) {\n\t return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n\t}\n\n\tfunction _arrayWithoutHoles(arr) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n\t return arr2;\n\t }\n\t}\n\n\tfunction _arrayWithHoles(arr) {\n\t if (Array.isArray(arr)) return arr;\n\t}\n\n\tfunction _iterableToArray(iter) {\n\t if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n\t}\n\n\tfunction _iterableToArrayLimit(arr, i) {\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\t var _e = undefined;\n\n\t try {\n\t for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\n\t return _arr;\n\t}\n\n\tfunction _nonIterableSpread() {\n\t throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n\t}\n\n\tfunction _nonIterableRest() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t}\n\n\tvar stringify_1 = createCommonjsModule(function (module, exports) {\n\t /*\n\t json-stringify-safe\n\t Like JSON.stringify, but doesn't throw on circular references.\n\t \n\t Originally forked from https://github.com/isaacs/json-stringify-safe\n\t version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n\t and IE8 compatibility. Tests for this are in test/vendor.\n\t \n\t ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n\t */\n\t exports = module.exports = stringify;\n\t exports.getSerialize = serializer;\n\n\t function indexOf(haystack, needle) {\n\t for (var i = 0; i < haystack.length; ++i) {\n\t if (haystack[i] === needle) return i;\n\t }\n\n\t return -1;\n\t }\n\n\t function stringify(obj, replacer, spaces, cycleReplacer) {\n\t return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n\t } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\n\n\n\t function stringifyError(value) {\n\t var err = {\n\t // These properties are implemented as magical getters and don't show up in for in\n\t stack: value.stack,\n\t message: value.message,\n\t name: value.name\n\t };\n\n\t for (var i in value) {\n\t if (Object.prototype.hasOwnProperty.call(value, i)) {\n\t err[i] = value[i];\n\t }\n\t }\n\n\t return err;\n\t }\n\n\t function serializer(replacer, cycleReplacer) {\n\t var stack = [];\n\t var keys = [];\n\n\t if (cycleReplacer == null) {\n\t cycleReplacer = function cycleReplacer(key, value) {\n\t if (stack[0] === value) {\n\t return '[Circular ~]';\n\t }\n\n\t return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n\t };\n\t }\n\n\t return function (key, value) {\n\t if (stack.length > 0) {\n\t var thisPos = indexOf(stack, this);\n\t ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n\t ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n\t if (~indexOf(stack, value)) {\n\t value = cycleReplacer.call(this, key, value);\n\t }\n\t } else {\n\t stack.push(value);\n\t }\n\n\t return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value);\n\t };\n\t }\n\t});\n\tvar stringify_2 = stringify_1.getSerialize;\n\n\tvar _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tfunction isObject(what) {\n\t return _typeof(what) === 'object' && what !== null;\n\t} // Yanked from https://git.io/vS8DV re-used under CC0\n\t// with some tiny modifications\n\n\n\tfunction isError(value) {\n\t switch (Object.prototype.toString.call(value)) {\n\t case '[object Error]':\n\t return true;\n\n\t case '[object Exception]':\n\t return true;\n\n\t case '[object DOMException]':\n\t return true;\n\n\t default:\n\t return value instanceof Error;\n\t }\n\t}\n\n\tfunction isErrorEvent(value) {\n\t return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n\t}\n\n\tfunction isDOMError(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMError]';\n\t}\n\n\tfunction isDOMException(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMException]';\n\t}\n\n\tfunction isUndefined(what) {\n\t return what === void 0;\n\t}\n\n\tfunction isFunction(what) {\n\t return typeof what === 'function';\n\t}\n\n\tfunction isPlainObject(what) {\n\t return Object.prototype.toString.call(what) === '[object Object]';\n\t}\n\n\tfunction isString(what) {\n\t return Object.prototype.toString.call(what) === '[object String]';\n\t}\n\n\tfunction isArray(what) {\n\t return Object.prototype.toString.call(what) === '[object Array]';\n\t}\n\n\tfunction isEmptyObject(what) {\n\t if (!isPlainObject(what)) return false;\n\n\t for (var _ in what) {\n\t if (what.hasOwnProperty(_)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t}\n\n\tfunction supportsErrorEvent() {\n\t try {\n\t new ErrorEvent(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMError() {\n\t try {\n\t new DOMError(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMException() {\n\t try {\n\t new DOMException(''); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsFetch() {\n\t if (!('fetch' in _window)) return false;\n\n\t try {\n\t new Headers(); // eslint-disable-line no-new\n\n\t new Request(''); // eslint-disable-line no-new\n\n\t new Response(); // eslint-disable-line no-new\n\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t} // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t// https://caniuse.com/#feat=referrer-policy\n\t// It doesn't. And it throw exception instead of ignoring this parameter...\n\t// REF: https://github.com/getsentry/raven-js/issues/1233\n\n\n\tfunction supportsReferrerPolicy() {\n\t if (!supportsFetch()) return false;\n\n\t try {\n\t // eslint-disable-next-line no-new\n\t new Request('pickleRick', {\n\t referrerPolicy: 'origin'\n\t });\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsPromiseRejectionEvent() {\n\t return typeof PromiseRejectionEvent === 'function';\n\t}\n\n\tfunction wrappedCallback(callback) {\n\t function dataCallback(data, original) {\n\t var normalizedData = callback(data) || data;\n\n\t if (original) {\n\t return original(normalizedData) || normalizedData;\n\t }\n\n\t return normalizedData;\n\t }\n\n\t return dataCallback;\n\t}\n\n\tfunction each(obj, callback) {\n\t var i, j;\n\n\t if (isUndefined(obj.length)) {\n\t for (i in obj) {\n\t if (hasKey(obj, i)) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t } else {\n\t j = obj.length;\n\n\t if (j) {\n\t for (i = 0; i < j; i++) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t }\n\t}\n\n\tfunction objectMerge(obj1, obj2) {\n\t if (!obj2) {\n\t return obj1;\n\t }\n\n\t each(obj2, function (key, value) {\n\t obj1[key] = value;\n\t });\n\t return obj1;\n\t}\n\t/**\n\t * This function is only used for react-native.\n\t * react-native freezes object that have already been sent over the\n\t * js bridge. We need this function in order to check if the object is frozen.\n\t * So it's ok that objectFrozen returns false if Object.isFrozen is not\n\t * supported because it's not relevant for other \"platforms\". See related issue:\n\t * https://github.com/getsentry/react-native-sentry/issues/57\n\t */\n\n\n\tfunction objectFrozen(obj) {\n\t if (!Object.isFrozen) {\n\t return false;\n\t }\n\n\t return Object.isFrozen(obj);\n\t}\n\n\tfunction truncate(str, max) {\n\t if (typeof max !== 'number') {\n\t throw new Error('2nd argument to `truncate` function should be a number');\n\t }\n\n\t if (typeof str !== 'string' || max === 0) {\n\t return str;\n\t }\n\n\t return str.length <= max ? str : str.substr(0, max) + \"\\u2026\";\n\t}\n\t/**\n\t * hasKey, a better form of hasOwnProperty\n\t * Example: hasKey(MainHostObject, property) === true/false\n\t *\n\t * @param {Object} host object to check property\n\t * @param {string} key to check\n\t */\n\n\n\tfunction hasKey(object, key) {\n\t return Object.prototype.hasOwnProperty.call(object, key);\n\t}\n\n\tfunction joinRegExp(patterns) {\n\t // Combine an array of regular expressions and strings into one large regexp\n\t // Be mad.\n\t var sources = [],\n\t i = 0,\n\t len = patterns.length,\n\t pattern;\n\n\t for (; i < len; i++) {\n\t pattern = patterns[i];\n\n\t if (isString(pattern)) {\n\t // If it's a string, we need to escape it\n\t // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n\t sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n\t } else if (pattern && pattern.source) {\n\t // If it's a regexp already, we want to extract the source\n\t sources.push(pattern.source);\n\t } // Intentionally skip other cases\n\n\t }\n\n\t return new RegExp(sources.join('|'), 'i');\n\t}\n\n\tfunction urlencode(o) {\n\t var pairs = [];\n\t each(o, function (key, value) {\n\t pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n\t });\n\t return pairs.join('&');\n\t} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n\t// intentionally using regex and not href parsing trick because React Native and other\n\t// environments where DOM might not be available\n\n\n\tfunction parseUrl(url) {\n\t if (typeof url !== 'string') return {};\n\t var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined'\n\n\t var query = match[6] || '';\n\t var fragment = match[8] || '';\n\t return {\n\t protocol: match[2],\n\t host: match[4],\n\t path: match[5],\n\t relative: match[5] + query + fragment // everything minus origin\n\n\t };\n\t}\n\n\tfunction uuid4() {\n\t var crypto = _window.crypto || _window.msCrypto;\n\n\t if (!isUndefined(crypto) && crypto.getRandomValues) {\n\t // Use window.crypto API if available\n\t // eslint-disable-next-line no-undef\n\t var arr = new Uint16Array(8);\n\t crypto.getRandomValues(arr); // set 4 in byte 7\n\n\t arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10'\n\n\t arr[4] = arr[4] & 0x3fff | 0x8000;\n\n\t var pad = function pad(num) {\n\t var v = num.toString(16);\n\n\t while (v.length < 4) {\n\t v = '0' + v;\n\t }\n\n\t return v;\n\t };\n\n\t return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]);\n\t } else {\n\t // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n\t return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t var r = Math.random() * 16 | 0,\n\t v = c === 'x' ? r : r & 0x3 | 0x8;\n\t return v.toString(16);\n\t });\n\t }\n\t}\n\t/**\n\t * Given a child DOM element, returns a query-selector statement describing that\n\t * and its ancestors\n\t * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n\t * @param elem\n\t * @returns {string}\n\t */\n\n\n\tfunction htmlTreeAsString(elem) {\n\t /* eslint no-extra-parens:0*/\n\t var MAX_TRAVERSE_HEIGHT = 5,\n\t MAX_OUTPUT_LEN = 80,\n\t out = [],\n\t height = 0,\n\t len = 0,\n\t separator = ' > ',\n\t sepLength = separator.length,\n\t nextStr;\n\n\t while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n\t nextStr = htmlElementAsString(elem); // bail out if\n\t // - nextStr is the 'html' element\n\t // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n\t // (ignore this limit if we are on the first iteration)\n\n\t if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) {\n\t break;\n\t }\n\n\t out.push(nextStr);\n\t len += nextStr.length;\n\t elem = elem.parentNode;\n\t }\n\n\t return out.reverse().join(separator);\n\t}\n\t/**\n\t * Returns a simple, query-selector representation of a DOM element\n\t * e.g. [HTMLElement] => input#foo.btn[name=baz]\n\t * @param HTMLElement\n\t * @returns {string}\n\t */\n\n\n\tfunction htmlElementAsString(elem) {\n\t var out = [],\n\t className,\n\t classes,\n\t key,\n\t attr,\n\t i;\n\n\t if (!elem || !elem.tagName) {\n\t return '';\n\t }\n\n\t out.push(elem.tagName.toLowerCase());\n\n\t if (elem.id) {\n\t out.push('#' + elem.id);\n\t }\n\n\t className = elem.className;\n\n\t if (className && isString(className)) {\n\t classes = className.split(/\\s+/);\n\n\t for (i = 0; i < classes.length; i++) {\n\t out.push('.' + classes[i]);\n\t }\n\t }\n\n\t var attrWhitelist = ['type', 'name', 'title', 'alt'];\n\n\t for (i = 0; i < attrWhitelist.length; i++) {\n\t key = attrWhitelist[i];\n\t attr = elem.getAttribute(key);\n\n\t if (attr) {\n\t out.push('[' + key + '=\"' + attr + '\"]');\n\t }\n\t }\n\n\t return out.join('');\n\t}\n\t/**\n\t * Returns true if either a OR b is truthy, but not both\n\t */\n\n\n\tfunction isOnlyOneTruthy(a, b) {\n\t return !!(!!a ^ !!b);\n\t}\n\t/**\n\t * Returns true if both parameters are undefined\n\t */\n\n\n\tfunction isBothUndefined(a, b) {\n\t return isUndefined(a) && isUndefined(b);\n\t}\n\t/**\n\t * Returns true if the two input exception interfaces have the same content\n\t */\n\n\n\tfunction isSameException(ex1, ex2) {\n\t if (isOnlyOneTruthy(ex1, ex2)) return false;\n\t ex1 = ex1.values[0];\n\t ex2 = ex2.values[0];\n\t if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false\n\n\t if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\t return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n\t}\n\t/**\n\t * Returns true if the two input stack trace interfaces have the same content\n\t */\n\n\n\tfunction isSameStacktrace(stack1, stack2) {\n\t if (isOnlyOneTruthy(stack1, stack2)) return false;\n\t var frames1 = stack1.frames;\n\t var frames2 = stack2.frames; // Exit early if stacktrace is malformed\n\n\t if (frames1 === undefined || frames2 === undefined) return false; // Exit early if frame count differs\n\n\t if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs\n\n\t var a, b;\n\n\t for (var i = 0; i < frames1.length; i++) {\n\t a = frames1[i];\n\t b = frames2[i];\n\t if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false;\n\t }\n\n\t return true;\n\t}\n\t/**\n\t * Polyfill a method\n\t * @param obj object e.g. `document`\n\t * @param name method name present on object e.g. `addEventListener`\n\t * @param replacement replacement function\n\t * @param track {optional} record instrumentation to an array\n\t */\n\n\n\tfunction fill(obj, name, replacement, track) {\n\t if (obj == null) return;\n\t var orig = obj[name];\n\t obj[name] = replacement(orig);\n\t obj[name].__raven__ = true;\n\t obj[name].__orig__ = orig;\n\n\t if (track) {\n\t track.push([obj, name, orig]);\n\t }\n\t}\n\t/**\n\t * Join values in array\n\t * @param input array of values to be joined together\n\t * @param delimiter string to be placed in-between values\n\t * @returns {string}\n\t */\n\n\n\tfunction safeJoin(input, delimiter) {\n\t if (!isArray(input)) return '';\n\t var output = [];\n\n\t for (var i = 0; i < input.length; i++) {\n\t try {\n\t output.push(String(input[i]));\n\t } catch (e) {\n\t output.push('[value cannot be serialized]');\n\t }\n\t }\n\n\t return output.join(delimiter);\n\t} // Default Node.js REPL depth\n\n\n\tvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3; // 50kB, as 100kB is max payload size, so half sounds reasonable\n\n\tvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\n\tvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\n\tfunction utf8Length(value) {\n\t return ~-encodeURI(value).split(/%..|./).length;\n\t}\n\n\tfunction jsonSize(value) {\n\t return utf8Length(JSON.stringify(value));\n\t}\n\n\tfunction serializeValue(value) {\n\t if (typeof value === 'string') {\n\t var maxLength = 40;\n\t return truncate(value, maxLength);\n\t } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'undefined') {\n\t return value;\n\t }\n\n\t var type = Object.prototype.toString.call(value); // Node.js REPL notation\n\n\t if (type === '[object Object]') return '[Object]';\n\t if (type === '[object Array]') return '[Array]';\n\t if (type === '[object Function]') return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\t return value;\n\t}\n\n\tfunction serializeObject(value, depth) {\n\t if (depth === 0) return serializeValue(value);\n\n\t if (isPlainObject(value)) {\n\t return Object.keys(value).reduce(function (acc, key) {\n\t acc[key] = serializeObject(value[key], depth - 1);\n\t return acc;\n\t }, {});\n\t } else if (Array.isArray(value)) {\n\t return value.map(function (val) {\n\t return serializeObject(val, depth - 1);\n\t });\n\t }\n\n\t return serializeValue(value);\n\t}\n\n\tfunction serializeException(ex, depth, maxSize) {\n\t if (!isPlainObject(ex)) return ex;\n\t depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n\t maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\t var serialized = serializeObject(ex, depth);\n\n\t if (jsonSize(stringify_1(serialized)) > maxSize) {\n\t return serializeException(ex, depth - 1);\n\t }\n\n\t return serialized;\n\t}\n\n\tfunction serializeKeysForMessage(keys, maxLength) {\n\t if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n\t if (!Array.isArray(keys)) return '';\n\t keys = keys.filter(function (key) {\n\t return typeof key === 'string';\n\t });\n\t if (keys.length === 0) return '[object has no keys]';\n\t maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n\t if (keys[0].length >= maxLength) return keys[0];\n\n\t for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n\t var serialized = keys.slice(0, usedKeys).join(', ');\n\t if (serialized.length > maxLength) continue;\n\t if (usedKeys === keys.length) return serialized;\n\t return serialized + \"\\u2026\";\n\t }\n\n\t return '';\n\t}\n\n\tfunction sanitize(input, sanitizeKeys) {\n\t if (!isArray(sanitizeKeys) || isArray(sanitizeKeys) && sanitizeKeys.length === 0) return input;\n\t var sanitizeRegExp = joinRegExp(sanitizeKeys);\n\t var sanitizeMask = '********';\n\t var safeInput;\n\n\t try {\n\t safeInput = JSON.parse(stringify_1(input));\n\t } catch (o_O) {\n\t return input;\n\t }\n\n\t function sanitizeWorker(workerInput) {\n\t if (isArray(workerInput)) {\n\t return workerInput.map(function (val) {\n\t return sanitizeWorker(val);\n\t });\n\t }\n\n\t if (isPlainObject(workerInput)) {\n\t return Object.keys(workerInput).reduce(function (acc, k) {\n\t if (sanitizeRegExp.test(k)) {\n\t acc[k] = sanitizeMask;\n\t } else {\n\t acc[k] = sanitizeWorker(workerInput[k]);\n\t }\n\n\t return acc;\n\t }, {});\n\t }\n\n\t return workerInput;\n\t }\n\n\t return sanitizeWorker(safeInput);\n\t}\n\n\tvar utils = {\n\t isObject: isObject,\n\t isError: isError,\n\t isErrorEvent: isErrorEvent,\n\t isDOMError: isDOMError,\n\t isDOMException: isDOMException,\n\t isUndefined: isUndefined,\n\t isFunction: isFunction,\n\t isPlainObject: isPlainObject,\n\t isString: isString,\n\t isArray: isArray,\n\t isEmptyObject: isEmptyObject,\n\t supportsErrorEvent: supportsErrorEvent,\n\t supportsDOMError: supportsDOMError,\n\t supportsDOMException: supportsDOMException,\n\t supportsFetch: supportsFetch,\n\t supportsReferrerPolicy: supportsReferrerPolicy,\n\t supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n\t wrappedCallback: wrappedCallback,\n\t each: each,\n\t objectMerge: objectMerge,\n\t truncate: truncate,\n\t objectFrozen: objectFrozen,\n\t hasKey: hasKey,\n\t joinRegExp: joinRegExp,\n\t urlencode: urlencode,\n\t uuid4: uuid4,\n\t htmlTreeAsString: htmlTreeAsString,\n\t htmlElementAsString: htmlElementAsString,\n\t isSameException: isSameException,\n\t isSameStacktrace: isSameStacktrace,\n\t parseUrl: parseUrl,\n\t fill: fill,\n\t safeJoin: safeJoin,\n\t serializeException: serializeException,\n\t serializeKeysForMessage: serializeKeysForMessage,\n\t sanitize: sanitize\n\t};\n\n\t/*\n\t TraceKit - Cross brower stack traces\n\n\t This was originally forked from github.com/occ/TraceKit, but has since been\n\t largely re-written and is now maintained as part of raven-js. Tests for\n\t this are in test/vendor.\n\n\t MIT license\n\t*/\n\n\tvar TraceKit = {\n\t collectWindowErrors: true,\n\t debug: false\n\t}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\tvar _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice\n\n\n\tvar _slice = [].slice;\n\tvar UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\n\n\tvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\n\tfunction getLocationHref() {\n\t if (typeof document === 'undefined' || document.location == null) return '';\n\t return document.location.href;\n\t}\n\n\tfunction getLocationOrigin() {\n\t if (typeof document === 'undefined' || document.location == null) return ''; // Oh dear IE10...\n\n\t if (!document.location.origin) {\n\t return document.location.protocol + '//' + document.location.hostname + (document.location.port ? ':' + document.location.port : '');\n\t }\n\n\t return document.location.origin;\n\t}\n\t/**\n\t * TraceKit.report: cross-browser processing of unhandled exceptions\n\t *\n\t * Syntax:\n\t * TraceKit.report.subscribe(function(stackInfo) { ... })\n\t * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n\t * TraceKit.report(exception)\n\t * try { ...code... } catch(ex) { TraceKit.report(ex); }\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers, plus column number\n\t * on top frame; column number is not guaranteed\n\t * - Opera: full stack trace with line and column numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t * - IE: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t *\n\t * In theory, TraceKit should work on all of the following versions:\n\t * - IE5.5+ (only 8.0 tested)\n\t * - Firefox 0.9+ (only 3.5+ tested)\n\t * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n\t * Exceptions Have Stacktrace to be enabled in opera:config)\n\t * - Safari 3+ (only 4+ tested)\n\t * - Chrome 1+ (only 5+ tested)\n\t * - Konqueror 3.5+ (untested)\n\t *\n\t * Requires TraceKit.computeStackTrace.\n\t *\n\t * Tries to catch all unhandled exceptions and report them to the\n\t * subscribed handlers. Please note that TraceKit.report will rethrow the\n\t * exception. This is REQUIRED in order to get a useful stack trace in IE.\n\t * If the exception does not reach the top of the browser, you will only\n\t * get a stack trace from the point where TraceKit.report was called.\n\t *\n\t * Handlers receive a stackInfo object as described in the\n\t * TraceKit.computeStackTrace docs.\n\t */\n\n\n\tTraceKit.report = function reportModuleWrapper() {\n\t var handlers = [],\n\t lastArgs = null,\n\t lastException = null,\n\t lastExceptionStack = null;\n\t /**\n\t * Add a crash handler.\n\t * @param {Function} handler\n\t */\n\n\t function subscribe(handler) {\n\t installGlobalHandler();\n\t handlers.push(handler);\n\t }\n\t /**\n\t * Remove a crash handler.\n\t * @param {Function} handler\n\t */\n\n\n\t function unsubscribe(handler) {\n\t for (var i = handlers.length - 1; i >= 0; --i) {\n\t if (handlers[i] === handler) {\n\t handlers.splice(i, 1);\n\t }\n\t }\n\t }\n\t /**\n\t * Remove all crash handlers.\n\t */\n\n\n\t function unsubscribeAll() {\n\t uninstallGlobalHandler();\n\t handlers = [];\n\t }\n\t /**\n\t * Dispatch stack information to all handlers.\n\t * @param {Object.} stack\n\t */\n\n\n\t function notifyHandlers(stack, isWindowError) {\n\t var exception = null;\n\n\t if (isWindowError && !TraceKit.collectWindowErrors) {\n\t return;\n\t }\n\n\t for (var i in handlers) {\n\t if (handlers.hasOwnProperty(i)) {\n\t try {\n\t handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n\t } catch (inner) {\n\t exception = inner;\n\t }\n\t }\n\t }\n\n\t if (exception) {\n\t throw exception;\n\t }\n\t }\n\n\t var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\t /**\n\t * Ensures all global unhandled exceptions are recorded.\n\t * Supported by Gecko and IE.\n\t * @param {string} msg Error message.\n\t * @param {string} url URL of script that generated the exception.\n\t * @param {(number|string)} lineNo The line number at which the error\n\t * occurred.\n\t * @param {?(number|string)} colNo The column number at which the error\n\t * occurred.\n\t * @param {?Error} ex The actual Error object.\n\t */\n\n\n\t function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n\t var stack = null; // If 'ex' is ErrorEvent, get real Error from inside\n\n\t var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside\n\n\t var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n\t if (lastExceptionStack) {\n\t TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n\t processLastException();\n\t } else if (exception && utils.isError(exception)) {\n\t // non-string `exception` arg; attempt to extract stack trace\n\t // New chrome and blink send along a real error object\n\t // Let's just report that like a normal error.\n\t // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n\t stack = TraceKit.computeStackTrace(exception);\n\t notifyHandlers(stack, true);\n\t } else {\n\t var location = {\n\t url: url,\n\t line: lineNo,\n\t column: colNo\n\t };\n\t var name = undefined;\n\t var groups;\n\n\t if ({}.toString.call(message) === '[object String]') {\n\t var groups = message.match(ERROR_TYPES_RE);\n\n\t if (groups) {\n\t name = groups[1];\n\t message = groups[2];\n\t }\n\t }\n\n\t location.func = UNKNOWN_FUNCTION;\n\t stack = {\n\t name: name,\n\t message: message,\n\t url: getLocationHref(),\n\t stack: [location]\n\t };\n\t notifyHandlers(stack, true);\n\t }\n\n\t if (_oldOnerrorHandler) {\n\t return _oldOnerrorHandler.apply(this, arguments);\n\t }\n\n\t return false;\n\t }\n\n\t function installGlobalHandler() {\n\t if (_onErrorHandlerInstalled) {\n\t return;\n\t }\n\n\t _oldOnerrorHandler = _window$1.onerror;\n\t _window$1.onerror = traceKitWindowOnError;\n\t _onErrorHandlerInstalled = true;\n\t }\n\n\t function uninstallGlobalHandler() {\n\t if (!_onErrorHandlerInstalled) {\n\t return;\n\t }\n\n\t _window$1.onerror = _oldOnerrorHandler;\n\t _onErrorHandlerInstalled = false;\n\t _oldOnerrorHandler = undefined;\n\t }\n\n\t function processLastException() {\n\t var _lastExceptionStack = lastExceptionStack,\n\t _lastArgs = lastArgs;\n\t lastArgs = null;\n\t lastExceptionStack = null;\n\t lastException = null;\n\t notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n\t }\n\t /**\n\t * Reports an unhandled Error to TraceKit.\n\t * @param {Error} ex\n\t * @param {?boolean} rethrow If false, do not re-throw the exception.\n\t * Only used for window.onerror to not cause an infinite loop of\n\t * rethrowing.\n\t */\n\n\n\t function report(ex, rethrow) {\n\t var args = _slice.call(arguments, 1);\n\n\t if (lastExceptionStack) {\n\t if (lastException === ex) {\n\t return; // already caught by an inner catch block, ignore\n\t } else {\n\t processLastException();\n\t }\n\t }\n\n\t var stack = TraceKit.computeStackTrace(ex);\n\t lastExceptionStack = stack;\n\t lastException = ex;\n\t lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for\n\t // slow slow IE to see if onerror occurs or not before reporting\n\t // this exception; otherwise, we will end up with an incomplete\n\t // stack trace\n\n\t setTimeout(function () {\n\t if (lastException === ex) {\n\t processLastException();\n\t }\n\t }, stack.incomplete ? 2000 : 0);\n\n\t if (rethrow !== false) {\n\t throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n\t }\n\t }\n\n\t report.subscribe = subscribe;\n\t report.unsubscribe = unsubscribe;\n\t report.uninstall = unsubscribeAll;\n\t return report;\n\t}();\n\t/**\n\t * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n\t *\n\t * Syntax:\n\t * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n\t * Returns:\n\t * s.name - exception name\n\t * s.message - exception message\n\t * s.stack[i].url - JavaScript or HTML file URL\n\t * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n\t * s.stack[i].args - arguments passed to the function, if known\n\t * s.stack[i].line - line number, if known\n\t * s.stack[i].column - column number, if known\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers and unreliable column\n\t * number on top frame\n\t * - Opera 10: full stack trace with line and column numbers\n\t * - Opera 9-: full stack trace with line numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the topmost stacktrace element\n\t * only\n\t * - IE: no line numbers whatsoever\n\t *\n\t * Tries to guess names of anonymous functions by looking for assignments\n\t * in the source code. In IE and Safari, we have to guess source file names\n\t * by searching for function bodies inside all page scripts. This will not\n\t * work for scripts that are loaded cross-domain.\n\t * Here be dragons: some function names may be guessed incorrectly, and\n\t * duplicate functions may be mismatched.\n\t *\n\t * TraceKit.computeStackTrace should only be used for tracing purposes.\n\t * Logging of unhandled exceptions should be done with TraceKit.report,\n\t * which builds on top of TraceKit.computeStackTrace and provides better\n\t * IE support by utilizing the window.onerror event to retrieve information\n\t * about the top of the stack.\n\t *\n\t * Note: In IE and Safari, no stack trace is recorded on the Error object,\n\t * so computeStackTrace instead walks its *own* chain of callers.\n\t * This means that:\n\t * * in Safari, some methods may be missing from the stack trace;\n\t * * in IE, the topmost function in the stack trace will always be the\n\t * caller of computeStackTrace.\n\t *\n\t * This is okay for tracing (because you are likely to be calling\n\t * computeStackTrace from the function you want to be the topmost element\n\t * of the stack trace anyway), but not okay for logging unhandled\n\t * exceptions (because your catch block will likely be far away from the\n\t * inner function that actually caused the exception).\n\t *\n\t */\n\n\n\tTraceKit.computeStackTrace = function computeStackTraceWrapper() {\n\t // Contents of Exception in various browsers.\n\t //\n\t // SAFARI:\n\t // ex.message = Can't find variable: qq\n\t // ex.line = 59\n\t // ex.sourceId = 580238192\n\t // ex.sourceURL = http://...\n\t // ex.expressionBeginOffset = 96\n\t // ex.expressionCaretOffset = 98\n\t // ex.expressionEndOffset = 98\n\t // ex.name = ReferenceError\n\t //\n\t // FIREFOX:\n\t // ex.message = qq is not defined\n\t // ex.fileName = http://...\n\t // ex.lineNumber = 59\n\t // ex.columnNumber = 69\n\t // ex.stack = ...stack trace... (see the example below)\n\t // ex.name = ReferenceError\n\t //\n\t // CHROME:\n\t // ex.message = qq is not defined\n\t // ex.name = ReferenceError\n\t // ex.type = not_defined\n\t // ex.arguments = ['aa']\n\t // ex.stack = ...stack trace...\n\t //\n\t // INTERNET EXPLORER:\n\t // ex.message = ...\n\t // ex.name = ReferenceError\n\t //\n\t // OPERA:\n\t // ex.message = ...message... (see the example below)\n\t // ex.name = ReferenceError\n\t // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n\t // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n\t /**\n\t * Computes stack trace information from the stack property.\n\t * Chrome and Gecko use this property.\n\t * @param {Error} ex\n\t * @return {?Object.} Stack trace information.\n\t */\n\t function computeStackTraceFromStackProp(ex) {\n\t if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\t var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\t var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i; // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n\t // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n\n\t var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i; // Used to additionally parse URL/line/column from eval frames\n\n\t var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\t var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\t var lines = ex.stack.split('\\n');\n\t var stack = [];\n\t var submatch;\n\t var parts;\n\t var element;\n\t var reference = /^(.*) is undefined$/.exec(ex.message);\n\n\t for (var i = 0, j = lines.length; i < j; ++i) {\n\t if (parts = chrome.exec(lines[i])) {\n\t var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n\t var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n\t if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n\t // throw out eval line/column and use top-most line/column number\n\t parts[2] = submatch[1]; // url\n\n\t parts[3] = submatch[2]; // line\n\n\t parts[4] = submatch[3]; // column\n\t }\n\n\t element = {\n\t url: !isNative ? parts[2] : null,\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: isNative ? [parts[2]] : [],\n\t line: parts[3] ? +parts[3] : null,\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = winjs.exec(lines[i])) {\n\t element = {\n\t url: parts[2],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: [],\n\t line: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if (parts = gecko.exec(lines[i])) {\n\t var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\n\t if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n\t // throw out eval line/column and use top-most line number\n\t parts[3] = submatch[1];\n\t parts[4] = submatch[2];\n\t parts[5] = null; // no column when eval\n\t } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n\t // FireFox uses this awesome columnNumber property for its top frame\n\t // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n\t // so adding 1\n\t // NOTE: this hack doesn't work if top-most frame is eval\n\t stack[0].column = ex.columnNumber + 1;\n\t }\n\n\t element = {\n\t url: parts[3],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: parts[2] ? parts[2].split(',') : [],\n\t line: parts[4] ? +parts[4] : null,\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t } else {\n\t continue;\n\t }\n\n\t if (!element.func && element.line) {\n\t element.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (element.url && element.url.substr(0, 5) === 'blob:') {\n\t // Special case for handling JavaScript loaded into a blob.\n\t // We use a synchronous AJAX request here as a blob is already in\n\t // memory - it's not making a network request. This will generate a warning\n\t // in the browser console, but there has already been an error so that's not\n\t // that much of an issue.\n\t var xhr = new XMLHttpRequest();\n\t xhr.open('GET', element.url, false);\n\t xhr.send(null); // If we failed to download the source, skip this patch\n\n\t if (xhr.status === 200) {\n\t var source = xhr.responseText || ''; // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n\t // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n\n\t source = source.slice(-300); // Now we dig out the source map URL\n\n\t var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/); // If we don't find a source map comment or we find more than one, continue on to the next element.\n\n\t if (sourceMaps) {\n\t var sourceMapAddress = sourceMaps[1]; // Now we check to see if it's a relative URL.\n\t // If it is, convert it to an absolute one.\n\n\t if (sourceMapAddress.charAt(0) === '~') {\n\t sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n\t } // Now we strip the '.map' off of the end of the URL and update the\n\t // element so that Sentry can match the map to the blob.\n\n\n\t element.url = sourceMapAddress.slice(0, -4);\n\t }\n\t }\n\t }\n\n\t stack.push(element);\n\t }\n\n\t if (!stack.length) {\n\t return null;\n\t }\n\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t }\n\t /**\n\t * Adds information about the first frame to incomplete stack traces.\n\t * Safari and IE require this to get complete data on the first frame.\n\t * @param {Object.} stackInfo Stack trace information from\n\t * one of the compute* methods.\n\t * @param {string} url The URL of the script that caused an error.\n\t * @param {(number|string)} lineNo The line number of the script that\n\t * caused an error.\n\t * @param {string=} message The error generated by the browser, which\n\t * hopefully contains the name of the object that caused the error.\n\t * @return {boolean} Whether or not the stack information was\n\t * augmented.\n\t */\n\n\n\t function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n\t var initial = {\n\t url: url,\n\t line: lineNo\n\t };\n\n\t if (initial.url && initial.line) {\n\t stackInfo.incomplete = false;\n\n\t if (!initial.func) {\n\t initial.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (stackInfo.stack.length > 0) {\n\t if (stackInfo.stack[0].url === initial.url) {\n\t if (stackInfo.stack[0].line === initial.line) {\n\t return false; // already in stack trace\n\t } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {\n\t stackInfo.stack[0].line = initial.line;\n\t return false;\n\t }\n\t }\n\t }\n\n\t stackInfo.stack.unshift(initial);\n\t stackInfo.partial = true;\n\t return true;\n\t } else {\n\t stackInfo.incomplete = true;\n\t }\n\n\t return false;\n\t }\n\t /**\n\t * Computes stack trace information by walking the arguments.caller\n\t * chain at the time the exception occurred. This will cause earlier\n\t * frames to be missed but is the only way to get any stack trace in\n\t * Safari and IE. The top frame is restored by\n\t * {@link augmentStackTraceWithInitialElement}.\n\t * @param {Error} ex\n\t * @return {?Object.} Stack trace information.\n\t */\n\n\n\t function computeStackTraceByWalkingCallerChain(ex, depth) {\n\t var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n\t stack = [],\n\t funcs = {},\n\t recursion = false,\n\t parts,\n\t item;\n\n\t for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {\n\t if (curr === computeStackTrace || curr === TraceKit.report) {\n\t // console.log('skipping internal function');\n\t continue;\n\t }\n\n\t item = {\n\t url: null,\n\t func: UNKNOWN_FUNCTION,\n\t line: null,\n\t column: null\n\t };\n\n\t if (curr.name) {\n\t item.func = curr.name;\n\t } else if (parts = functionName.exec(curr.toString())) {\n\t item.func = parts[1];\n\t }\n\n\t if (typeof item.func === 'undefined') {\n\t try {\n\t item.func = parts.input.substring(0, parts.input.indexOf('{'));\n\t } catch (e) {}\n\t }\n\n\t if (funcs['' + curr]) {\n\t recursion = true;\n\t } else {\n\t funcs['' + curr] = true;\n\t }\n\n\t stack.push(item);\n\t }\n\n\t if (depth) {\n\t // console.log('depth is ' + depth);\n\t // console.log('stack is ' + stack.length);\n\t stack.splice(0, depth);\n\t }\n\n\t var result = {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);\n\t return result;\n\t }\n\t /**\n\t * Computes a stack trace for an exception.\n\t * @param {Error} ex\n\t * @param {(string|number)=} depth\n\t */\n\n\n\t function computeStackTrace(ex, depth) {\n\t var stack = null;\n\t depth = depth == null ? 0 : +depth;\n\n\t try {\n\t stack = computeStackTraceFromStackProp(ex);\n\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\n\t try {\n\t stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref()\n\t };\n\t }\n\n\t computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n\t computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\t return computeStackTrace;\n\t}();\n\n\tvar tracekit = TraceKit;\n\n\t/*\n\t * JavaScript MD5\n\t * https://github.com/blueimp/JavaScript-MD5\n\t *\n\t * Copyright 2011, Sebastian Tschan\n\t * https://blueimp.net\n\t *\n\t * Licensed under the MIT license:\n\t * https://opensource.org/licenses/MIT\n\t *\n\t * Based on\n\t * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n\t * Digest Algorithm, as defined in RFC 1321.\n\t * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for more info.\n\t */\n\n\t/*\n\t* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n\t* to work around bugs in some JS interpreters.\n\t*/\n\tfunction safeAdd(x, y) {\n\t var lsw = (x & 0xffff) + (y & 0xffff);\n\t var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\t return msw << 16 | lsw & 0xffff;\n\t}\n\t/*\n\t* Bitwise rotate a 32-bit number to the left.\n\t*/\n\n\n\tfunction bitRotateLeft(num, cnt) {\n\t return num << cnt | num >>> 32 - cnt;\n\t}\n\t/*\n\t* These functions implement the four basic operations the algorithm uses.\n\t*/\n\n\n\tfunction md5cmn(q, a, b, x, s, t) {\n\t return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n\t}\n\n\tfunction md5ff(a, b, c, d, x, s, t) {\n\t return md5cmn(b & c | ~b & d, a, b, x, s, t);\n\t}\n\n\tfunction md5gg(a, b, c, d, x, s, t) {\n\t return md5cmn(b & d | c & ~d, a, b, x, s, t);\n\t}\n\n\tfunction md5hh(a, b, c, d, x, s, t) {\n\t return md5cmn(b ^ c ^ d, a, b, x, s, t);\n\t}\n\n\tfunction md5ii(a, b, c, d, x, s, t) {\n\t return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n\t}\n\t/*\n\t* Calculate the MD5 of an array of little-endian words, and a bit length.\n\t*/\n\n\n\tfunction binlMD5(x, len) {\n\t /* append padding */\n\t x[len >> 5] |= 0x80 << len % 32;\n\t x[(len + 64 >>> 9 << 4) + 14] = len;\n\t var i;\n\t var olda;\n\t var oldb;\n\t var oldc;\n\t var oldd;\n\t var a = 1732584193;\n\t var b = -271733879;\n\t var c = -1732584194;\n\t var d = 271733878;\n\n\t for (i = 0; i < x.length; i += 16) {\n\t olda = a;\n\t oldb = b;\n\t oldc = c;\n\t oldd = d;\n\t a = md5ff(a, b, c, d, x[i], 7, -680876936);\n\t d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n\t c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n\t b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n\t a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n\t d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n\t c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n\t b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n\t a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n\t d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n\t c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n\t b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n\t a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n\t d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n\t c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n\t b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\t a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n\t d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n\t c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n\t b = md5gg(b, c, d, a, x[i], 20, -373897302);\n\t a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n\t d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n\t c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n\t b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n\t a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n\t d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n\t c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n\t b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n\t a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n\t d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n\t c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n\t b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\t a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n\t d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n\t c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n\t b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n\t a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n\t d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n\t c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n\t b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n\t a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n\t d = md5hh(d, a, b, c, x[i], 11, -358537222);\n\t c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n\t b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n\t a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n\t d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n\t c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n\t b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\t a = md5ii(a, b, c, d, x[i], 6, -198630844);\n\t d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n\t c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n\t b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n\t a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n\t d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n\t c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n\t b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n\t a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n\t d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n\t c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n\t b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n\t a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n\t d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n\t c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n\t b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\t a = safeAdd(a, olda);\n\t b = safeAdd(b, oldb);\n\t c = safeAdd(c, oldc);\n\t d = safeAdd(d, oldd);\n\t }\n\n\t return [a, b, c, d];\n\t}\n\t/*\n\t* Convert an array of little-endian words to a string\n\t*/\n\n\n\tfunction binl2rstr(input) {\n\t var i;\n\t var output = '';\n\t var length32 = input.length * 32;\n\n\t for (i = 0; i < length32; i += 8) {\n\t output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Convert a raw string to an array of little-endian words\n\t* Characters >255 have their high-byte silently ignored.\n\t*/\n\n\n\tfunction rstr2binl(input) {\n\t var i;\n\t var output = [];\n\t output[(input.length >> 2) - 1] = undefined;\n\n\t for (i = 0; i < output.length; i += 1) {\n\t output[i] = 0;\n\t }\n\n\t var length8 = input.length * 8;\n\n\t for (i = 0; i < length8; i += 8) {\n\t output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Calculate the MD5 of a raw string\n\t*/\n\n\n\tfunction rstrMD5(s) {\n\t return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n\t}\n\t/*\n\t* Calculate the HMAC-MD5, of a key and some data (raw strings)\n\t*/\n\n\n\tfunction rstrHMACMD5(key, data) {\n\t var i;\n\t var bkey = rstr2binl(key);\n\t var ipad = [];\n\t var opad = [];\n\t var hash;\n\t ipad[15] = opad[15] = undefined;\n\n\t if (bkey.length > 16) {\n\t bkey = binlMD5(bkey, key.length * 8);\n\t }\n\n\t for (i = 0; i < 16; i += 1) {\n\t ipad[i] = bkey[i] ^ 0x36363636;\n\t opad[i] = bkey[i] ^ 0x5c5c5c5c;\n\t }\n\n\t hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n\t return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n\t}\n\t/*\n\t* Convert a raw string to a hex string\n\t*/\n\n\n\tfunction rstr2hex(input) {\n\t var hexTab = '0123456789abcdef';\n\t var output = '';\n\t var x;\n\t var i;\n\n\t for (i = 0; i < input.length; i += 1) {\n\t x = input.charCodeAt(i);\n\t output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);\n\t }\n\n\t return output;\n\t}\n\t/*\n\t* Encode a string as utf-8\n\t*/\n\n\n\tfunction str2rstrUTF8(input) {\n\t return unescape(encodeURIComponent(input));\n\t}\n\t/*\n\t* Take string arguments and return either raw or hex encoded strings\n\t*/\n\n\n\tfunction rawMD5(s) {\n\t return rstrMD5(str2rstrUTF8(s));\n\t}\n\n\tfunction hexMD5(s) {\n\t return rstr2hex(rawMD5(s));\n\t}\n\n\tfunction rawHMACMD5(k, d) {\n\t return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n\t}\n\n\tfunction hexHMACMD5(k, d) {\n\t return rstr2hex(rawHMACMD5(k, d));\n\t}\n\n\tfunction md5(string, key, raw) {\n\t if (!key) {\n\t if (!raw) {\n\t return hexMD5(string);\n\t }\n\n\t return rawMD5(string);\n\t }\n\n\t if (!raw) {\n\t return hexHMACMD5(key, string);\n\t }\n\n\t return rawHMACMD5(key, string);\n\t}\n\n\tvar md5_1 = md5;\n\n\tfunction RavenConfigError(message) {\n\t this.name = 'RavenConfigError';\n\t this.message = message;\n\t}\n\n\tRavenConfigError.prototype = new Error();\n\tRavenConfigError.prototype.constructor = RavenConfigError;\n\tvar configError = RavenConfigError;\n\n\tvar wrapMethod = function wrapMethod(console, level, callback) {\n\t var originalConsoleLevel = console[level];\n\t var originalConsole = console;\n\n\t if (!(level in console)) {\n\t return;\n\t }\n\n\t var sentryLevel = level === 'warn' ? 'warning' : level;\n\n\t console[level] = function () {\n\t var args = [].slice.call(arguments);\n\t var msg = utils.safeJoin(args, ' ');\n\t var data = {\n\t level: sentryLevel,\n\t logger: 'console',\n\t extra: {\n\t arguments: args\n\t }\n\t };\n\n\t if (level === 'assert') {\n\t if (args[0] === false) {\n\t // Default browsers message\n\t msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n\t data.extra.arguments = args.slice(1);\n\t callback && callback(msg, data);\n\t }\n\t } else {\n\t callback && callback(msg, data);\n\t } // this fails for some browsers. :(\n\n\n\t if (originalConsoleLevel) {\n\t // IE9 doesn't allow calling apply on console functions directly\n\t // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n\t Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n\t }\n\t };\n\t};\n\n\tvar console$1 = {\n\t wrapMethod: wrapMethod\n\t};\n\n\t/*global XDomainRequest:false */\n\n\tvar isErrorEvent$1 = utils.isErrorEvent;\n\tvar isDOMError$1 = utils.isDOMError;\n\tvar isDOMException$1 = utils.isDOMException;\n\tvar isError$1 = utils.isError;\n\tvar isObject$1 = utils.isObject;\n\tvar isPlainObject$1 = utils.isPlainObject;\n\tvar isUndefined$1 = utils.isUndefined;\n\tvar isFunction$1 = utils.isFunction;\n\tvar isString$1 = utils.isString;\n\tvar isArray$1 = utils.isArray;\n\tvar isEmptyObject$1 = utils.isEmptyObject;\n\tvar each$1 = utils.each;\n\tvar objectMerge$1 = utils.objectMerge;\n\tvar truncate$1 = utils.truncate;\n\tvar objectFrozen$1 = utils.objectFrozen;\n\tvar hasKey$1 = utils.hasKey;\n\tvar joinRegExp$1 = utils.joinRegExp;\n\tvar urlencode$1 = utils.urlencode;\n\tvar uuid4$1 = utils.uuid4;\n\tvar htmlTreeAsString$1 = utils.htmlTreeAsString;\n\tvar isSameException$1 = utils.isSameException;\n\tvar isSameStacktrace$1 = utils.isSameStacktrace;\n\tvar parseUrl$1 = utils.parseUrl;\n\tvar fill$1 = utils.fill;\n\tvar supportsFetch$1 = utils.supportsFetch;\n\tvar supportsReferrerPolicy$1 = utils.supportsReferrerPolicy;\n\tvar serializeKeysForMessage$1 = utils.serializeKeysForMessage;\n\tvar serializeException$1 = utils.serializeException;\n\tvar sanitize$1 = utils.sanitize;\n\tvar wrapConsoleMethod = console$1.wrapMethod;\n\tvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n\t dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\n\tfunction now() {\n\t return +new Date();\n\t} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\n\tvar _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tvar _document = _window$2.document;\n\tvar _navigator = _window$2.navigator;\n\n\tfunction keepOriginalCallback(original, callback) {\n\t return isFunction$1(callback) ? function (data) {\n\t return callback(data, original);\n\t } : callback;\n\t} // First, check for JSON support\n\t// If there is no JSON, we no-op the core features of Raven\n\t// since JSON is required to encode the payload\n\n\n\tfunction Raven() {\n\t this._hasJSON = !!((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native)\n\n\t this._hasDocument = !isUndefined$1(_document);\n\t this._hasNavigator = !isUndefined$1(_navigator);\n\t this._lastCapturedException = null;\n\t this._lastData = null;\n\t this._lastEventId = null;\n\t this._globalServer = null;\n\t this._globalKey = null;\n\t this._globalProject = null;\n\t this._globalContext = {};\n\t this._globalOptions = {\n\t // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n\t release: _window$2.SENTRY_RELEASE && _window$2.SENTRY_RELEASE.id,\n\t logger: 'javascript',\n\t ignoreErrors: [],\n\t ignoreUrls: [],\n\t whitelistUrls: [],\n\t includePaths: [],\n\t headers: null,\n\t collectWindowErrors: true,\n\t captureUnhandledRejections: true,\n\t maxMessageLength: 0,\n\t // By default, truncates URL values to 250 chars\n\t maxUrlLength: 250,\n\t stackTraceLimit: 50,\n\t autoBreadcrumbs: true,\n\t instrument: true,\n\t sampleRate: 1,\n\t sanitizeKeys: []\n\t };\n\t this._fetchDefaults = {\n\t method: 'POST',\n\t // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t // https://caniuse.com/#feat=referrer-policy\n\t // It doesn't. And it throw exception instead of ignoring this parameter...\n\t // REF: https://github.com/getsentry/raven-js/issues/1233\n\t referrerPolicy: supportsReferrerPolicy$1() ? 'origin' : ''\n\t };\n\t this._ignoreOnError = 0;\n\t this._isRavenInstalled = false;\n\t this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first\n\t // before the console plugin has a chance to monkey patch\n\n\t this._originalConsole = _window$2.console || {};\n\t this._originalConsoleMethods = {};\n\t this._plugins = [];\n\t this._startTime = now();\n\t this._wrappedBuiltIns = [];\n\t this._breadcrumbs = [];\n\t this._lastCapturedEvent = null;\n\t this._keypressTimeout;\n\t this._location = _window$2.location;\n\t this._lastHref = this._location && this._location.href;\n\n\t this._resetBackoff(); // eslint-disable-next-line guard-for-in\n\n\n\t for (var method in this._originalConsole) {\n\t this._originalConsoleMethods[method] = this._originalConsole[method];\n\t }\n\t}\n\t/*\n\t * The core Raven singleton\n\t *\n\t * @this {Raven}\n\t */\n\n\n\tRaven.prototype = {\n\t // Hardcode version string so that raven source can be loaded directly via\n\t // webpack (using a build step causes webpack #1617). Grunt verifies that\n\t // this value matches package.json during build.\n\t // See: https://github.com/getsentry/raven-js/issues/465\n\t VERSION: '3.27.0',\n\t debug: false,\n\t TraceKit: tracekit,\n\t // alias to TraceKit\n\n\t /*\n\t * Configure Raven with a DSN and extra options\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t * @param {object} options Set of global options [optional]\n\t * @return {Raven}\n\t */\n\t config: function config(dsn, options) {\n\t var self = this;\n\n\t if (self._globalServer) {\n\t this._logDebug('error', 'Error: Raven has already been configured');\n\n\t return self;\n\t }\n\n\t if (!dsn) return self;\n\t var globalOptions = self._globalOptions; // merge in options\n\n\t if (options) {\n\t each$1(options, function (key, value) {\n\t // tags and extra are special and need to be put into context\n\t if (key === 'tags' || key === 'extra' || key === 'user') {\n\t self._globalContext[key] = value;\n\t } else {\n\t globalOptions[key] = value;\n\t }\n\t });\n\t }\n\n\t self.setDSN(dsn); // \"Script error.\" is hard coded into browsers for errors that it can't read.\n\t // this is the result of a script being pulled in from an external domain and CORS.\n\n\t globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n\t globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/); // join regexp rules into one big rule\n\n\t globalOptions.ignoreErrors = joinRegExp$1(globalOptions.ignoreErrors);\n\t globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp$1(globalOptions.ignoreUrls) : false;\n\t globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp$1(globalOptions.whitelistUrls) : false;\n\t globalOptions.includePaths = joinRegExp$1(globalOptions.includePaths);\n\t globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100\n\n\t var autoBreadcrumbDefaults = {\n\t xhr: true,\n\t console: true,\n\t dom: true,\n\t location: true,\n\t sentry: true\n\t };\n\t var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n\n\t if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n\t autoBreadcrumbs = objectMerge$1(autoBreadcrumbDefaults, autoBreadcrumbs);\n\t } else if (autoBreadcrumbs !== false) {\n\t autoBreadcrumbs = autoBreadcrumbDefaults;\n\t }\n\n\t globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\t var instrumentDefaults = {\n\t tryCatch: true\n\t };\n\t var instrument = globalOptions.instrument;\n\n\t if ({}.toString.call(instrument) === '[object Object]') {\n\t instrument = objectMerge$1(instrumentDefaults, instrument);\n\t } else if (instrument !== false) {\n\t instrument = instrumentDefaults;\n\t }\n\n\t globalOptions.instrument = instrument;\n\t tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining\n\n\t return self;\n\t },\n\n\t /*\n\t * Installs a global window.onerror error handler\n\t * to capture and report uncaught exceptions.\n\t * At this point, install() is required to be called due\n\t * to the way TraceKit is set up.\n\t *\n\t * @return {Raven}\n\t */\n\t install: function install() {\n\t var self = this;\n\n\t if (self.isSetup() && !self._isRavenInstalled) {\n\t tracekit.report.subscribe(function () {\n\t self._handleOnErrorStackInfo.apply(self, arguments);\n\t });\n\n\t if (self._globalOptions.captureUnhandledRejections) {\n\t self._attachPromiseRejectionHandler();\n\t }\n\n\t self._patchFunctionToString();\n\n\t if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n\t self._instrumentTryCatch();\n\t }\n\n\t if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins\n\n\t self._drainPlugins();\n\n\t self._isRavenInstalled = true;\n\t }\n\n\t Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n\t return this;\n\t },\n\n\t /*\n\t * Set the DSN (can be called multiple time unlike config)\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t */\n\t setDSN: function setDSN(dsn) {\n\t var self = this,\n\t uri = self._parseDSN(dsn),\n\t lastSlash = uri.path.lastIndexOf('/'),\n\t path = uri.path.substr(1, lastSlash);\n\n\t self._dsn = dsn;\n\t self._globalKey = uri.user;\n\t self._globalSecret = uri.pass && uri.pass.substr(1);\n\t self._globalProject = uri.path.substr(lastSlash + 1);\n\t self._globalServer = self._getGlobalServer(uri);\n\t self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a\n\t // new project/server\n\n\t this._resetBackoff();\n\t },\n\n\t /*\n\t * Wrap code within a context so Raven can capture errors\n\t * reliably across domains that is executed immediately.\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The callback to be immediately executed within the context\n\t * @param {array} args An array of arguments to be called with the callback [optional]\n\t */\n\t context: function context(options, func, args) {\n\t if (isFunction$1(options)) {\n\t args = func || [];\n\t func = options;\n\t options = {};\n\t }\n\n\t return this.wrap(options, func).apply(this, args);\n\t },\n\n\t /*\n\t * Wrap code within a context and returns back a new function to be executed\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The function to be wrapped in a new context\n\t * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n\t * @return {function} The newly wrapped functions with a context\n\t */\n\t wrap: function wrap(options, func, _before) {\n\t var self = this; // 1 argument has been passed, and it's not a function\n\t // so just return it\n\n\t if (isUndefined$1(func) && !isFunction$1(options)) {\n\t return options;\n\t } // options is optional\n\n\n\t if (isFunction$1(options)) {\n\t func = options;\n\t options = undefined;\n\t } // At this point, we've passed along 2 arguments, and the second one\n\t // is not a function either, so we'll just return the second argument.\n\n\n\t if (!isFunction$1(func)) {\n\t return func;\n\t } // We don't wanna wrap it twice!\n\n\n\t try {\n\t if (func.__raven__) {\n\t return func;\n\t } // If this has already been wrapped in the past, return that\n\n\n\t if (func.__raven_wrapper__) {\n\t return func.__raven_wrapper__;\n\t }\n\t } catch (e) {\n\t // Just accessing custom props in some Selenium environments\n\t // can cause a \"Permission denied\" exception (see raven-js#495).\n\t // Bail on wrapping and return the function as-is (defers to window.onerror).\n\t return func;\n\t }\n\n\t function wrapped() {\n\t var args = [],\n\t i = arguments.length,\n\t deep = !options || options && options.deep !== false;\n\n\t if (_before && isFunction$1(_before)) {\n\t _before.apply(this, arguments);\n\t } // Recursively wrap all of a function's arguments that are\n\t // functions themselves.\n\n\n\t while (i--) {\n\t args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\t }\n\n\t try {\n\t // Attempt to invoke user-land function\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n\t // means Raven caught an error invoking your application code. This is\n\t // expected behavior and NOT indicative of a bug with Raven.js.\n\t return func.apply(this, args);\n\t } catch (e) {\n\t self._ignoreNextOnError();\n\n\t self.captureException(e, options);\n\t throw e;\n\t }\n\t } // copy over properties of the old function\n\n\n\t for (var property in func) {\n\t if (hasKey$1(func, property)) {\n\t wrapped[property] = func[property];\n\t }\n\t }\n\n\t wrapped.prototype = func.prototype;\n\t func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already\n\t // for both debugging and to prevent it to being wrapped/filled twice\n\n\t wrapped.__raven__ = true;\n\t wrapped.__orig__ = func;\n\t return wrapped;\n\t },\n\n\t /**\n\t * Uninstalls the global error handler.\n\t *\n\t * @return {Raven}\n\t */\n\t uninstall: function uninstall() {\n\t tracekit.report.uninstall();\n\n\t this._detachPromiseRejectionHandler();\n\n\t this._unpatchFunctionToString();\n\n\t this._restoreBuiltIns();\n\n\t this._restoreConsole();\n\n\t Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n\t this._isRavenInstalled = false;\n\t return this;\n\t },\n\n\t /**\n\t * Callback used for `unhandledrejection` event\n\t *\n\t * @param {PromiseRejectionEvent} event An object containing\n\t * promise: the Promise that was rejected\n\t * reason: the value with which the Promise was rejected\n\t * @return void\n\t */\n\t _promiseRejectionHandler: function _promiseRejectionHandler(event) {\n\t this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n\n\t this.captureException(event.reason, {\n\t mechanism: {\n\t type: 'onunhandledrejection',\n\t handled: false\n\t }\n\t });\n\t },\n\n\t /**\n\t * Installs the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _attachPromiseRejectionHandler: function _attachPromiseRejectionHandler() {\n\t this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n\t _window$2.addEventListener && _window$2.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Uninstalls the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _detachPromiseRejectionHandler: function _detachPromiseRejectionHandler() {\n\t _window$2.removeEventListener && _window$2.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Manually capture an exception and send it over to Sentry\n\t *\n\t * @param {error} ex An exception to be logged\n\t * @param {object} options A specific set of options for this error [optional]\n\t * @return {Raven}\n\t */\n\t captureException: function captureException(ex, options) {\n\t options = objectMerge$1({\n\t trimHeadFrames: 0\n\t }, options ? options : {});\n\n\t if (isErrorEvent$1(ex) && ex.error) {\n\t // If it is an ErrorEvent with `error` property, extract it to get actual Error\n\t ex = ex.error;\n\t } else if (isDOMError$1(ex) || isDOMException$1(ex)) {\n\t // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n\t // then we just extract the name and message, as they don't provide anything else\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\t var name = ex.name || (isDOMError$1(ex) ? 'DOMError' : 'DOMException');\n\t var message = ex.message ? name + ': ' + ex.message : name;\n\t return this.captureMessage(message, objectMerge$1(options, {\n\t // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n\t // but it's barely any overhead so we may at least try\n\t stacktrace: true,\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t }));\n\t } else if (isError$1(ex)) {\n\t // we have a real Error object\n\t ex = ex;\n\t } else if (isPlainObject$1(ex)) {\n\t // If it is plain Object, serialize it manually and extract options\n\t // This will allow us to group events based on top-level keys\n\t // which is much better than creating new group when any key/value change\n\t options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n\t ex = new Error(options.message);\n\t } else {\n\t // If none of previous checks were valid, then it means that\n\t // it's not a DOMError/DOMException\n\t // it's not a plain Object\n\t // it's not a valid ErrorEvent (one with an error property)\n\t // it's not an Error\n\t // So bail out and capture it as a simple message:\n\t return this.captureMessage(ex, objectMerge$1(options, {\n\t stacktrace: true,\n\t // if we fall back to captureMessage, default to attempting a new trace\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t }));\n\t } // Store the raw exception object for potential debugging and introspection\n\n\n\t this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it,\n\t // which means you have to wrap it in try/catch. Instead, we\n\t // can wrap it here and only re-raise if TraceKit.report\n\t // raises an exception different from the one we asked to\n\t // report on.\n\n\t try {\n\t var stack = tracekit.computeStackTrace(ex);\n\n\t this._handleStackInfo(stack, options);\n\t } catch (ex1) {\n\t if (ex !== ex1) {\n\t throw ex1;\n\t }\n\t }\n\n\t return this;\n\t },\n\t _getCaptureExceptionOptionsFromPlainObject: function _getCaptureExceptionOptionsFromPlainObject(currentOptions, ex) {\n\t var exKeys = Object.keys(ex).sort();\n\t var options = objectMerge$1(currentOptions, {\n\t message: 'Non-Error exception captured with keys: ' + serializeKeysForMessage$1(exKeys),\n\t fingerprint: [md5_1(exKeys)],\n\t extra: currentOptions.extra || {}\n\t });\n\t options.extra.__serialized__ = serializeException$1(ex);\n\t return options;\n\t },\n\n\t /*\n\t * Manually send a message to Sentry\n\t *\n\t * @param {string} msg A plain message to be captured in Sentry\n\t * @param {object} options A specific set of options for this message [optional]\n\t * @return {Raven}\n\t */\n\t captureMessage: function captureMessage(msg, options) {\n\t // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n\t // early call; we'll error on the side of logging anything called before configuration since it's\n\t // probably something you should see:\n\t if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) {\n\t return;\n\t }\n\n\t options = options || {};\n\t msg = msg + ''; // Make sure it's actually a string\n\n\t var data = objectMerge$1({\n\t message: msg\n\t }, options);\n\t var ex; // Generate a \"synthetic\" stack trace from this point.\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n\t // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n\t // or if it catches a thrown object without a \"stack\" property.\n\n\t try {\n\t throw new Error(msg);\n\t } catch (ex1) {\n\t ex = ex1;\n\t } // null exception name so `Error` isn't prefixed to msg\n\n\n\t ex.name = null;\n\t var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n\n\t var initialCall = isArray$1(stack.stack) && stack.stack[1]; // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n\t // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n\t // initialCall => captureException(string) => captureMessage(string)\n\n\t if (initialCall && initialCall.func === 'Raven.captureException') {\n\t initialCall = stack.stack[2];\n\t }\n\n\t var fileurl = initialCall && initialCall.url || '';\n\n\t if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) {\n\t return;\n\t } // Always attempt to get stacktrace if message is empty.\n\t // It's the only way to provide any helpful information to the user.\n\n\n\t if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n\t // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n\t data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\t options = objectMerge$1({\n\t trimHeadFrames: 0\n\t }, options); // Since we know this is a synthetic trace, the top frame (this function call)\n\t // MUST be from Raven.js, so mark it for trimming\n\t // We add to the trim counter so that callers can choose to trim extra frames, such\n\t // as utility functions.\n\n\t options.trimHeadFrames += 1;\n\n\t var frames = this._prepareFrames(stack, options);\n\n\t data.stacktrace = {\n\t // Sentry expects frames oldest to newest\n\t frames: frames.reverse()\n\t };\n\t } // Make sure that fingerprint is always wrapped in an array\n\n\n\t if (data.fingerprint) {\n\t data.fingerprint = isArray$1(data.fingerprint) ? data.fingerprint : [data.fingerprint];\n\t } // Fire away!\n\n\n\t this._send(data);\n\n\t return this;\n\t },\n\t captureBreadcrumb: function captureBreadcrumb(obj) {\n\t var crumb = objectMerge$1({\n\t timestamp: now() / 1000\n\t }, obj);\n\n\t if (isFunction$1(this._globalOptions.breadcrumbCallback)) {\n\t var result = this._globalOptions.breadcrumbCallback(crumb);\n\n\t if (isObject$1(result) && !isEmptyObject$1(result)) {\n\t crumb = result;\n\t } else if (result === false) {\n\t return this;\n\t }\n\t }\n\n\t this._breadcrumbs.push(crumb);\n\n\t if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n\t this._breadcrumbs.shift();\n\t }\n\n\t return this;\n\t },\n\t addPlugin: function addPlugin(plugin\n\t /*arg1, arg2, ... argN*/\n\t ) {\n\t var pluginArgs = [].slice.call(arguments, 1);\n\n\t this._plugins.push([plugin, pluginArgs]);\n\n\t if (this._isRavenInstalled) {\n\t this._drainPlugins();\n\t }\n\n\t return this;\n\t },\n\n\t /*\n\t * Set/clear a user to be sent along with the payload.\n\t *\n\t * @param {object} user An object representing user data [optional]\n\t * @return {Raven}\n\t */\n\t setUserContext: function setUserContext(user) {\n\t // Intentionally do not merge here since that's an unexpected behavior.\n\t this._globalContext.user = user;\n\t return this;\n\t },\n\n\t /*\n\t * Merge extra attributes to be sent along with the payload.\n\t *\n\t * @param {object} extra An object representing extra data [optional]\n\t * @return {Raven}\n\t */\n\t setExtraContext: function setExtraContext(extra) {\n\t this._mergeContext('extra', extra);\n\n\t return this;\n\t },\n\n\t /*\n\t * Merge tags to be sent along with the payload.\n\t *\n\t * @param {object} tags An object representing tags [optional]\n\t * @return {Raven}\n\t */\n\t setTagsContext: function setTagsContext(tags) {\n\t this._mergeContext('tags', tags);\n\n\t return this;\n\t },\n\n\t /*\n\t * Clear all of the context.\n\t *\n\t * @return {Raven}\n\t */\n\t clearContext: function clearContext() {\n\t this._globalContext = {};\n\t return this;\n\t },\n\n\t /*\n\t * Get a copy of the current context. This cannot be mutated.\n\t *\n\t * @return {object} copy of context\n\t */\n\t getContext: function getContext() {\n\t // lol javascript\n\t return JSON.parse(stringify_1(this._globalContext));\n\t },\n\n\t /*\n\t * Set environment of application\n\t *\n\t * @param {string} environment Typically something like 'production'.\n\t * @return {Raven}\n\t */\n\t setEnvironment: function setEnvironment(environment) {\n\t this._globalOptions.environment = environment;\n\t return this;\n\t },\n\n\t /*\n\t * Set release version of application\n\t *\n\t * @param {string} release Typically something like a git SHA to identify version\n\t * @return {Raven}\n\t */\n\t setRelease: function setRelease(release) {\n\t this._globalOptions.release = release;\n\t return this;\n\t },\n\n\t /*\n\t * Set the dataCallback option\n\t *\n\t * @param {function} callback The callback to run which allows the\n\t * data blob to be mutated before sending\n\t * @return {Raven}\n\t */\n\t setDataCallback: function setDataCallback(callback) {\n\t var original = this._globalOptions.dataCallback;\n\t this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the breadcrumbCallback option\n\t *\n\t * @param {function} callback The callback to run which allows filtering\n\t * or mutating breadcrumbs\n\t * @return {Raven}\n\t */\n\t setBreadcrumbCallback: function setBreadcrumbCallback(callback) {\n\t var original = this._globalOptions.breadcrumbCallback;\n\t this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the shouldSendCallback option\n\t *\n\t * @param {function} callback The callback to run which allows\n\t * introspecting the blob before sending\n\t * @return {Raven}\n\t */\n\t setShouldSendCallback: function setShouldSendCallback(callback) {\n\t var original = this._globalOptions.shouldSendCallback;\n\t this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /**\n\t * Override the default HTTP transport mechanism that transmits data\n\t * to the Sentry server.\n\t *\n\t * @param {function} transport Function invoked instead of the default\n\t * `makeRequest` handler.\n\t *\n\t * @return {Raven}\n\t */\n\t setTransport: function setTransport(transport) {\n\t this._globalOptions.transport = transport;\n\t return this;\n\t },\n\n\t /*\n\t * Get the latest raw exception that was captured by Raven.\n\t *\n\t * @return {error}\n\t */\n\t lastException: function lastException() {\n\t return this._lastCapturedException;\n\t },\n\n\t /*\n\t * Get the last event id\n\t *\n\t * @return {string}\n\t */\n\t lastEventId: function lastEventId() {\n\t return this._lastEventId;\n\t },\n\n\t /*\n\t * Determine if Raven is setup and ready to go.\n\t *\n\t * @return {boolean}\n\t */\n\t isSetup: function isSetup() {\n\t if (!this._hasJSON) return false; // needs JSON support\n\n\t if (!this._globalServer) {\n\t if (!this.ravenNotConfiguredError) {\n\t this.ravenNotConfiguredError = true;\n\n\t this._logDebug('error', 'Error: Raven has not been configured.');\n\t }\n\n\t return false;\n\t }\n\n\t return true;\n\t },\n\t afterLoad: function afterLoad() {\n\t // TODO: remove window dependence?\n\t // Attempt to initialize Raven on load\n\t var RavenConfig = _window$2.RavenConfig;\n\n\t if (RavenConfig) {\n\t this.config(RavenConfig.dsn, RavenConfig.config).install();\n\t }\n\t },\n\t showReportDialog: function showReportDialog(options) {\n\t if (!_document // doesn't work without a document (React native)\n\t ) return;\n\t options = objectMerge$1({\n\t eventId: this.lastEventId(),\n\t dsn: this._dsn,\n\t user: this._globalContext.user || {}\n\t }, options);\n\n\t if (!options.eventId) {\n\t throw new configError('Missing eventId');\n\t }\n\n\t if (!options.dsn) {\n\t throw new configError('Missing DSN');\n\t }\n\n\t var encode = encodeURIComponent;\n\t var encodedOptions = [];\n\n\t for (var key in options) {\n\t if (key === 'user') {\n\t var user = options.user;\n\t if (user.name) encodedOptions.push('name=' + encode(user.name));\n\t if (user.email) encodedOptions.push('email=' + encode(user.email));\n\t } else {\n\t encodedOptions.push(encode(key) + '=' + encode(options[key]));\n\t }\n\t }\n\n\t var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n\t var script = _document.createElement('script');\n\n\t script.async = true;\n\t script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n\n\t (_document.head || _document.body).appendChild(script);\n\t },\n\n\t /**** Private functions ****/\n\t _ignoreNextOnError: function _ignoreNextOnError() {\n\t var self = this;\n\t this._ignoreOnError += 1;\n\t setTimeout(function () {\n\t // onerror should trigger before setTimeout\n\t self._ignoreOnError -= 1;\n\t });\n\t },\n\t _triggerEvent: function _triggerEvent(eventType, options) {\n\t // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n\t var evt, key;\n\t if (!this._hasDocument) return;\n\t options = options || {};\n\t eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n\t if (_document.createEvent) {\n\t evt = _document.createEvent('HTMLEvents');\n\t evt.initEvent(eventType, true, true);\n\t } else {\n\t evt = _document.createEventObject();\n\t evt.eventType = eventType;\n\t }\n\n\t for (key in options) {\n\t if (hasKey$1(options, key)) {\n\t evt[key] = options[key];\n\t }\n\t }\n\n\t if (_document.createEvent) {\n\t // IE9 if standards\n\t _document.dispatchEvent(evt);\n\t } else {\n\t // IE8 regardless of Quirks or Standards\n\t // IE9 if quirks\n\t try {\n\t _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n\t } catch (e) {// Do nothing\n\t }\n\t }\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture UI breadcrumbs\n\t * @param evtName the event name (e.g. \"click\")\n\t * @returns {Function}\n\t * @private\n\t */\n\t _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) {\n\t var self = this;\n\t return function (evt) {\n\t // reset keypress timeout; e.g. triggering a 'click' after\n\t // a 'keypress' will reset the keypress debounce so that a new\n\t // set of keypresses can be recorded\n\t self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same\n\t // event (e.g. event propagation through node ancestors). Ignore if we've\n\t // already captured the event.\n\n\t if (self._lastCapturedEvent === evt) return;\n\t self._lastCapturedEvent = evt; // try/catch both:\n\t // - accessing evt.target (see getsentry/raven-js#838, #768)\n\t // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n\t // can throw an exception in some circumstances.\n\n\t var target;\n\n\t try {\n\t target = htmlTreeAsString$1(evt.target);\n\t } catch (e) {\n\t target = '';\n\t }\n\n\t self.captureBreadcrumb({\n\t category: 'ui.' + evtName,\n\t // e.g. ui.click, ui.input\n\t message: target\n\t });\n\t };\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture keypress UI events\n\t * @returns {Function}\n\t * @private\n\t */\n\t _keypressEventHandler: function _keypressEventHandler() {\n\t var self = this,\n\t debounceDuration = 1000; // milliseconds\n\t // TODO: if somehow user switches keypress target before\n\t // debounce timeout is triggered, we will only capture\n\t // a single breadcrumb from the FIRST target (acceptable?)\n\n\t return function (evt) {\n\t var target;\n\n\t try {\n\t target = evt.target;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\n\t var tagName = target && target.tagName; // only consider keypress events on actual input elements\n\t // this will disregard keypresses targeting body (e.g. tabbing\n\t // through elements, hotkeys, etc)\n\n\t if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent\n\t // keypresses until debounce clears\n\n\t var timeout = self._keypressTimeout;\n\n\t if (!timeout) {\n\t self._breadcrumbEventHandler('input')(evt);\n\t }\n\n\t clearTimeout(timeout);\n\t self._keypressTimeout = setTimeout(function () {\n\t self._keypressTimeout = null;\n\t }, debounceDuration);\n\t };\n\t },\n\n\t /**\n\t * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n\t * @param to the originating URL\n\t * @param from the target URL\n\t * @private\n\t */\n\t _captureUrlChange: function _captureUrlChange(from, to) {\n\t var parsedLoc = parseUrl$1(this._location.href);\n\t var parsedTo = parseUrl$1(to);\n\t var parsedFrom = parseUrl$1(from); // because onpopstate only tells you the \"new\" (to) value of location.href, and\n\t // not the previous (from) value, we need to track the value of the current URL\n\t // state ourselves\n\n\t this._lastHref = to; // Use only the path component of the URL if the URL matches the current\n\t // document (almost all the time when using pushState)\n\n\t if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative;\n\t if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative;\n\t this.captureBreadcrumb({\n\t category: 'navigation',\n\t data: {\n\t to: to,\n\t from: from\n\t }\n\t });\n\t },\n\t _patchFunctionToString: function _patchFunctionToString() {\n\t var self = this;\n\t self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native\n\n\t Function.prototype.toString = function () {\n\t if (typeof this === 'function' && this.__raven__) {\n\t return self._originalFunctionToString.apply(this.__orig__, arguments);\n\t }\n\n\t return self._originalFunctionToString.apply(this, arguments);\n\t };\n\t },\n\t _unpatchFunctionToString: function _unpatchFunctionToString() {\n\t if (this._originalFunctionToString) {\n\t // eslint-disable-next-line no-extend-native\n\t Function.prototype.toString = this._originalFunctionToString;\n\t }\n\t },\n\n\t /**\n\t * Wrap timer functions and event targets to catch errors and provide\n\t * better metadata.\n\t */\n\t _instrumentTryCatch: function _instrumentTryCatch() {\n\t var self = this;\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapTimeFn(orig) {\n\t return function (fn, t) {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\n\t var originalCallback = args[0];\n\n\t if (isFunction$1(originalCallback)) {\n\t args[0] = self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: orig.name || ''\n\t }\n\t }\n\t }, originalCallback);\n\t } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n\t // also supports only two arguments and doesn't care what this is, so we\n\t // can just call the original function directly.\n\n\n\t if (orig.apply) {\n\t return orig.apply(this, args);\n\t } else {\n\t return orig(args[0], args[1]);\n\t }\n\t };\n\t }\n\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n\t function wrapEventTarget(global) {\n\t var proto = _window$2[global] && _window$2[global].prototype;\n\n\t if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n\t fill$1(proto, 'addEventListener', function (orig) {\n\t return function (evtName, fn, capture, secure) {\n\t // preserve arity\n\t try {\n\t if (fn && fn.handleEvent) {\n\t fn.handleEvent = self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'handleEvent',\n\t handler: fn && fn.name || ''\n\t }\n\t }\n\t }, fn.handleEvent);\n\t }\n\t } catch (err) {} // can sometimes get 'Permission denied to access property \"handle Event'\n\t // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n\t // so that we don't have more than one wrapper function\n\n\n\t var before, clickHandler, keypressHandler;\n\n\t if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) {\n\t // NOTE: generating multiple handlers per addEventListener invocation, should\n\t // revisit and verify we can just use one (almost certainly)\n\t clickHandler = self._breadcrumbEventHandler('click');\n\t keypressHandler = self._keypressEventHandler();\n\n\t before = function before(evt) {\n\t // need to intercept every DOM event in `before` argument, in case that\n\t // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n\t // see #724\n\t if (!evt) return;\n\t var eventType;\n\n\t try {\n\t eventType = evt.type;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\n\t if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt);\n\t };\n\t }\n\n\t return orig.call(this, evtName, self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'addEventListener',\n\t handler: fn && fn.name || ''\n\t }\n\t }\n\t }, fn, before), capture, secure);\n\t };\n\t }, wrappedBuiltIns);\n\t fill$1(proto, 'removeEventListener', function (orig) {\n\t return function (evt, fn, capture, secure) {\n\t try {\n\t fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n\t } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n\t }\n\n\t return orig.call(this, evt, fn, capture, secure);\n\t };\n\t }, wrappedBuiltIns);\n\t }\n\t }\n\n\t fill$1(_window$2, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n\t fill$1(_window$2, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n\n\t if (_window$2.requestAnimationFrame) {\n\t fill$1(_window$2, 'requestAnimationFrame', function (orig) {\n\t return function (cb) {\n\t return orig(self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'requestAnimationFrame',\n\t handler: orig && orig.name || ''\n\t }\n\t }\n\t }, cb));\n\t };\n\t }, wrappedBuiltIns);\n\t } // event targets borrowed from bugsnag-js:\n\t // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n\n\n\t var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n\n\t for (var i = 0; i < eventTargets.length; i++) {\n\t wrapEventTarget(eventTargets[i]);\n\t }\n\t },\n\n\t /**\n\t * Instrument browser built-ins w/ breadcrumb capturing\n\t * - XMLHttpRequests\n\t * - DOM interactions (click/typing)\n\t * - window.location changes\n\t * - console\n\t *\n\t * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n\t */\n\t _instrumentBreadcrumbs: function _instrumentBreadcrumbs() {\n\t var self = this;\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapProp(prop, xhr) {\n\t if (prop in xhr && isFunction$1(xhr[prop])) {\n\t fill$1(xhr, prop, function (orig) {\n\t return self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: prop,\n\t handler: orig && orig.name || ''\n\t }\n\t }\n\t }, orig);\n\t }); // intentionally don't track filled methods on XHR instances\n\t }\n\t }\n\n\t if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$2) {\n\t var xhrproto = _window$2.XMLHttpRequest && _window$2.XMLHttpRequest.prototype;\n\t fill$1(xhrproto, 'open', function (origOpen) {\n\t return function (method, url) {\n\t // preserve arity\n\t // if Sentry key appears in URL, don't capture\n\t if (isString$1(url) && url.indexOf(self._globalKey) === -1) {\n\t this.__raven_xhr = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\t }\n\n\t return origOpen.apply(this, arguments);\n\t };\n\t }, wrappedBuiltIns);\n\t fill$1(xhrproto, 'send', function (origSend) {\n\t return function () {\n\t // preserve arity\n\t var xhr = this;\n\n\t function onreadystatechangeHandler() {\n\t if (xhr.__raven_xhr && xhr.readyState === 4) {\n\t try {\n\t // touching statusCode in some platforms throws\n\t // an exception\n\t xhr.__raven_xhr.status_code = xhr.status;\n\t } catch (e) {\n\t /* do nothing */\n\t }\n\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'xhr',\n\t data: xhr.__raven_xhr\n\t });\n\t }\n\t }\n\n\t var props = ['onload', 'onerror', 'onprogress'];\n\n\t for (var j = 0; j < props.length; j++) {\n\t wrapProp(props[j], xhr);\n\t }\n\n\t if ('onreadystatechange' in xhr && isFunction$1(xhr.onreadystatechange)) {\n\t fill$1(xhr, 'onreadystatechange', function (orig) {\n\t return self.wrap({\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'onreadystatechange',\n\t handler: orig && orig.name || ''\n\t }\n\t }\n\t }, orig, onreadystatechangeHandler);\n\t }\n\t /* intentionally don't track this instrumentation */\n\t );\n\t } else {\n\t // if onreadystatechange wasn't actually set by the page on this xhr, we\n\t // are free to set our own and capture the breadcrumb\n\t xhr.onreadystatechange = onreadystatechangeHandler;\n\t }\n\n\t return origSend.apply(this, arguments);\n\t };\n\t }, wrappedBuiltIns);\n\t }\n\n\t if (autoBreadcrumbs.xhr && supportsFetch$1()) {\n\t fill$1(_window$2, 'fetch', function (origFetch) {\n\t return function () {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\n\t var fetchInput = args[0];\n\t var method = 'GET';\n\t var url;\n\n\t if (typeof fetchInput === 'string') {\n\t url = fetchInput;\n\t } else if ('Request' in _window$2 && fetchInput instanceof _window$2.Request) {\n\t url = fetchInput.url;\n\n\t if (fetchInput.method) {\n\t method = fetchInput.method;\n\t }\n\t } else {\n\t url = '' + fetchInput;\n\t } // if Sentry key appears in URL, don't capture, as it's our own request\n\n\n\t if (url.indexOf(self._globalKey) !== -1) {\n\t return origFetch.apply(this, args);\n\t }\n\n\t if (args[1] && args[1].method) {\n\t method = args[1].method;\n\t }\n\n\t var fetchData = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\t return origFetch.apply(this, args).then(function (response) {\n\t fetchData.status_code = response.status;\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData\n\t });\n\t return response;\n\t })['catch'](function (err) {\n\t // if there is an error performing the request\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData,\n\t level: 'error'\n\t });\n\t throw err;\n\t });\n\t };\n\t }, wrappedBuiltIns);\n\t } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n\t // to the document. Do this before we instrument addEventListener.\n\n\n\t if (autoBreadcrumbs.dom && this._hasDocument) {\n\t if (_document.addEventListener) {\n\t _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n\n\t _document.addEventListener('keypress', self._keypressEventHandler(), false);\n\t } else if (_document.attachEvent) {\n\t // IE8 Compatibility\n\t _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n\n\t _document.attachEvent('onkeypress', self._keypressEventHandler());\n\t }\n\t } // record navigation (URL) changes\n\t // NOTE: in Chrome App environment, touching history.pushState, *even inside\n\t // a try/catch block*, will cause Chrome to output an error to console.error\n\t // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n\n\n\t var chrome = _window$2.chrome;\n\t var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n\t var hasPushAndReplaceState = !isChromePackagedApp && _window$2.history && _window$2.history.pushState && _window$2.history.replaceState;\n\n\t if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n\t // TODO: remove onpopstate handler on uninstall()\n\t var oldOnPopState = _window$2.onpopstate;\n\n\t _window$2.onpopstate = function () {\n\t var currentHref = self._location.href;\n\n\t self._captureUrlChange(self._lastHref, currentHref);\n\n\t if (oldOnPopState) {\n\t return oldOnPopState.apply(this, arguments);\n\t }\n\t };\n\n\t var historyReplacementFunction = function historyReplacementFunction(origHistFunction) {\n\t // note history.pushState.length is 0; intentionally not declaring\n\t // params to preserve 0 arity\n\t return function ()\n\t /* state, title, url */\n\t {\n\t var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional\n\n\t if (url) {\n\t // coerce to string (this is what pushState does)\n\t self._captureUrlChange(self._lastHref, url + '');\n\t }\n\n\t return origHistFunction.apply(this, arguments);\n\t };\n\t };\n\n\t fill$1(_window$2.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n\t fill$1(_window$2.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n\t }\n\n\t if (autoBreadcrumbs.console && 'console' in _window$2 && console.log) {\n\t // console\n\t var consoleMethodCallback = function consoleMethodCallback(msg, data) {\n\t self.captureBreadcrumb({\n\t message: msg,\n\t level: data.level,\n\t category: 'console'\n\t });\n\t };\n\n\t each$1(['debug', 'info', 'warn', 'error', 'log'], function (_, level) {\n\t wrapConsoleMethod(console, level, consoleMethodCallback);\n\t });\n\t }\n\t },\n\t _restoreBuiltIns: function _restoreBuiltIns() {\n\t // restore any wrapped builtins\n\t var builtin;\n\n\t while (this._wrappedBuiltIns.length) {\n\t builtin = this._wrappedBuiltIns.shift();\n\t var obj = builtin[0],\n\t name = builtin[1],\n\t orig = builtin[2];\n\t obj[name] = orig;\n\t }\n\t },\n\t _restoreConsole: function _restoreConsole() {\n\t // eslint-disable-next-line guard-for-in\n\t for (var method in this._originalConsoleMethods) {\n\t this._originalConsole[method] = this._originalConsoleMethods[method];\n\t }\n\t },\n\t _drainPlugins: function _drainPlugins() {\n\t var self = this; // FIX ME TODO\n\n\t each$1(this._plugins, function (_, plugin) {\n\t var installer = plugin[0];\n\t var args = plugin[1];\n\t installer.apply(self, [self].concat(args));\n\t });\n\t },\n\t _parseDSN: function _parseDSN(str) {\n\t var m = dsnPattern.exec(str),\n\t dsn = {},\n\t i = 7;\n\n\t try {\n\t while (i--) {\n\t dsn[dsnKeys[i]] = m[i] || '';\n\t }\n\t } catch (e) {\n\t throw new configError('Invalid DSN: ' + str);\n\t }\n\n\t if (dsn.pass && !this._globalOptions.allowSecretKey) {\n\t throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key');\n\t }\n\n\t return dsn;\n\t },\n\t _getGlobalServer: function _getGlobalServer(uri) {\n\t // assemble the endpoint from the uri pieces\n\t var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n\t if (uri.protocol) {\n\t globalServer = uri.protocol + ':' + globalServer;\n\t }\n\n\t return globalServer;\n\t },\n\t _handleOnErrorStackInfo: function _handleOnErrorStackInfo(stackInfo, options) {\n\t options = options || {};\n\t options.mechanism = options.mechanism || {\n\t type: 'onerror',\n\t handled: false\n\t }; // if we are intentionally ignoring errors via onerror, bail out\n\n\t if (!this._ignoreOnError) {\n\t this._handleStackInfo(stackInfo, options);\n\t }\n\t },\n\t _handleStackInfo: function _handleStackInfo(stackInfo, options) {\n\t var frames = this._prepareFrames(stackInfo, options);\n\n\t this._triggerEvent('handle', {\n\t stackInfo: stackInfo,\n\t options: options\n\t });\n\n\t this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options);\n\t },\n\t _prepareFrames: function _prepareFrames(stackInfo, options) {\n\t var self = this;\n\t var frames = [];\n\n\t if (stackInfo.stack && stackInfo.stack.length) {\n\t each$1(stackInfo.stack, function (i, stack) {\n\t var frame = self._normalizeFrame(stack, stackInfo.url);\n\n\t if (frame) {\n\t frames.push(frame);\n\t }\n\t }); // e.g. frames captured via captureMessage throw\n\n\t if (options && options.trimHeadFrames) {\n\t for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n\t frames[j].in_app = false;\n\t }\n\t }\n\t }\n\n\t frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n\t return frames;\n\t },\n\t _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) {\n\t // normalize the frames data\n\t var normalized = {\n\t filename: frame.url,\n\t lineno: frame.line,\n\t colno: frame.column,\n\t function: frame.func || '?'\n\t }; // Case when we don't have any information about the error\n\t // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n\t // Generating synthetic error doesn't add any value here\n\t //\n\t // We should probably somehow let a user know that they should fix their code\n\n\t if (!frame.url) {\n\t normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n\t }\n\n\t normalized.in_app = !( // determine if an exception came from outside of our app\n\t // first we check the global includePaths list.\n\t !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit\n\t /(Raven|TraceKit)\\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js\n\t /raven\\.(min\\.)?js$/.test(normalized.filename));\n\t return normalized;\n\t },\n\t _processException: function _processException(type, message, fileurl, lineno, frames, options) {\n\t var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n\n\t if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) {\n\t return;\n\t }\n\n\t var stacktrace;\n\n\t if (frames && frames.length) {\n\t fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest\n\t // and JS sends them as newest to oldest\n\n\t frames.reverse();\n\t stacktrace = {\n\t frames: frames\n\t };\n\t } else if (fileurl) {\n\t stacktrace = {\n\t frames: [{\n\t filename: fileurl,\n\t lineno: lineno,\n\t in_app: true\n\t }]\n\t };\n\t }\n\n\t if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) {\n\t return;\n\t }\n\n\t var data = objectMerge$1({\n\t // sentry.interfaces.Exception\n\t exception: {\n\t values: [{\n\t type: type,\n\t value: message,\n\t stacktrace: stacktrace\n\t }]\n\t },\n\t transaction: fileurl\n\t }, options);\n\t var ex = data.exception.values[0];\n\n\t if (ex.type == null && ex.value === '') {\n\t ex.value = 'Unrecoverable error caught';\n\t } // Move mechanism from options to exception interface\n\t // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n\t // too much\n\n\n\t if (!data.exception.mechanism && data.mechanism) {\n\t data.exception.mechanism = data.mechanism;\n\t delete data.mechanism;\n\t }\n\n\t data.exception.mechanism = objectMerge$1({\n\t type: 'generic',\n\t handled: true\n\t }, data.exception.mechanism || {}); // Fire away!\n\n\t this._send(data);\n\t },\n\t _trimPacket: function _trimPacket(data) {\n\t // For now, we only want to truncate the two different messages\n\t // but this could/should be expanded to just trim everything\n\t var max = this._globalOptions.maxMessageLength;\n\n\t if (data.message) {\n\t data.message = truncate$1(data.message, max);\n\t }\n\n\t if (data.exception) {\n\t var exception = data.exception.values[0];\n\t exception.value = truncate$1(exception.value, max);\n\t }\n\n\t var request = data.request;\n\n\t if (request) {\n\t if (request.url) {\n\t request.url = truncate$1(request.url, this._globalOptions.maxUrlLength);\n\t }\n\n\t if (request.Referer) {\n\t request.Referer = truncate$1(request.Referer, this._globalOptions.maxUrlLength);\n\t }\n\t }\n\n\t if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs);\n\t return data;\n\t },\n\n\t /**\n\t * Truncate breadcrumb values (right now just URLs)\n\t */\n\t _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) {\n\t // known breadcrumb properties with urls\n\t // TODO: also consider arbitrary prop values that start with (https?)?://\n\t var urlProps = ['to', 'from', 'url'],\n\t urlProp,\n\t crumb,\n\t data;\n\n\t for (var i = 0; i < breadcrumbs.values.length; ++i) {\n\t crumb = breadcrumbs.values[i];\n\t if (!crumb.hasOwnProperty('data') || !isObject$1(crumb.data) || objectFrozen$1(crumb.data)) continue;\n\t data = objectMerge$1({}, crumb.data);\n\n\t for (var j = 0; j < urlProps.length; ++j) {\n\t urlProp = urlProps[j];\n\n\t if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n\t data[urlProp] = truncate$1(data[urlProp], this._globalOptions.maxUrlLength);\n\t }\n\t }\n\n\t breadcrumbs.values[i].data = data;\n\t }\n\t },\n\t _getHttpData: function _getHttpData() {\n\t if (!this._hasNavigator && !this._hasDocument) return;\n\t var httpData = {};\n\n\t if (this._hasNavigator && _navigator.userAgent) {\n\t httpData.headers = {\n\t 'User-Agent': _navigator.userAgent\n\t };\n\t } // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n\n\n\t if (_window$2.location && _window$2.location.href) {\n\t httpData.url = _window$2.location.href;\n\t }\n\n\t if (this._hasDocument && _document.referrer) {\n\t if (!httpData.headers) httpData.headers = {};\n\t httpData.headers.Referer = _document.referrer;\n\t }\n\n\t return httpData;\n\t },\n\t _resetBackoff: function _resetBackoff() {\n\t this._backoffDuration = 0;\n\t this._backoffStart = null;\n\t },\n\t _shouldBackoff: function _shouldBackoff() {\n\t return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n\t },\n\n\t /**\n\t * Returns true if the in-process data payload matches the signature\n\t * of the previously-sent data\n\t *\n\t * NOTE: This has to be done at this level because TraceKit can generate\n\t * data from window.onerror WITHOUT an exception object (IE8, IE9,\n\t * other old browsers). This can take the form of an \"exception\"\n\t * data object with a single frame (derived from the onerror args).\n\t */\n\t _isRepeatData: function _isRepeatData(current) {\n\t var last = this._lastData;\n\t if (!last || current.message !== last.message || // defined for captureMessage\n\t current.transaction !== last.transaction // defined for captureException/onerror\n\t ) return false; // Stacktrace interface (i.e. from captureMessage)\n\n\t if (current.stacktrace || last.stacktrace) {\n\t return isSameStacktrace$1(current.stacktrace, last.stacktrace);\n\t } else if (current.exception || last.exception) {\n\t // Exception interface (i.e. from captureException/onerror)\n\t return isSameException$1(current.exception, last.exception);\n\t }\n\n\t return true;\n\t },\n\t _setBackoffState: function _setBackoffState(request) {\n\t // If we are already in a backoff state, don't change anything\n\t if (this._shouldBackoff()) {\n\t return;\n\t }\n\n\t var status = request.status; // 400 - project_id doesn't exist or some other fatal\n\t // 401 - invalid/revoked dsn\n\t // 429 - too many requests\n\n\t if (!(status === 400 || status === 401 || status === 429)) return;\n\t var retry;\n\n\t try {\n\t // If Retry-After is not in Access-Control-Expose-Headers, most\n\t // browsers will throw an exception trying to access it\n\t if (supportsFetch$1()) {\n\t retry = request.headers.get('Retry-After');\n\t } else {\n\t retry = request.getResponseHeader('Retry-After');\n\t } // Retry-After is returned in seconds\n\n\n\t retry = parseInt(retry, 10) * 1000;\n\t } catch (e) {\n\t /* eslint no-empty:0 */\n\t }\n\n\t this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it\n\t retry : // Otherwise, double the last backoff duration (starts at 1 sec)\n\t this._backoffDuration * 2 || 1000;\n\t this._backoffStart = now();\n\t },\n\t _send: function _send(data) {\n\t var globalOptions = this._globalOptions;\n\n\t var baseData = {\n\t project: this._globalProject,\n\t logger: globalOptions.logger,\n\t platform: 'javascript'\n\t },\n\t httpData = this._getHttpData();\n\n\t if (httpData) {\n\t baseData.request = httpData;\n\t } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n\n\n\t if (data.trimHeadFrames) delete data.trimHeadFrames;\n\t data = objectMerge$1(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n\n\t data.tags = objectMerge$1(objectMerge$1({}, this._globalContext.tags), data.tags);\n\t data.extra = objectMerge$1(objectMerge$1({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra\n\n\t data.extra['session:duration'] = now() - this._startTime;\n\n\t if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n\t // intentionally make shallow copy so that additions\n\t // to breadcrumbs aren't accidentally sent in this request\n\t data.breadcrumbs = {\n\t values: [].slice.call(this._breadcrumbs, 0)\n\t };\n\t }\n\n\t if (this._globalContext.user) {\n\t // sentry.interfaces.User\n\t data.user = this._globalContext.user;\n\t } // Include the environment if it's defined in globalOptions\n\n\n\t if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions\n\n\t if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions\n\n\t if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\t data = this._sanitizeData(data); // Cleanup empty properties before sending them to the server\n\n\t Object.keys(data).forEach(function (key) {\n\t if (data[key] == null || data[key] === '' || isEmptyObject$1(data[key])) {\n\t delete data[key];\n\t }\n\t });\n\n\t if (isFunction$1(globalOptions.dataCallback)) {\n\t data = globalOptions.dataCallback(data) || data;\n\t } // Why??????????\n\n\n\t if (!data || isEmptyObject$1(data)) {\n\t return;\n\t } // Check if the request should be filtered or not\n\n\n\t if (isFunction$1(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) {\n\t return;\n\t } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n\t // so drop requests until \"cool-off\" period has elapsed.\n\n\n\t if (this._shouldBackoff()) {\n\t this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n\n\t return;\n\t }\n\n\t if (typeof globalOptions.sampleRate === 'number') {\n\t if (Math.random() < globalOptions.sampleRate) {\n\t this._sendProcessedPayload(data);\n\t }\n\t } else {\n\t this._sendProcessedPayload(data);\n\t }\n\t },\n\t _sanitizeData: function _sanitizeData(data) {\n\t return sanitize$1(data, this._globalOptions.sanitizeKeys);\n\t },\n\t _getUuid: function _getUuid() {\n\t return uuid4$1();\n\t },\n\t _sendProcessedPayload: function _sendProcessedPayload(data, callback) {\n\t var self = this;\n\t var globalOptions = this._globalOptions;\n\t if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values\n\n\t data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n\t // but this would require copying an un-truncated copy of the data packet, which can be\n\t // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n\n\t if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n\t this._logDebug('warn', 'Raven dropped repeat event: ', data);\n\n\t return;\n\t } // Send along an event_id if not explicitly passed.\n\t // This event_id can be used to reference the error within Sentry itself.\n\t // Set lastEventId after we know the error should actually be sent\n\n\n\t this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim\n\n\t this._lastData = data;\n\n\t this._logDebug('debug', 'Raven about to send:', data);\n\n\t var auth = {\n\t sentry_version: '7',\n\t sentry_client: 'raven-js/' + this.VERSION,\n\t sentry_key: this._globalKey\n\t };\n\n\t if (this._globalSecret) {\n\t auth.sentry_secret = this._globalSecret;\n\t }\n\n\t var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n\n\t if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) {\n\t this.captureBreadcrumb({\n\t category: 'sentry',\n\t message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message,\n\t event_id: data.event_id,\n\t level: data.level || 'error' // presume error unless specified\n\n\t });\n\t }\n\n\t var url = this._globalEndpoint;\n\n\t (globalOptions.transport || this._makeRequest).call(this, {\n\t url: url,\n\t auth: auth,\n\t data: data,\n\t options: globalOptions,\n\t onSuccess: function success() {\n\t self._resetBackoff();\n\n\t self._triggerEvent('success', {\n\t data: data,\n\t src: url\n\t });\n\n\t callback && callback();\n\t },\n\t onError: function failure(error) {\n\t self._logDebug('error', 'Raven transport failed to send: ', error);\n\n\t if (error.request) {\n\t self._setBackoffState(error.request);\n\t }\n\n\t self._triggerEvent('failure', {\n\t data: data,\n\t src: url\n\t });\n\n\t error = error || new Error('Raven send failed (no additional details provided)');\n\t callback && callback(error);\n\t }\n\t });\n\t },\n\t _makeRequest: function _makeRequest(opts) {\n\t // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n\t var url = opts.url + '?' + urlencode$1(opts.auth);\n\t var evaluatedHeaders = null;\n\t var evaluatedFetchParameters = {};\n\n\t if (opts.options.headers) {\n\t evaluatedHeaders = this._evaluateHash(opts.options.headers);\n\t }\n\n\t if (opts.options.fetchParameters) {\n\t evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n\t }\n\n\t if (supportsFetch$1()) {\n\t evaluatedFetchParameters.body = stringify_1(opts.data);\n\t var defaultFetchOptions = objectMerge$1({}, this._fetchDefaults);\n\t var fetchOptions = objectMerge$1(defaultFetchOptions, evaluatedFetchParameters);\n\n\t if (evaluatedHeaders) {\n\t fetchOptions.headers = evaluatedHeaders;\n\t }\n\n\t return _window$2.fetch(url, fetchOptions).then(function (response) {\n\t if (response.ok) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else {\n\t var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface\n\t // and not add more redundant checks in setBackoffState method\n\n\t error.request = response;\n\t opts.onError && opts.onError(error);\n\t }\n\t })['catch'](function () {\n\t opts.onError && opts.onError(new Error('Sentry error code: network unavailable'));\n\t });\n\t }\n\n\t var request = _window$2.XMLHttpRequest && new _window$2.XMLHttpRequest();\n\t if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck\n\n\t var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\t if (!hasCORS) return;\n\n\t if ('withCredentials' in request) {\n\t request.onreadystatechange = function () {\n\t if (request.readyState !== 4) {\n\t return;\n\t } else if (request.status === 200) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else if (opts.onError) {\n\t var err = new Error('Sentry error code: ' + request.status);\n\t err.request = request;\n\t opts.onError(err);\n\t }\n\t };\n\t } else {\n\t request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa),\n\t // so always use protocol relative\n\n\t url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest\n\n\t if (opts.onSuccess) {\n\t request.onload = opts.onSuccess;\n\t }\n\n\t if (opts.onError) {\n\t request.onerror = function () {\n\t var err = new Error('Sentry error code: XDomainRequest');\n\t err.request = request;\n\t opts.onError(err);\n\t };\n\t }\n\t }\n\n\t request.open('POST', url);\n\n\t if (evaluatedHeaders) {\n\t each$1(evaluatedHeaders, function (key, value) {\n\t request.setRequestHeader(key, value);\n\t });\n\t }\n\n\t request.send(stringify_1(opts.data));\n\t },\n\t _evaluateHash: function _evaluateHash(hash) {\n\t var evaluated = {};\n\n\t for (var key in hash) {\n\t if (hash.hasOwnProperty(key)) {\n\t var value = hash[key];\n\t evaluated[key] = typeof value === 'function' ? value() : value;\n\t }\n\t }\n\n\t return evaluated;\n\t },\n\t _logDebug: function _logDebug(level) {\n\t // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n\t if (this._originalConsoleMethods[level] && (this.debug || this._globalOptions.debug)) {\n\t // In IE<10 console methods do not have their own 'apply' method\n\t Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1));\n\t }\n\t },\n\t _mergeContext: function _mergeContext(key, context) {\n\t if (isUndefined$1(context)) {\n\t delete this._globalContext[key];\n\t } else {\n\t this._globalContext[key] = objectMerge$1(this._globalContext[key] || {}, context);\n\t }\n\t }\n\t}; // Deprecations\n\n\tRaven.prototype.setUser = Raven.prototype.setUserContext;\n\tRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\tvar raven = Raven;\n\n\t/**\n\t * Enforces a single instance of the Raven client, and the\n\t * main entry point for Raven. If you are a consumer of the\n\t * Raven library, you SHOULD load this file (vs raven.js).\n\t **/\n\t// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\n\tvar _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\tvar _Raven = _window$3.Raven;\n\tvar Raven$1 = new raven();\n\t/*\n\t * Allow multiple versions of Raven to be installed.\n\t * Strip Raven from the global context and returns the instance.\n\t *\n\t * @return {Raven}\n\t */\n\n\tRaven$1.noConflict = function () {\n\t _window$3.Raven = _Raven;\n\t return Raven$1;\n\t};\n\n\tRaven$1.afterLoad();\n\tvar singleton = Raven$1;\n\t/**\n\t * DISCLAIMER:\n\t *\n\t * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n\t * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n\t * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n\t *\n\t * It's called `Client' to be in-line with Raven Node implementation.\n\t *\n\t * HOWTO:\n\t *\n\t * import Raven from 'raven-js';\n\t *\n\t * const someAppReporter = new Raven.Client();\n\t * const someOtherAppReporter = new Raven.Client();\n\t *\n\t * someAppReporter.config('__DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someOtherAppReporter.config('__OTHER_DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someAppReporter.captureMessage(...);\n\t * someAppReporter.captureException(...);\n\t * someAppReporter.captureBreadcrumb(...);\n\t *\n\t * someOtherAppReporter.captureMessage(...);\n\t * someOtherAppReporter.captureException(...);\n\t * someOtherAppReporter.captureBreadcrumb(...);\n\t *\n\t * It should \"just work\".\n\t */\n\n\tvar Client = raven;\n\tsingleton.Client = Client;\n\n\tvar defaults = {\n\t addCSS: true,\n\t // Add CSS to the element to improve usability (required here or in your CSS!)\n\t thumbWidth: 15,\n\t // The width of the thumb handle\n\t watch: true // Watch for new elements that match a string target\n\n\t};\n\n\t// Element matches a selector\n\tfunction matches(element, selector) {\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t var matches = match;\n\t return matches.call(element, selector);\n\t}\n\n\t// Trigger event\n\tfunction trigger(element, type) {\n\t if (!element || !type) {\n\t return;\n\t } // Create and dispatch the event\n\n\n\t var event = new Event(type); // Dispatch the event\n\n\t element.dispatchEvent(event);\n\t}\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\tvar getConstructor = function getConstructor(input) {\n\t return input !== null && typeof input !== 'undefined' ? input.constructor : null;\n\t};\n\n\tvar instanceOf = function instanceOf(input, constructor) {\n\t return Boolean(input && constructor && input instanceof constructor);\n\t};\n\n\tvar isNullOrUndefined = function isNullOrUndefined(input) {\n\t return input === null || typeof input === 'undefined';\n\t};\n\n\tvar isObject$2 = function isObject(input) {\n\t return getConstructor(input) === Object;\n\t};\n\n\tvar isNumber = function isNumber(input) {\n\t return getConstructor(input) === Number && !Number.isNaN(input);\n\t};\n\n\tvar isString$2 = function isString(input) {\n\t return getConstructor(input) === String;\n\t};\n\n\tvar isBoolean = function isBoolean(input) {\n\t return getConstructor(input) === Boolean;\n\t};\n\n\tvar isFunction$2 = function isFunction(input) {\n\t return getConstructor(input) === Function;\n\t};\n\n\tvar isArray$2 = function isArray(input) {\n\t return Array.isArray(input);\n\t};\n\n\tvar isNodeList = function isNodeList(input) {\n\t return instanceOf(input, NodeList);\n\t};\n\n\tvar isElement = function isElement(input) {\n\t return instanceOf(input, Element);\n\t};\n\n\tvar isEvent = function isEvent(input) {\n\t return instanceOf(input, Event);\n\t};\n\n\tvar isEmpty = function isEmpty(input) {\n\t return isNullOrUndefined(input) || (isString$2(input) || isArray$2(input) || isNodeList(input)) && !input.length || isObject$2(input) && !Object.keys(input).length;\n\t};\n\n\tvar is = {\n\t nullOrUndefined: isNullOrUndefined,\n\t object: isObject$2,\n\t number: isNumber,\n\t string: isString$2,\n\t boolean: isBoolean,\n\t function: isFunction$2,\n\t array: isArray$2,\n\t nodeList: isNodeList,\n\t element: isElement,\n\t event: isEvent,\n\t empty: isEmpty\n\t};\n\n\t// Get the number of decimal places\n\tfunction getDecimalPlaces(value) {\n\t var match = \"\".concat(value).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n\t if (!match) {\n\t return 0;\n\t }\n\n\t return Math.max(0, // Number of digits right of decimal point.\n\t (match[1] ? match[1].length : 0) - ( // Adjust for scientific notation.\n\t match[2] ? +match[2] : 0));\n\t} // Round to the nearest step\n\n\tfunction round(number, step) {\n\t if (step < 1) {\n\t var places = getDecimalPlaces(step);\n\t return parseFloat(number.toFixed(places));\n\t }\n\n\t return Math.round(number / step) * step;\n\t}\n\n\tvar RangeTouch =\n\t/*#__PURE__*/\n\tfunction () {\n\t /**\n\t * Setup a new instance\n\t * @param {String|Element} target\n\t * @param {Object} options\n\t */\n\t function RangeTouch(target, options) {\n\t _classCallCheck(this, RangeTouch);\n\n\t if (is.element(target)) {\n\t // An Element is passed, use it directly\n\t this.element = target;\n\t } else if (is.string(target)) {\n\t // A CSS Selector is passed, fetch it from the DOM\n\t this.element = document.querySelector(target);\n\t }\n\n\t if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n\t return;\n\t }\n\n\t this.config = Object.assign({}, defaults, options);\n\t this.init();\n\t }\n\n\t _createClass(RangeTouch, [{\n\t key: \"init\",\n\t value: function init() {\n\t // Bail if not a touch enabled device\n\t if (!RangeTouch.enabled) {\n\t return;\n\t } // Add useful CSS\n\n\n\t if (this.config.addCSS) {\n\t // TODO: Restore original values on destroy\n\t this.element.style.userSelect = 'none';\n\t this.element.style.webKitUserSelect = 'none';\n\t this.element.style.touchAction = 'manipulation';\n\t }\n\n\t this.listeners(true);\n\t this.element.rangeTouch = this;\n\t }\n\t }, {\n\t key: \"destroy\",\n\t value: function destroy() {\n\t // Bail if not a touch enabled device\n\t if (!RangeTouch.enabled) {\n\t return;\n\t }\n\n\t this.listeners(false);\n\t this.element.rangeTouch = null;\n\t }\n\t }, {\n\t key: \"listeners\",\n\t value: function listeners(toggle) {\n\t var _this = this;\n\n\t var method = toggle ? 'addEventListener' : 'removeEventListener'; // Listen for events\n\n\t ['touchstart', 'touchmove', 'touchend'].forEach(function (type) {\n\t _this.element[method](type, function (event) {\n\t return _this.set(event);\n\t }, false);\n\t });\n\t }\n\t /**\n\t * Get the value based on touch position\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"get\",\n\t value: function get(event) {\n\t if (!RangeTouch.enabled || !is.event(event)) {\n\t return null;\n\t }\n\n\t var input = event.target;\n\t var touch = event.changedTouches[0];\n\t var min = parseFloat(input.getAttribute('min')) || 0;\n\t var max = parseFloat(input.getAttribute('max')) || 100;\n\t var step = parseFloat(input.getAttribute('step')) || 1;\n\t var delta = max - min; // Calculate percentage\n\n\t var percent;\n\t var clientRect = input.getBoundingClientRect();\n\t var thumbWidth = 100 / clientRect.width * (this.config.thumbWidth / 2) / 100; // Determine left percentage\n\n\t percent = 100 / clientRect.width * (touch.clientX - clientRect.left); // Don't allow outside bounds\n\n\t if (percent < 0) {\n\t percent = 0;\n\t } else if (percent > 100) {\n\t percent = 100;\n\t } // Factor in the thumb offset\n\n\n\t if (percent < 50) {\n\t percent -= (100 - percent * 2) * thumbWidth;\n\t } else if (percent > 50) {\n\t percent += (percent - 50) * 2 * thumbWidth;\n\t } // Find the closest step to the mouse position\n\n\n\t return min + round(delta * (percent / 100), step);\n\t }\n\t /**\n\t * Update range value based on position\n\t * @param {Event} event\n\t */\n\n\t }, {\n\t key: \"set\",\n\t value: function set(event) {\n\t if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n\t return;\n\t } // Prevent text highlight on iOS\n\n\n\t event.preventDefault(); // Set value\n\n\t event.target.value = this.get(event); // Trigger event\n\n\t trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n\t }\n\t }], [{\n\t key: \"setup\",\n\n\t /**\n\t * Setup multiple instances\n\t * @param {String|Element|NodeList|Array} target\n\t * @param {Object} options\n\t */\n\t value: function setup(target) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var targets = null;\n\n\t if (is.empty(target) || is.string(target)) {\n\t targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n\t } else if (is.element(target)) {\n\t targets = [target];\n\t } else if (is.nodeList(target)) {\n\t targets = Array.from(target);\n\t } else if (is.array(target)) {\n\t targets = target.filter(is.element);\n\t }\n\n\t if (is.empty(targets)) {\n\t return null;\n\t }\n\n\t var config = Object.assign({}, defaults, options);\n\n\t if (is.string(target) && config.watch) {\n\t // Create an observer instance\n\t var observer = new MutationObserver(function (mutations) {\n\t Array.from(mutations).forEach(function (mutation) {\n\t Array.from(mutation.addedNodes).forEach(function (node) {\n\t if (!is.element(node) || !matches(node, target)) {\n\t return;\n\t } // eslint-disable-next-line no-unused-vars\n\n\n\t var range = new RangeTouch(node, config);\n\t });\n\t });\n\t }); // Pass in the target node, as well as the observer options\n\n\t observer.observe(document.body, {\n\t childList: true,\n\t subtree: true\n\t });\n\t }\n\n\t return targets.map(function (t) {\n\t return new RangeTouch(t, options);\n\t });\n\t }\n\t }, {\n\t key: \"enabled\",\n\t get: function get() {\n\t return 'ontouchstart' in document.documentElement;\n\t }\n\t }]);\n\n\t return RangeTouch;\n\t}();\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\tvar getConstructor$1 = function getConstructor(input) {\n\t return input !== null && typeof input !== 'undefined' ? input.constructor : null;\n\t};\n\n\tvar instanceOf$1 = function instanceOf(input, constructor) {\n\t return Boolean(input && constructor && input instanceof constructor);\n\t};\n\n\tvar isNullOrUndefined$1 = function isNullOrUndefined(input) {\n\t return input === null || typeof input === 'undefined';\n\t};\n\n\tvar isObject$3 = function isObject(input) {\n\t return getConstructor$1(input) === Object;\n\t};\n\n\tvar isNumber$1 = function isNumber(input) {\n\t return getConstructor$1(input) === Number && !Number.isNaN(input);\n\t};\n\n\tvar isString$3 = function isString(input) {\n\t return getConstructor$1(input) === String;\n\t};\n\n\tvar isBoolean$1 = function isBoolean(input) {\n\t return getConstructor$1(input) === Boolean;\n\t};\n\n\tvar isFunction$3 = function isFunction(input) {\n\t return getConstructor$1(input) === Function;\n\t};\n\n\tvar isArray$3 = function isArray(input) {\n\t return Array.isArray(input);\n\t};\n\n\tvar isWeakMap = function isWeakMap(input) {\n\t return instanceOf$1(input, WeakMap);\n\t};\n\n\tvar isNodeList$1 = function isNodeList(input) {\n\t return instanceOf$1(input, NodeList);\n\t};\n\n\tvar isElement$1 = function isElement(input) {\n\t return instanceOf$1(input, Element);\n\t};\n\n\tvar isTextNode = function isTextNode(input) {\n\t return getConstructor$1(input) === Text;\n\t};\n\n\tvar isEvent$1 = function isEvent(input) {\n\t return instanceOf$1(input, Event);\n\t};\n\n\tvar isKeyboardEvent = function isKeyboardEvent(input) {\n\t return instanceOf$1(input, KeyboardEvent);\n\t};\n\n\tvar isCue = function isCue(input) {\n\t return instanceOf$1(input, window.TextTrackCue) || instanceOf$1(input, window.VTTCue);\n\t};\n\n\tvar isTrack = function isTrack(input) {\n\t return instanceOf$1(input, TextTrack) || !isNullOrUndefined$1(input) && isString$3(input.kind);\n\t};\n\n\tvar isPromise = function isPromise(input) {\n\t return instanceOf$1(input, Promise);\n\t};\n\n\tvar isEmpty$1 = function isEmpty(input) {\n\t return isNullOrUndefined$1(input) || (isString$3(input) || isArray$3(input) || isNodeList$1(input)) && !input.length || isObject$3(input) && !Object.keys(input).length;\n\t};\n\n\tvar isUrl = function isUrl(input) {\n\t // Accept a URL object\n\t if (instanceOf$1(input, window.URL)) {\n\t return true;\n\t } // Must be string from here\n\n\n\t if (!isString$3(input)) {\n\t return false;\n\t } // Add the protocol if required\n\n\n\t var string = input;\n\n\t if (!input.startsWith('http://') || !input.startsWith('https://')) {\n\t string = \"http://\".concat(input);\n\t }\n\n\t try {\n\t return !isEmpty$1(new URL(string).hostname);\n\t } catch (e) {\n\t return false;\n\t }\n\t};\n\n\tvar is$1 = {\n\t nullOrUndefined: isNullOrUndefined$1,\n\t object: isObject$3,\n\t number: isNumber$1,\n\t string: isString$3,\n\t boolean: isBoolean$1,\n\t function: isFunction$3,\n\t array: isArray$3,\n\t weakMap: isWeakMap,\n\t nodeList: isNodeList$1,\n\t element: isElement$1,\n\t textNode: isTextNode,\n\t event: isEvent$1,\n\t keyboardEvent: isKeyboardEvent,\n\t cue: isCue,\n\t track: isTrack,\n\t promise: isPromise,\n\t url: isUrl,\n\t empty: isEmpty$1\n\t};\n\n\t// ==========================================================================\n\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n\t// https://www.youtube.com/watch?v=NPM6172J22g\n\n\tvar supportsPassiveListeners = function () {\n\t // Test via a getter in the options object to see if the passive property is accessed\n\t var supported = false;\n\n\t try {\n\t var options = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supported = true;\n\t return null;\n\t }\n\t });\n\t window.addEventListener('test', null, options);\n\t window.removeEventListener('test', null, options);\n\t } catch (e) {// Do nothing\n\t }\n\n\t return supported;\n\t}(); // Toggle event listener\n\n\n\tfunction toggleListener(element, event, callback) {\n\t var _this = this;\n\n\t var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n\n\t // Bail if no element, event, or callback\n\t if (!element || !('addEventListener' in element) || is$1.empty(event) || !is$1.function(callback)) {\n\t return;\n\t } // Allow multiple events\n\n\n\t var events = event.split(' '); // Build options\n\t // Default to just the capture boolean for browsers with no passive listener support\n\n\t var options = capture; // If passive events listeners are supported\n\n\t if (supportsPassiveListeners) {\n\t options = {\n\t // Whether the listener can be passive (i.e. default never prevented)\n\t passive: passive,\n\t // Whether the listener is a capturing listener or not\n\t capture: capture\n\t };\n\t } // If a single node is passed, bind the event listener\n\n\n\t events.forEach(function (type) {\n\t if (_this && _this.eventListeners && toggle) {\n\t // Cache event listener\n\t _this.eventListeners.push({\n\t element: element,\n\t type: type,\n\t callback: callback,\n\t options: options\n\t });\n\t }\n\n\t element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n\t });\n\t} // Bind event handler\n\n\tfunction on(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, true, passive, capture);\n\t} // Unbind event handler\n\n\tfunction off(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, false, passive, capture);\n\t} // Bind once-only event handler\n\n\tfunction once(element) {\n\t var _this2 = this;\n\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t var onceCallback = function onceCallback() {\n\t off(element, events, onceCallback, passive, capture);\n\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t callback.apply(_this2, args);\n\t };\n\n\t toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n\t} // Trigger event\n\n\tfunction triggerEvent(element) {\n\t var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t // Bail if no element\n\t if (!is$1.element(element) || is$1.empty(type)) {\n\t return;\n\t } // Create and dispatch the event\n\n\n\t var event = new CustomEvent(type, {\n\t bubbles: bubbles,\n\t detail: Object.assign({}, detail, {\n\t plyr: this\n\t })\n\t }); // Dispatch the event\n\n\t element.dispatchEvent(event);\n\t} // Unbind all cached event listeners\n\n\tfunction unbindListeners() {\n\t if (this && this.eventListeners) {\n\t this.eventListeners.forEach(function (item) {\n\t var element = item.element,\n\t type = item.type,\n\t callback = item.callback,\n\t options = item.options;\n\t element.removeEventListener(type, callback, options);\n\t });\n\t this.eventListeners = [];\n\t }\n\t} // Run method when / if player is ready\n\n\tfunction ready() {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve);\n\t }).then(function () {});\n\t}\n\n\tfunction wrap(elements, wrapper) {\n\t // Convert `elements` to an array, if necessary.\n\t var targets = elements.length ? elements : [elements]; // Loops backwards to prevent having to clone the wrapper on the\n\t // first element (see `child` below).\n\n\t Array.from(targets).reverse().forEach(function (element, index) {\n\t var child = index > 0 ? wrapper.cloneNode(true) : wrapper; // Cache the current parent and sibling.\n\n\t var parent = element.parentNode;\n\t var sibling = element.nextSibling; // Wrap the element (is automatically removed from its current\n\t // parent).\n\n\t child.appendChild(element); // If the element had a sibling, insert the wrapper before\n\t // the sibling to maintain the HTML structure; otherwise, just\n\t // append it to the parent.\n\n\t if (sibling) {\n\t parent.insertBefore(child, sibling);\n\t } else {\n\t parent.appendChild(child);\n\t }\n\t });\n\t} // Set attributes\n\n\tfunction setAttributes(element, attributes) {\n\t if (!is$1.element(element) || is$1.empty(attributes)) {\n\t return;\n\t } // Assume null and undefined attributes should be left out,\n\t // Setting them would otherwise convert them to \"null\" and \"undefined\"\n\n\n\t Object.entries(attributes).filter(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t value = _ref2[1];\n\n\t return !is$1.nullOrUndefined(value);\n\t }).forEach(function (_ref3) {\n\t var _ref4 = _slicedToArray(_ref3, 2),\n\t key = _ref4[0],\n\t value = _ref4[1];\n\n\t return element.setAttribute(key, value);\n\t });\n\t} // Create a DocumentFragment\n\n\tfunction createElement(type, attributes, text) {\n\t // Create a new \n\t var element = document.createElement(type); // Set all passed attributes\n\n\t if (is$1.object(attributes)) {\n\t setAttributes(element, attributes);\n\t } // Add text node\n\n\n\t if (is$1.string(text)) {\n\t element.innerText = text;\n\t } // Return built element\n\n\n\t return element;\n\t} // Inaert an element after another\n\n\tfunction insertAfter(element, target) {\n\t if (!is$1.element(element) || !is$1.element(target)) {\n\t return;\n\t }\n\n\t target.parentNode.insertBefore(element, target.nextSibling);\n\t} // Insert a DocumentFragment\n\n\tfunction insertElement(type, parent, attributes, text) {\n\t if (!is$1.element(parent)) {\n\t return;\n\t }\n\n\t parent.appendChild(createElement(type, attributes, text));\n\t} // Remove element(s)\n\n\tfunction removeElement(element) {\n\t if (is$1.nodeList(element) || is$1.array(element)) {\n\t Array.from(element).forEach(removeElement);\n\t return;\n\t }\n\n\t if (!is$1.element(element) || !is$1.element(element.parentNode)) {\n\t return;\n\t }\n\n\t element.parentNode.removeChild(element);\n\t} // Remove all child elements\n\n\tfunction emptyElement(element) {\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var length = element.childNodes.length;\n\n\t while (length > 0) {\n\t element.removeChild(element.lastChild);\n\t length -= 1;\n\t }\n\t} // Replace element\n\n\tfunction replaceElement(newChild, oldChild) {\n\t if (!is$1.element(oldChild) || !is$1.element(oldChild.parentNode) || !is$1.element(newChild)) {\n\t return null;\n\t }\n\n\t oldChild.parentNode.replaceChild(newChild, oldChild);\n\t return newChild;\n\t} // Get an attribute object from a string selector\n\n\tfunction getAttributesFromSelector(sel, existingAttributes) {\n\t // For example:\n\t // '.test' to { class: 'test' }\n\t // '#test' to { id: 'test' }\n\t // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\t if (!is$1.string(sel) || is$1.empty(sel)) {\n\t return {};\n\t }\n\n\t var attributes = {};\n\t var existing = existingAttributes;\n\t sel.split(',').forEach(function (s) {\n\t // Remove whitespace\n\t var selector = s.trim();\n\t var className = selector.replace('.', '');\n\t var stripped = selector.replace(/[[\\]]/g, ''); // Get the parts and value\n\n\t var parts = stripped.split('=');\n\t var key = parts[0];\n\t var value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : ''; // Get the first character\n\n\t var start = selector.charAt(0);\n\n\t switch (start) {\n\t case '.':\n\t // Add to existing classname\n\t if (is$1.object(existing) && is$1.string(existing.class)) {\n\t existing.class += \" \".concat(className);\n\t }\n\n\t attributes.class = className;\n\t break;\n\n\t case '#':\n\t // ID selector\n\t attributes.id = selector.replace('#', '');\n\t break;\n\n\t case '[':\n\t // Attribute selector\n\t attributes[key] = value;\n\t break;\n\n\t default:\n\t break;\n\t }\n\t });\n\t return attributes;\n\t} // Toggle hidden\n\n\tfunction toggleHidden(element, hidden) {\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var hide = hidden;\n\n\t if (!is$1.boolean(hide)) {\n\t hide = !element.hidden;\n\t }\n\n\t if (hide) {\n\t element.setAttribute('hidden', '');\n\t } else {\n\t element.removeAttribute('hidden');\n\t }\n\t} // Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\n\n\tfunction toggleClass(element, className, force) {\n\t if (is$1.nodeList(element)) {\n\t return Array.from(element).map(function (e) {\n\t return toggleClass(e, className, force);\n\t });\n\t }\n\n\t if (is$1.element(element)) {\n\t var method = 'toggle';\n\n\t if (typeof force !== 'undefined') {\n\t method = force ? 'add' : 'remove';\n\t }\n\n\t element.classList[method](className);\n\t return element.classList.contains(className);\n\t }\n\n\t return false;\n\t} // Has class name\n\n\tfunction hasClass(element, className) {\n\t return is$1.element(element) && element.classList.contains(className);\n\t} // Element matches selector\n\n\tfunction matches$1(element, selector) {\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t var matches = match;\n\t return matches.call(element, selector);\n\t} // Find all elements\n\n\tfunction getElements(selector) {\n\t return this.elements.container.querySelectorAll(selector);\n\t} // Find a single element\n\n\tfunction getElement(selector) {\n\t return this.elements.container.querySelector(selector);\n\t} // Trap focus inside container\n\n\tfunction trapFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var toggle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n\t var first = focusable[0];\n\t var last = focusable[focusable.length - 1];\n\n\t var trap = function trap(event) {\n\t // Bail if not tab key or not fullscreen\n\t if (event.key !== 'Tab' || event.keyCode !== 9) {\n\t return;\n\t } // Get the current focused element\n\n\n\t var focused = document.activeElement;\n\n\t if (focused === last && !event.shiftKey) {\n\t // Move focus to first element that can be tabbed if Shift isn't used\n\t first.focus();\n\t event.preventDefault();\n\t } else if (focused === first && event.shiftKey) {\n\t // Move focus to last element that can be tabbed if Shift is used\n\t last.focus();\n\t event.preventDefault();\n\t }\n\t };\n\n\t toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n\t} // Set focus and tab focus class\n\n\tfunction setFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$1.element(element)) {\n\t return;\n\t } // Set regular focus\n\n\n\t element.focus({\n\t preventScroll: true\n\t }); // If we want to mimic keyboard focus via tab\n\n\t if (tabFocus) {\n\t toggleClass(element, this.config.classNames.tabFocus);\n\t }\n\t}\n\n\t// ==========================================================================\n\tvar transitionEndEvent = function () {\n\t var element = document.createElement('span');\n\t var events = {\n\t WebkitTransition: 'webkitTransitionEnd',\n\t MozTransition: 'transitionend',\n\t OTransition: 'oTransitionEnd otransitionend',\n\t transition: 'transitionend'\n\t };\n\t var type = Object.keys(events).find(function (event) {\n\t return element.style[event] !== undefined;\n\t });\n\t return is$1.string(type) ? events[type] : false;\n\t}(); // Force repaint of element\n\n\tfunction repaint(element) {\n\t setTimeout(function () {\n\t try {\n\t toggleHidden(element, true);\n\t element.offsetHeight; // eslint-disable-line\n\n\t toggleHidden(element, false);\n\t } catch (e) {// Do nothing\n\t }\n\t }, 0);\n\t}\n\n\t// ==========================================================================\n\t// Browser sniffing\n\t// Unfortunately, due to mixed support, UA sniffing is required\n\t// ==========================================================================\n\tvar browser = {\n\t isIE:\n\t /* @cc_on!@ */\n\t !!document.documentMode,\n\t isEdge: window.navigator.userAgent.includes('Edge'),\n\t isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n\t isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n\t isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform)\n\t};\n\n\tvar defaultCodecs = {\n\t 'audio/ogg': 'vorbis',\n\t 'audio/wav': '1',\n\t 'video/webm': 'vp8, vorbis',\n\t 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n\t 'video/ogg': 'theora'\n\t}; // Check for feature support\n\n\tvar support = {\n\t // Basic support\n\t audio: 'canPlayType' in document.createElement('audio'),\n\t video: 'canPlayType' in document.createElement('video'),\n\t // Check for support\n\t // Basic functionality vs full UI\n\t check: function check(type, provider, playsinline) {\n\t var canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\t var api = support[type] || provider !== 'html5';\n\t var ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\t return {\n\t api: api,\n\t ui: ui\n\t };\n\t },\n\t // Picture-in-picture support\n\t // Safari & Chrome only currently\n\t pip: function () {\n\t if (browser.isIPhone) {\n\t return false;\n\t } // Safari\n\t // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n\n\n\t if (is$1.function(createElement('video').webkitSetPresentationMode)) {\n\t return true;\n\t } // Chrome\n\t // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n\n\n\t if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n\t return true;\n\t }\n\n\t return false;\n\t }(),\n\t // Airplay support\n\t // Safari only currently\n\t airplay: is$1.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\t // Inline playback support\n\t // https://webkit.org/blog/6784/new-video-policies-for-ios/\n\t playsinline: 'playsInline' in document.createElement('video'),\n\t // Check for mime type support against a player instance\n\t // Credits: http://diveintohtml5.info/everything.html\n\t // Related: http://www.leanbackplayer.com/test/h5mt.html\n\t mime: function mime(input) {\n\t if (is$1.empty(input)) {\n\t return false;\n\t }\n\n\t var _input$split = input.split('/'),\n\t _input$split2 = _slicedToArray(_input$split, 1),\n\t mediaType = _input$split2[0];\n\n\t var type = input; // Verify we're using HTML5 and there's no media type mismatch\n\n\t if (!this.isHTML5 || mediaType !== this.type) {\n\t return false;\n\t } // Add codec if required\n\n\n\t if (Object.keys(defaultCodecs).includes(type)) {\n\t type += \"; codecs=\\\"\".concat(defaultCodecs[input], \"\\\"\");\n\t }\n\n\t try {\n\t return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n\t } catch (e) {\n\t return false;\n\t }\n\t },\n\t // Check for textTracks support\n\t textTracks: 'textTracks' in document.createElement('video'),\n\t // Sliders\n\t rangeInput: function () {\n\t var range = document.createElement('input');\n\t range.type = 'range';\n\t return range.type === 'range';\n\t }(),\n\t // Touch\n\t // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n\t touch: 'ontouchstart' in document.documentElement,\n\t // Detect transitions support\n\t transitions: transitionEndEvent !== false,\n\t // Reduced motion iOS & MacOS setting\n\t // https://webkit.org/blog/7551/responsive-design-for-motion/\n\t reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches\n\t};\n\n\t// ==========================================================================\n\tvar html5 = {\n\t getSources: function getSources() {\n\t var _this = this;\n\n\t if (!this.isHTML5) {\n\t return [];\n\t }\n\n\t var sources = Array.from(this.media.querySelectorAll('source')); // Filter out unsupported sources (if type is specified)\n\n\t return sources.filter(function (source) {\n\t var type = source.getAttribute('type');\n\n\t if (is$1.empty(type)) {\n\t return true;\n\t }\n\n\t return support.mime.call(_this, type);\n\t });\n\t },\n\t // Get quality levels\n\t getQualityOptions: function getQualityOptions() {\n\t // Get sizes from elements\n\t return html5.getSources.call(this).map(function (source) {\n\t return Number(source.getAttribute('size'));\n\t }).filter(Boolean);\n\t },\n\t extend: function extend() {\n\t if (!this.isHTML5) {\n\t return;\n\t }\n\n\t var player = this; // Quality\n\n\t Object.defineProperty(player.media, 'quality', {\n\t get: function get() {\n\t // Get sources\n\t var sources = html5.getSources.call(player);\n\t var source = sources.find(function (source) {\n\t return source.getAttribute('src') === player.source;\n\t }); // Return size, if match is found\n\n\t return source && Number(source.getAttribute('size'));\n\t },\n\t set: function set(input) {\n\t // Get sources\n\t var sources = html5.getSources.call(player); // Get first match for requested size\n\n\t var source = sources.find(function (source) {\n\t return Number(source.getAttribute('size')) === input;\n\t }); // No matching source found\n\n\t if (!source) {\n\t return;\n\t } // Get current state\n\n\n\t var _player$media = player.media,\n\t currentTime = _player$media.currentTime,\n\t paused = _player$media.paused,\n\t preload = _player$media.preload,\n\t readyState = _player$media.readyState; // Set new source\n\n\t player.media.src = source.getAttribute('src'); // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n\n\t if (preload !== 'none' || readyState) {\n\t // Restore time\n\t player.once('loadedmetadata', function () {\n\t player.currentTime = currentTime; // Resume playing\n\n\t if (!paused) {\n\t player.play();\n\t }\n\t }); // Load new source\n\n\t player.media.load();\n\t } // Trigger change event\n\n\n\t triggerEvent.call(player, player.media, 'qualitychange', false, {\n\t quality: input\n\t });\n\t }\n\t });\n\t },\n\t // Cancel current network requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\t cancelRequests: function cancelRequests() {\n\t if (!this.isHTML5) {\n\t return;\n\t } // Remove child sources\n\n\n\t removeElement(html5.getSources.call(this)); // Set blank video src attribute\n\t // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n\t // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n\n\t this.media.setAttribute('src', this.config.blankVideo); // Load the new empty source\n\t // This will cancel existing requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\n\t this.media.load(); // Debugging\n\n\t this.debug.log('Cancelled network requests');\n\t }\n\t};\n\n\t// ==========================================================================\n\n\tfunction dedupe(array) {\n\t if (!is$1.array(array)) {\n\t return array;\n\t }\n\n\t return array.filter(function (item, index) {\n\t return array.indexOf(item) === index;\n\t });\n\t} // Get the closest value in an array\n\n\tfunction closest(array, value) {\n\t if (!is$1.array(array) || !array.length) {\n\t return null;\n\t }\n\n\t return array.reduce(function (prev, curr) {\n\t return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev;\n\t });\n\t}\n\n\tfunction cloneDeep(object) {\n\t return JSON.parse(JSON.stringify(object));\n\t} // Get a nested value in an object\n\n\tfunction getDeep(object, path) {\n\t return path.split('.').reduce(function (obj, key) {\n\t return obj && obj[key];\n\t }, object);\n\t} // Deep extend destination object with N more objects\n\n\tfunction extend() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t sources[_key - 1] = arguments[_key];\n\t }\n\n\t if (!sources.length) {\n\t return target;\n\t }\n\n\t var source = sources.shift();\n\n\t if (!is$1.object(source)) {\n\t return target;\n\t }\n\n\t Object.keys(source).forEach(function (key) {\n\t if (is$1.object(source[key])) {\n\t if (!Object.keys(target).includes(key)) {\n\t Object.assign(target, _defineProperty({}, key, {}));\n\t }\n\n\t extend(target[key], source[key]);\n\t } else {\n\t Object.assign(target, _defineProperty({}, key, source[key]));\n\t }\n\t });\n\t return extend.apply(void 0, [target].concat(sources));\n\t}\n\n\t// ==========================================================================\n\n\tfunction generateId(prefix) {\n\t return \"\".concat(prefix, \"-\").concat(Math.floor(Math.random() * 10000));\n\t} // Format string\n\n\tfunction format(input) {\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t if (is$1.empty(input)) {\n\t return input;\n\t }\n\n\t return input.toString().replace(/{(\\d+)}/g, function (match, i) {\n\t return args[i].toString();\n\t });\n\t} // Get percentage\n\n\tfunction getPercentage(current, max) {\n\t if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n\t return 0;\n\t }\n\n\t return (current / max * 100).toFixed(2);\n\t} // Replace all occurances of a string in a string\n\n\tfunction replaceAll() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var find = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var replace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n\t} // Convert to title case\n\n\tfunction toTitleCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t return input.toString().replace(/\\w\\S*/g, function (text) {\n\t return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n\t });\n\t} // Convert string to pascalCase\n\n\tfunction toPascalCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert kebab case\n\n\t string = replaceAll(string, '-', ' '); // Convert snake case\n\n\t string = replaceAll(string, '_', ' '); // Convert to title case\n\n\t string = toTitleCase(string); // Convert to pascal case\n\n\t return replaceAll(string, ' ', '');\n\t} // Convert string to pascalCase\n\n\tfunction toCamelCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert to pascal case\n\n\t string = toPascalCase(string); // Convert first character to lowercase\n\n\t return string.charAt(0).toLowerCase() + string.slice(1);\n\t} // Remove HTML from a string\n\n\tfunction stripHTML(source) {\n\t var fragment = document.createDocumentFragment();\n\t var element = document.createElement('div');\n\t fragment.appendChild(element);\n\t element.innerHTML = source;\n\t return fragment.firstChild.innerText;\n\t} // Like outerHTML, but also works for DocumentFragment\n\n\tfunction getHTML(element) {\n\t var wrapper = document.createElement('div');\n\t wrapper.appendChild(element);\n\t return wrapper.innerHTML;\n\t}\n\n\tvar resources = {\n\t pip: 'PIP',\n\t airplay: 'AirPlay',\n\t html5: 'HTML5',\n\t vimeo: 'Vimeo',\n\t youtube: 'YouTube'\n\t};\n\tvar i18n = {\n\t get: function get() {\n\t var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (is$1.empty(key) || is$1.empty(config)) {\n\t return '';\n\t }\n\n\t var string = getDeep(config.i18n, key);\n\n\t if (is$1.empty(string)) {\n\t if (Object.keys(resources).includes(key)) {\n\t return resources[key];\n\t }\n\n\t return '';\n\t }\n\n\t var replace = {\n\t '{seektime}': config.seekTime,\n\t '{title}': config.title\n\t };\n\t Object.entries(replace).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t key = _ref2[0],\n\t value = _ref2[1];\n\n\t string = replaceAll(string, key, value);\n\t });\n\t return string;\n\t }\n\t};\n\n\tvar Storage =\n\t/*#__PURE__*/\n\tfunction () {\n\t function Storage(player) {\n\t _classCallCheck(this, Storage);\n\n\t this.enabled = player.config.storage.enabled;\n\t this.key = player.config.storage.key;\n\t } // Check for actual support (see if we can use it)\n\n\n\t _createClass(Storage, [{\n\t key: \"get\",\n\t value: function get(key) {\n\t if (!Storage.supported || !this.enabled) {\n\t return null;\n\t }\n\n\t var store = window.localStorage.getItem(this.key);\n\n\t if (is$1.empty(store)) {\n\t return null;\n\t }\n\n\t var json = JSON.parse(store);\n\t return is$1.string(key) && key.length ? json[key] : json;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function set(object) {\n\t // Bail if we don't have localStorage support or it's disabled\n\t if (!Storage.supported || !this.enabled) {\n\t return;\n\t } // Can only store objectst\n\n\n\t if (!is$1.object(object)) {\n\t return;\n\t } // Get current storage\n\n\n\t var storage = this.get(); // Default to empty object\n\n\t if (is$1.empty(storage)) {\n\t storage = {};\n\t } // Update the working copy of the values\n\n\n\t extend(storage, object); // Update storage\n\n\t window.localStorage.setItem(this.key, JSON.stringify(storage));\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t if (!('localStorage' in window)) {\n\t return false;\n\t }\n\n\t var test = '___test'; // Try to use it (it might be disabled, e.g. user is in private mode)\n\t // see: https://github.com/sampotts/plyr/issues/131\n\n\t window.localStorage.setItem(test, test);\n\t window.localStorage.removeItem(test);\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\t }]);\n\n\t return Storage;\n\t}();\n\n\t// ==========================================================================\n\t// Fetch wrapper\n\t// Using XHR to avoid issues with older browsers\n\t// ==========================================================================\n\tfunction fetch(url) {\n\t var responseType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var request = new XMLHttpRequest(); // Check for CORS support\n\n\t if (!('withCredentials' in request)) {\n\t return;\n\t }\n\n\t request.addEventListener('load', function () {\n\t if (responseType === 'text') {\n\t try {\n\t resolve(JSON.parse(request.responseText));\n\t } catch (e) {\n\t resolve(request.responseText);\n\t }\n\t } else {\n\t resolve(request.response);\n\t }\n\t });\n\t request.addEventListener('error', function () {\n\t throw new Error(request.status);\n\t });\n\t request.open('GET', url, true); // Set the required response type\n\n\t request.responseType = responseType;\n\t request.send();\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t}\n\n\t// ==========================================================================\n\n\tfunction loadSprite(url, id) {\n\t if (!is$1.string(url)) {\n\t return;\n\t }\n\n\t var prefix = 'cache';\n\t var hasId = is$1.string(id);\n\t var isCached = false;\n\n\t var exists = function exists() {\n\t return document.getElementById(id) !== null;\n\t };\n\n\t var update = function update(container, data) {\n\t container.innerHTML = data; // Check again incase of race condition\n\n\t if (hasId && exists()) {\n\t return;\n\t } // Inject the SVG to the body\n\n\n\t document.body.insertAdjacentElement('afterbegin', container);\n\t }; // Only load once if ID set\n\n\n\t if (!hasId || !exists()) {\n\t var useStorage = Storage.supported; // Create container\n\n\t var container = document.createElement('div');\n\t container.setAttribute('hidden', '');\n\n\t if (hasId) {\n\t container.setAttribute('id', id);\n\t } // Check in cache\n\n\n\t if (useStorage) {\n\t var cached = window.localStorage.getItem(\"\".concat(prefix, \"-\").concat(id));\n\t isCached = cached !== null;\n\n\t if (isCached) {\n\t var data = JSON.parse(cached);\n\t update(container, data.content);\n\t }\n\t } // Get the sprite\n\n\n\t fetch(url).then(function (result) {\n\t if (is$1.empty(result)) {\n\t return;\n\t }\n\n\t if (useStorage) {\n\t window.localStorage.setItem(\"\".concat(prefix, \"-\").concat(id), JSON.stringify({\n\t content: result\n\t }));\n\t }\n\n\t update(container, result);\n\t }).catch(function () {});\n\t }\n\t}\n\n\t// ==========================================================================\n\n\tvar getHours = function getHours(value) {\n\t return Math.trunc(value / 60 / 60 % 60, 10);\n\t};\n\tvar getMinutes = function getMinutes(value) {\n\t return Math.trunc(value / 60 % 60, 10);\n\t};\n\tvar getSeconds = function getSeconds(value) {\n\t return Math.trunc(value % 60, 10);\n\t}; // Format time to UI friendly string\n\n\tfunction formatTime() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var displayHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$1.number(time)) {\n\t return formatTime(null, displayHours, inverted);\n\t } // Format time component to add leading zero\n\n\n\t var format = function format(value) {\n\t return \"0\".concat(value).slice(-2);\n\t }; // Breakdown to hours, mins, secs\n\n\n\t var hours = getHours(time);\n\t var mins = getMinutes(time);\n\t var secs = getSeconds(time); // Do we need to display hours?\n\n\t if (displayHours || hours > 0) {\n\t hours = \"\".concat(hours, \":\");\n\t } else {\n\t hours = '';\n\t } // Render\n\n\n\t return \"\".concat(inverted && time > 0 ? '-' : '').concat(hours).concat(format(mins), \":\").concat(format(secs));\n\t}\n\n\tvar controls = {\n\t // Get icon URL\n\t getIconUrl: function getIconUrl() {\n\t var url = new URL(this.config.iconUrl, window.location);\n\t var cors = url.host !== window.location.host || browser.isIE && !window.svg4everybody;\n\t return {\n\t url: this.config.iconUrl,\n\t cors: cors\n\t };\n\t },\n\t // Find the UI controls\n\t findElements: function findElements() {\n\t try {\n\t this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper); // Buttons\n\n\t this.elements.buttons = {\n\t play: getElements.call(this, this.config.selectors.buttons.play),\n\t pause: getElement.call(this, this.config.selectors.buttons.pause),\n\t restart: getElement.call(this, this.config.selectors.buttons.restart),\n\t rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n\t fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n\t mute: getElement.call(this, this.config.selectors.buttons.mute),\n\t pip: getElement.call(this, this.config.selectors.buttons.pip),\n\t airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n\t settings: getElement.call(this, this.config.selectors.buttons.settings),\n\t captions: getElement.call(this, this.config.selectors.buttons.captions),\n\t fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen)\n\t }; // Progress\n\n\t this.elements.progress = getElement.call(this, this.config.selectors.progress); // Inputs\n\n\t this.elements.inputs = {\n\t seek: getElement.call(this, this.config.selectors.inputs.seek),\n\t volume: getElement.call(this, this.config.selectors.inputs.volume)\n\t }; // Display\n\n\t this.elements.display = {\n\t buffer: getElement.call(this, this.config.selectors.display.buffer),\n\t currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n\t duration: getElement.call(this, this.config.selectors.display.duration)\n\t }; // Seek tooltip\n\n\t if (is$1.element(this.elements.progress)) {\n\t this.elements.display.seekTooltip = this.elements.progress.querySelector(\".\".concat(this.config.classNames.tooltip));\n\t }\n\n\t return true;\n\t } catch (error) {\n\t // Log it\n\t this.debug.warn('It looks like there is a problem with your custom controls HTML', error); // Restore native video controls\n\n\t this.toggleNativeControls(true);\n\t return false;\n\t }\n\t },\n\t // Create icon\n\t createIcon: function createIcon(type, attributes) {\n\t var namespace = 'http://www.w3.org/2000/svg';\n\t var iconUrl = controls.getIconUrl.call(this);\n\t var iconPath = \"\".concat(!iconUrl.cors ? iconUrl.url : '', \"#\").concat(this.config.iconPrefix); // Create \n\n\t var icon = document.createElementNS(namespace, 'svg');\n\t setAttributes(icon, extend(attributes, {\n\t role: 'presentation',\n\t focusable: 'false'\n\t })); // Create the to reference sprite\n\n\t var use = document.createElementNS(namespace, 'use');\n\t var path = \"\".concat(iconPath, \"-\").concat(type); // Set `href` attributes\n\t // https://github.com/sampotts/plyr/issues/460\n\t // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n\n\t if ('href' in use) {\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\t } // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n\n\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path); // Add to \n\n\t icon.appendChild(use);\n\t return icon;\n\t },\n\t // Create hidden text label\n\t createLabel: function createLabel(key) {\n\t var attr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var text = i18n.get(key, this.config);\n\t var attributes = Object.assign({}, attr, {\n\t class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ')\n\t });\n\t return createElement('span', attributes, text);\n\t },\n\t // Create a badge\n\t createBadge: function createBadge(text) {\n\t if (is$1.empty(text)) {\n\t return null;\n\t }\n\n\t var badge = createElement('span', {\n\t class: this.config.classNames.menu.value\n\t });\n\t badge.appendChild(createElement('span', {\n\t class: this.config.classNames.menu.badge\n\t }, text));\n\t return badge;\n\t },\n\t // Create a
to hide the standard controls and UI\n\n\t if (this.isVimeo && this.supported.ui) {\n\t var height = 240;\n\t var offset = (height - padding) / (height / 50);\n\t this.media.style.transform = \"translateY(-\".concat(offset, \"%)\");\n\t }\n\n\t return {\n\t padding: padding,\n\t ratio: ratio\n\t };\n\t}\n\n\tvar Listeners =\n\t/*#__PURE__*/\n\tfunction () {\n\t function Listeners(player) {\n\t _classCallCheck(this, Listeners);\n\n\t this.player = player;\n\t this.lastKey = null;\n\t this.focusTimer = null;\n\t this.lastKeyDown = null;\n\t this.handleKey = this.handleKey.bind(this);\n\t this.toggleMenu = this.toggleMenu.bind(this);\n\t this.setTabFocus = this.setTabFocus.bind(this);\n\t this.firstTouch = this.firstTouch.bind(this);\n\t } // Handle key presses\n\n\n\t _createClass(Listeners, [{\n\t key: \"handleKey\",\n\t value: function handleKey(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var pressed = event.type === 'keydown';\n\t var repeat = pressed && code === this.lastKey; // Bail if a modifier key is set\n\n\t if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n\t return;\n\t } // If the event is bubbled from the media element\n\t // Firefox doesn't get the keycode for whatever reason\n\n\n\t if (!is$1.number(code)) {\n\t return;\n\t } // Seek by the number keys\n\n\n\t var seekByKey = function seekByKey() {\n\t // Divide the max duration into 10th's and times by the number value\n\t player.currentTime = player.duration / 10 * (code - 48);\n\t }; // Handle the key on keydown\n\t // Reset on keyup\n\n\n\t if (pressed) {\n\t // Check focused element\n\t // and if the focused element is not editable (e.g. text input)\n\t // and any that accept key input http://webaim.org/techniques/keyboard/\n\t var focused = document.activeElement;\n\n\t if (is$1.element(focused)) {\n\t var editable = player.config.selectors.editable;\n\t var seek = elements.inputs.seek;\n\n\t if (focused !== seek && matches$1(focused, editable)) {\n\t return;\n\t }\n\n\t if (event.which === 32 && matches$1(focused, 'button, [role^=\"menuitem\"]')) {\n\t return;\n\t }\n\t } // Which keycodes should we prevent default\n\n\n\t var preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79]; // If the code is found prevent default (e.g. prevent scrolling for arrows)\n\n\t if (preventDefault.includes(code)) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t }\n\n\t switch (code) {\n\t case 48:\n\t case 49:\n\t case 50:\n\t case 51:\n\t case 52:\n\t case 53:\n\t case 54:\n\t case 55:\n\t case 56:\n\t case 57:\n\t // 0-9\n\t if (!repeat) {\n\t seekByKey();\n\t }\n\n\t break;\n\n\t case 32:\n\t case 75:\n\t // Space and K key\n\t if (!repeat) {\n\t player.togglePlay();\n\t }\n\n\t break;\n\n\t case 38:\n\t // Arrow up\n\t player.increaseVolume(0.1);\n\t break;\n\n\t case 40:\n\t // Arrow down\n\t player.decreaseVolume(0.1);\n\t break;\n\n\t case 77:\n\t // M key\n\t if (!repeat) {\n\t player.muted = !player.muted;\n\t }\n\n\t break;\n\n\t case 39:\n\t // Arrow forward\n\t player.forward();\n\t break;\n\n\t case 37:\n\t // Arrow back\n\t player.rewind();\n\t break;\n\n\t case 70:\n\t // F key\n\t player.fullscreen.toggle();\n\t break;\n\n\t case 67:\n\t // C key\n\t if (!repeat) {\n\t player.toggleCaptions();\n\t }\n\n\t break;\n\n\t case 76:\n\t // L key\n\t player.loop = !player.loop;\n\t break;\n\n\t /* case 73:\n\t this.setLoop('start');\n\t break;\n\t case 76:\n\t this.setLoop();\n\t break;\n\t case 79:\n\t this.setLoop('end');\n\t break; */\n\n\t default:\n\t break;\n\t } // Escape is handle natively when in full screen\n\t // So we only need to worry about non native\n\n\n\t if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n\t player.fullscreen.toggle();\n\t } // Store last code for next cycle\n\n\n\t this.lastKey = code;\n\t } else {\n\t this.lastKey = null;\n\t }\n\t } // Toggle menu\n\n\t }, {\n\t key: \"toggleMenu\",\n\t value: function toggleMenu(event) {\n\t controls.toggleMenu.call(this.player, event);\n\t } // Device is touch enabled\n\n\t }, {\n\t key: \"firstTouch\",\n\t value: function firstTouch() {\n\t var player = this.player;\n\t var elements = player.elements;\n\t player.touch = true; // Add touch class\n\n\t toggleClass(elements.container, player.config.classNames.isTouch, true);\n\t }\n\t }, {\n\t key: \"setTabFocus\",\n\t value: function setTabFocus(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t clearTimeout(this.focusTimer); // Ignore any key other than tab\n\n\t if (event.type === 'keydown' && event.which !== 9) {\n\t return;\n\t } // Store reference to event timeStamp\n\n\n\t if (event.type === 'keydown') {\n\t this.lastKeyDown = event.timeStamp;\n\t } // Remove current classes\n\n\n\t var removeCurrent = function removeCurrent() {\n\t var className = player.config.classNames.tabFocus;\n\t var current = getElements.call(player, \".\".concat(className));\n\t toggleClass(current, className, false);\n\t }; // Determine if a key was pressed to trigger this event\n\n\n\t var wasKeyDown = event.timeStamp - this.lastKeyDown <= 20; // Ignore focus events if a key was pressed prior\n\n\t if (event.type === 'focus' && !wasKeyDown) {\n\t return;\n\t } // Remove all current\n\n\n\t removeCurrent(); // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\t this.focusTimer = setTimeout(function () {\n\t var focused = document.activeElement; // Ignore if current focus element isn't inside the player\n\n\t if (!elements.container.contains(focused)) {\n\t return;\n\t }\n\n\t toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n\t }, 10);\n\t } // Global window & document listeners\n\n\t }, {\n\t key: \"global\",\n\t value: function global() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t var player = this.player; // Keyboard shortcuts\n\n\t if (player.config.keyboard.global) {\n\t toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n\t } // Click anywhere closes menu\n\n\n\t toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle); // Detect touch by events\n\n\t once.call(player, document.body, 'touchstart', this.firstTouch); // Tab focus detection\n\n\t toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n\t } // Container listeners\n\n\t }, {\n\t key: \"container\",\n\t value: function container() {\n\t var player = this.player;\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Keyboard shortcuts\n\n\t if (!config.keyboard.global && config.keyboard.focused) {\n\t on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n\t } // Toggle controls on mouse events and entering fullscreen\n\n\n\t on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {\n\t var controls = elements.controls; // Remove button states for fullscreen\n\n\t if (controls && event.type === 'enterfullscreen') {\n\t controls.pressed = false;\n\t controls.hover = false;\n\t } // Show, then hide after a timeout unless another control event occurs\n\n\n\t var show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\t var delay = 0;\n\n\t if (show) {\n\t ui.toggleControls.call(player, true); // Use longer timeout for touch devices\n\n\t delay = player.touch ? 3000 : 2000;\n\t } // Clear timer\n\n\n\t clearTimeout(timers.controls); // Set new timer to prevent flicker when seeking\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Force edge to repaint on exit fullscreen\n\t // TODO: Fix weird bug where Edge doesn't re-draw when exiting fullscreen\n\n\t /* if (browser.isEdge) {\n\t on.call(player, elements.container, 'exitfullscreen', () => {\n\t setTimeout(() => repaint(elements.container), 100);\n\t });\n\t } */\n\t // Set a gutter for Vimeo\n\n\t var setGutter = function setGutter(ratio, padding, toggle) {\n\t if (!player.isVimeo) {\n\t return;\n\t }\n\n\t var target = player.elements.wrapper.firstChild;\n\n\t var _ratio$split$map = ratio.split(':').map(Number),\n\t _ratio$split$map2 = _slicedToArray(_ratio$split$map, 2),\n\t height = _ratio$split$map2[1];\n\n\t var _player$embed$ratio$s = player.embed.ratio.split(':').map(Number),\n\t _player$embed$ratio$s2 = _slicedToArray(_player$embed$ratio$s, 2),\n\t videoWidth = _player$embed$ratio$s2[0],\n\t videoHeight = _player$embed$ratio$s2[1];\n\n\t target.style.maxWidth = toggle ? \"\".concat(height / videoHeight * videoWidth, \"px\") : null;\n\t target.style.margin = toggle ? '0 auto' : null;\n\t }; // Resize on fullscreen change\n\n\n\t var setPlayerSize = function setPlayerSize(measure) {\n\t // If we don't need to measure the viewport\n\t if (!measure) {\n\t return setAspectRatio.call(player);\n\t }\n\n\t var rect = elements.container.getBoundingClientRect();\n\t var width = rect.width,\n\t height = rect.height;\n\t return setAspectRatio.call(player, \"\".concat(width, \":\").concat(height));\n\t };\n\n\t var resized = function resized() {\n\t window.clearTimeout(timers.resized);\n\t timers.resized = window.setTimeout(setPlayerSize, 50);\n\t };\n\n\t on.call(player, elements.container, 'enterfullscreen exitfullscreen', function (event) {\n\t var _player$fullscreen = player.fullscreen,\n\t target = _player$fullscreen.target,\n\t usingNative = _player$fullscreen.usingNative; // Ignore for iOS native\n\n\t if (!player.isEmbed || target !== elements.container) {\n\t return;\n\t }\n\n\t var isEnter = event.type === 'enterfullscreen'; // Set the player size when entering fullscreen to viewport size\n\n\t var _setPlayerSize = setPlayerSize(isEnter),\n\t padding = _setPlayerSize.padding,\n\t ratio = _setPlayerSize.ratio; // Set Vimeo gutter\n\n\n\t setGutter(ratio, padding, isEnter); // If not using native fullscreen, we need to check for resizes of viewport\n\n\t if (!usingNative) {\n\t if (isEnter) {\n\t on.call(player, window, 'resize', resized);\n\t } else {\n\t off.call(player, window, 'resize', resized);\n\t }\n\t }\n\t });\n\t } // Listen for media events\n\n\t }, {\n\t key: \"media\",\n\t value: function media() {\n\t var _this = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // Time change on media\n\n\t on.call(player, player.media, 'timeupdate seeking seeked', function (event) {\n\t return controls.timeUpdate.call(player, event);\n\t }); // Display duration\n\n\t on.call(player, player.media, 'durationchange loadeddata loadedmetadata', function (event) {\n\t return controls.durationUpdate.call(player, event);\n\t }); // Check for audio tracks on load\n\t // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n\n\t on.call(player, player.media, 'canplay loadeddata', function () {\n\t toggleHidden(elements.volume, !player.hasAudio);\n\t toggleHidden(elements.buttons.mute, !player.hasAudio);\n\t }); // Handle the media finishing\n\n\t on.call(player, player.media, 'ended', function () {\n\t // Show poster on end\n\t if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n\t // Restart\n\t player.restart();\n\t }\n\t }); // Check for buffer progress\n\n\t on.call(player, player.media, 'progress playing seeking seeked', function (event) {\n\t return controls.updateProgress.call(player, event);\n\t }); // Handle volume changes\n\n\t on.call(player, player.media, 'volumechange', function (event) {\n\t return controls.updateVolume.call(player, event);\n\t }); // Handle play/pause\n\n\t on.call(player, player.media, 'playing play pause ended emptied timeupdate', function (event) {\n\t return ui.checkPlaying.call(player, event);\n\t }); // Loading state\n\n\t on.call(player, player.media, 'waiting canplay seeked playing', function (event) {\n\t return ui.checkLoading.call(player, event);\n\t }); // Click video\n\n\t if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n\t // Re-fetch the wrapper\n\t var wrapper = getElement.call(player, \".\".concat(player.config.classNames.video)); // Bail if there's no wrapper (this should never happen)\n\n\t if (!is$1.element(wrapper)) {\n\t return;\n\t } // On click play, pause or restart\n\n\n\t on.call(player, elements.container, 'click', function (event) {\n\t var targets = [elements.container, wrapper]; // Ignore if click if not container or in video wrapper\n\n\t if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n\t return;\n\t } // Touch devices will just show controls (if hidden)\n\n\n\t if (player.touch && player.config.hideControls) {\n\t return;\n\t }\n\n\t if (player.ended) {\n\t _this.proxy(event, player.restart, 'restart');\n\n\t _this.proxy(event, player.play, 'play');\n\t } else {\n\t _this.proxy(event, player.togglePlay, 'play');\n\t }\n\t });\n\t } // Disable right click\n\n\n\t if (player.supported.ui && player.config.disableContextMenu) {\n\t on.call(player, elements.wrapper, 'contextmenu', function (event) {\n\t event.preventDefault();\n\t }, false);\n\t } // Volume change\n\n\n\t on.call(player, player.media, 'volumechange', function () {\n\t // Save to storage\n\t player.storage.set({\n\t volume: player.volume,\n\t muted: player.muted\n\t });\n\t }); // Speed change\n\n\t on.call(player, player.media, 'ratechange', function () {\n\t // Update UI\n\t controls.updateSetting.call(player, 'speed'); // Save to storage\n\n\n\t player.storage.set({\n\t speed: player.speed\n\t });\n\t }); // Quality change\n\n\t on.call(player, player.media, 'qualitychange', function (event) {\n\t // Update UI\n\t controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n\t }); // Update download link when ready and if quality changes\n\n\t on.call(player, player.media, 'ready qualitychange', function () {\n\t controls.setDownloadLink.call(player);\n\t }); // Proxy events to container\n\t // Bubble up key events for Edge\n\n\t var proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\t on.call(player, player.media, proxyEvents, function (event) {\n\t var _event$detail = event.detail,\n\t detail = _event$detail === void 0 ? {} : _event$detail; // Get error details from media\n\n\t if (event.type === 'error') {\n\t detail = player.media.error;\n\t }\n\n\t triggerEvent.call(player, elements.container, event.type, true, detail);\n\t });\n\t } // Run default and custom handlers\n\n\t }, {\n\t key: \"proxy\",\n\t value: function proxy(event, defaultHandler, customHandlerKey) {\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$1.function(customHandler);\n\t var returned = true; // Execute custom handler\n\n\t if (hasCustomHandler) {\n\t returned = customHandler.call(player, event);\n\t } // Only call default handler if not prevented in custom handler\n\n\n\t if (returned && is$1.function(defaultHandler)) {\n\t defaultHandler.call(player, event);\n\t }\n\t } // Trigger custom and default handlers\n\n\t }, {\n\t key: \"bind\",\n\t value: function bind(element, type, defaultHandler, customHandlerKey) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$1.function(customHandler);\n\t on.call(player, element, type, function (event) {\n\t return _this2.proxy(event, defaultHandler, customHandlerKey);\n\t }, passive && !hasCustomHandler);\n\t } // Listen for control events\n\n\t }, {\n\t key: \"controls\",\n\t value: function controls$1() {\n\t var _this3 = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // IE doesn't support input event, so we fallback to change\n\n\t var inputEvent = browser.isIE ? 'change' : 'input'; // Play/pause toggle\n\n\t if (elements.buttons.play) {\n\t Array.from(elements.buttons.play).forEach(function (button) {\n\t _this3.bind(button, 'click', player.togglePlay, 'play');\n\t });\n\t } // Pause\n\n\n\t this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); // Rewind\n\n\t this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind'); // Rewind\n\n\t this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward'); // Mute toggle\n\n\t this.bind(elements.buttons.mute, 'click', function () {\n\t player.muted = !player.muted;\n\t }, 'mute'); // Captions toggle\n\n\t this.bind(elements.buttons.captions, 'click', function () {\n\t return player.toggleCaptions();\n\t }); // Download\n\n\t this.bind(elements.buttons.download, 'click', function () {\n\t triggerEvent.call(player, player.media, 'download');\n\t }, 'download'); // Fullscreen toggle\n\n\t this.bind(elements.buttons.fullscreen, 'click', function () {\n\t player.fullscreen.toggle();\n\t }, 'fullscreen'); // Picture-in-Picture\n\n\t this.bind(elements.buttons.pip, 'click', function () {\n\t player.pip = 'toggle';\n\t }, 'pip'); // Airplay\n\n\t this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay'); // Settings menu - click toggle\n\n\t this.bind(elements.buttons.settings, 'click', function (event) {\n\t // Prevent the document click listener closing the menu\n\t event.stopPropagation();\n\n\t controls.toggleMenu.call(player, event);\n\t }); // Settings menu - keyboard toggle\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\n\t this.bind(elements.buttons.settings, 'keyup', function (event) {\n\t var code = event.which; // We only care about space and return\n\n\t if (![13, 32].includes(code)) {\n\t return;\n\t } // Because return triggers a click anyway, all we need to do is set focus\n\n\n\t if (code === 13) {\n\t controls.focusFirstMenuItem.call(player, null, true);\n\n\t return;\n\t } // Prevent scroll\n\n\n\t event.preventDefault(); // Prevent playing video (Firefox)\n\n\t event.stopPropagation(); // Toggle menu\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false // Can't be passive as we're preventing default\n\t ); // Escape closes menu\n\n\t this.bind(elements.settings.menu, 'keydown', function (event) {\n\t if (event.which === 27) {\n\t controls.toggleMenu.call(player, event);\n\t }\n\t }); // Set range input alternative \"value\", which matches the tooltip time (#954)\n\n\t this.bind(elements.inputs.seek, 'mousedown mousemove', function (event) {\n\t var rect = elements.progress.getBoundingClientRect();\n\t var percent = 100 / rect.width * (event.pageX - rect.left);\n\t event.currentTarget.setAttribute('seek-value', percent);\n\t }); // Pause while seeking\n\n\t this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', function (event) {\n\t var seek = event.currentTarget;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var attribute = 'play-on-seeked';\n\n\t if (is$1.keyboardEvent(event) && code !== 39 && code !== 37) {\n\t return;\n\t } // Record seek time so we can prevent hiding controls for a few seconds after seek\n\n\n\t player.lastSeekTime = Date.now(); // Was playing before?\n\n\t var play = seek.hasAttribute(attribute); // Done seeking\n\n\t var done = ['mouseup', 'touchend', 'keyup'].includes(event.type); // If we're done seeking and it was playing, resume playback\n\n\t if (play && done) {\n\t seek.removeAttribute(attribute);\n\t player.play();\n\t } else if (!done && player.playing) {\n\t seek.setAttribute(attribute, '');\n\t player.pause();\n\t }\n\t }); // Fix range inputs on iOS\n\t // Super weird iOS bug where after you interact with an ,\n\t // it takes over further interactions on the page. This is a hack\n\n\t if (browser.isIos) {\n\t var inputs = getElements.call(player, 'input[type=\"range\"]');\n\t Array.from(inputs).forEach(function (input) {\n\t return _this3.bind(input, inputEvent, function (event) {\n\t return repaint(event.target);\n\t });\n\t });\n\t } // Seek\n\n\n\t this.bind(elements.inputs.seek, inputEvent, function (event) {\n\t var seek = event.currentTarget; // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n\n\t var seekTo = seek.getAttribute('seek-value');\n\n\t if (is$1.empty(seekTo)) {\n\t seekTo = seek.value;\n\t }\n\n\t seek.removeAttribute('seek-value');\n\t player.currentTime = seekTo / seek.max * player.duration;\n\t }, 'seek'); // Seek tooltip\n\n\t this.bind(elements.progress, 'mouseenter mouseleave mousemove', function (event) {\n\t return controls.updateSeekTooltip.call(player, event);\n\t }); // Preview thumbnails plugin\n\t // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n\n\t this.bind(elements.progress, 'mousemove touchmove', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startMove(event);\n\t }\n\t }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n\n\t this.bind(elements.progress, 'mouseleave click', function () {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endMove(false, true);\n\t }\n\t }); // Show scrubbing preview\n\n\t this.bind(elements.progress, 'mousedown touchstart', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startScrubbing(event);\n\t }\n\t });\n\t this.bind(elements.progress, 'mouseup touchend', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endScrubbing(event);\n\t }\n\t }); // Polyfill for lower fill in for webkit\n\n\t if (browser.isWebkit) {\n\t Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(function (element) {\n\t _this3.bind(element, 'input', function (event) {\n\t return controls.updateRangeFill.call(player, event.target);\n\t });\n\t });\n\t } // Current time invert\n\t // Only if one time element is used for both currentTime and duration\n\n\n\t if (player.config.toggleInvert && !is$1.element(elements.display.duration)) {\n\t this.bind(elements.display.currentTime, 'click', function () {\n\t // Do nothing if we're at the start\n\t if (player.currentTime === 0) {\n\t return;\n\t }\n\n\t player.config.invertTime = !player.config.invertTime;\n\n\t controls.timeUpdate.call(player);\n\t });\n\t } // Volume\n\n\n\t this.bind(elements.inputs.volume, inputEvent, function (event) {\n\t player.volume = event.target.value;\n\t }, 'volume'); // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mouseenter mouseleave', function (event) {\n\t elements.controls.hover = !player.touch && event.type === 'mouseenter';\n\t }); // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', function (event) {\n\t elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n\t }); // Show controls when they receive focus (e.g., when using keyboard tab key)\n\n\t this.bind(elements.controls, 'focusin', function () {\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Skip transition to prevent focus from scrolling the parent element\n\n\t toggleClass(elements.controls, config.classNames.noTransition, true); // Toggle\n\n\t ui.toggleControls.call(player, true); // Restore transition\n\n\t setTimeout(function () {\n\t toggleClass(elements.controls, config.classNames.noTransition, false);\n\t }, 0); // Delay a little more for mouse users\n\n\t var delay = _this3.touch ? 3000 : 4000; // Clear timer\n\n\t clearTimeout(timers.controls); // Hide again after delay\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Mouse wheel for volume\n\n\t this.bind(elements.inputs.volume, 'wheel', function (event) {\n\t // Detect \"natural\" scroll - suppored on OS X Safari only\n\t // Other browsers on OS X will be inverted until support improves\n\t var inverted = event.webkitDirectionInvertedFromDevice; // Get delta from event. Invert if `inverted` is true\n\n\t var _map = [event.deltaX, -event.deltaY].map(function (value) {\n\t return inverted ? -value : value;\n\t }),\n\t _map2 = _slicedToArray(_map, 2),\n\t x = _map2[0],\n\t y = _map2[1]; // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n\n\n\t var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); // Change the volume by 2%\n\n\t player.increaseVolume(direction / 50); // Don't break page scrolling at max and min\n\n\t var volume = player.media.volume;\n\n\t if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {\n\t event.preventDefault();\n\t }\n\t }, 'volume', false);\n\t }\n\t }]);\n\n\t return Listeners;\n\t}();\n\n\tvar loadjs_umd = createCommonjsModule(function (module, exports) {\n\t (function (root, factory) {\n\t {\n\t module.exports = factory();\n\t }\n\t })(commonjsGlobal, function () {\n\t /**\n\t * Global dependencies.\n\t * @global {Object} document - DOM\n\t */\n\t var devnull = function devnull() {},\n\t bundleIdCache = {},\n\t bundleResultCache = {},\n\t bundleCallbackQueue = {};\n\t /**\n\t * Subscribe to bundle load event.\n\t * @param {string[]} bundleIds - Bundle ids\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function subscribe(bundleIds, callbackFn) {\n\t // listify\n\t bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\t var depsNotFound = [],\n\t i = bundleIds.length,\n\t numWaiting = i,\n\t fn,\n\t bundleId,\n\t r,\n\t q; // define callback function\n\n\t fn = function fn(bundleId, pathsNotFound) {\n\t if (pathsNotFound.length) depsNotFound.push(bundleId);\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(depsNotFound);\n\t }; // register callback\n\n\n\t while (i--) {\n\t bundleId = bundleIds[i]; // execute callback if in result cache\n\n\t r = bundleResultCache[bundleId];\n\n\t if (r) {\n\t fn(bundleId, r);\n\t continue;\n\t } // add to callback queue\n\n\n\t q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n\t q.push(fn);\n\t }\n\t }\n\t /**\n\t * Publish bundle load event.\n\t * @param {string} bundleId - Bundle id\n\t * @param {string[]} pathsNotFound - List of files not found\n\t */\n\n\n\t function publish(bundleId, pathsNotFound) {\n\t // exit if id isn't defined\n\t if (!bundleId) return;\n\t var q = bundleCallbackQueue[bundleId]; // cache result\n\n\t bundleResultCache[bundleId] = pathsNotFound; // exit if queue is empty\n\n\t if (!q) return; // empty callback queue\n\n\t while (q.length) {\n\t q[0](bundleId, pathsNotFound);\n\t q.splice(0, 1);\n\t }\n\t }\n\t /**\n\t * Execute callbacks.\n\t * @param {Object or Function} args - The callback args\n\t * @param {string[]} depsNotFound - List of dependencies not found\n\t */\n\n\n\t function executeCallbacks(args, depsNotFound) {\n\t // accept function as argument\n\t if (args.call) args = {\n\t success: args\n\t }; // success and error callbacks\n\n\t if (depsNotFound.length) (args.error || devnull)(depsNotFound);else (args.success || devnull)(args);\n\t }\n\t /**\n\t * Load individual file.\n\t * @param {string} path - The file path\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFile(path, callbackFn, args, numTries) {\n\t var doc = document,\n\t async = args.async,\n\t maxTries = (args.numRetries || 0) + 1,\n\t beforeCallbackFn = args.before || devnull,\n\t pathStripped = path.replace(/^(css|img)!/, ''),\n\t isLegacyIECss,\n\t e;\n\t numTries = numTries || 0;\n\n\t if (/(^css!|\\.css$)/.test(path)) {\n\t // css\n\t e = doc.createElement('link');\n\t e.rel = 'stylesheet';\n\t e.href = pathStripped; // tag IE9+\n\n\t isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)\n\n\t if (isLegacyIECss && e.relList) {\n\t isLegacyIECss = 0;\n\t e.rel = 'preload';\n\t e.as = 'style';\n\t }\n\t } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n\t // image\n\t e = doc.createElement('img');\n\t e.src = pathStripped;\n\t } else {\n\t // javascript\n\t e = doc.createElement('script');\n\t e.src = path;\n\t e.async = async === undefined ? true : async;\n\t }\n\n\t e.onload = e.onerror = e.onbeforeload = function (ev) {\n\t var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror\n\t // support in IE9-11\n\n\t if (isLegacyIECss) {\n\t try {\n\t if (!e.sheet.cssText.length) result = 'e';\n\t } catch (x) {\n\t // sheets objects created from load errors don't allow access to\n\t // `cssText` (unless error is Code:18 SecurityError)\n\t if (x.code != 18) result = 'e';\n\t }\n\t } // handle retries in case of load failure\n\n\n\t if (result == 'e') {\n\t // increment counter\n\t numTries += 1; // exit function and try again\n\n\t if (numTries < maxTries) {\n\t return loadFile(path, callbackFn, args, numTries);\n\t }\n\t } else if (e.rel == 'preload' && e.as == 'style') {\n\t // activate preloaded stylesheets\n\t return e.rel = 'stylesheet'; // jshint ignore:line\n\t } // execute callback\n\n\n\t callbackFn(path, result, ev.defaultPrevented);\n\t }; // add to document (unless callback returns `false`)\n\n\n\t if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n\t }\n\t /**\n\t * Load multiple files.\n\t * @param {string[]} paths - The file paths\n\t * @param {Function} callbackFn - The callback function\n\t */\n\n\n\t function loadFiles(paths, callbackFn, args) {\n\t // listify paths\n\t paths = paths.push ? paths : [paths];\n\t var numWaiting = paths.length,\n\t x = numWaiting,\n\t pathsNotFound = [],\n\t fn,\n\t i; // define callback function\n\n\t fn = function fn(path, result, defaultPrevented) {\n\t // handle error\n\t if (result == 'e') pathsNotFound.push(path); // handle beforeload event. If defaultPrevented then that means the load\n\t // will be blocked (ex. Ghostery/ABP on Safari)\n\n\t if (result == 'b') {\n\t if (defaultPrevented) pathsNotFound.push(path);else return;\n\t }\n\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(pathsNotFound);\n\t }; // load scripts\n\n\n\t for (i = 0; i < x; i++) {\n\t loadFile(paths[i], fn, args);\n\t }\n\t }\n\t /**\n\t * Initiate script load and register bundle.\n\t * @param {(string|string[])} paths - The file paths\n\t * @param {(string|Function)} [arg1] - The bundleId or success callback\n\t * @param {Function} [arg2] - The success or error callback\n\t * @param {Function} [arg3] - The error callback\n\t */\n\n\n\t function loadjs(paths, arg1, arg2) {\n\t var bundleId, args; // bundleId (if string)\n\n\t if (arg1 && arg1.trim) bundleId = arg1; // args (default is {})\n\n\t args = (bundleId ? arg2 : arg1) || {}; // throw error if bundle is already defined\n\n\t if (bundleId) {\n\t if (bundleId in bundleIdCache) {\n\t throw \"LoadJS\";\n\t } else {\n\t bundleIdCache[bundleId] = true;\n\t }\n\t }\n\n\t function loadFn(resolve, reject) {\n\t loadFiles(paths, function (pathsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, pathsNotFound); // resolve Promise\n\n\t if (resolve) {\n\t executeCallbacks({\n\t success: resolve,\n\t error: reject\n\t }, pathsNotFound);\n\t } // publish bundle load event\n\n\n\t publish(bundleId, pathsNotFound);\n\t }, args);\n\t }\n\n\t if (args.returnPromise) return new Promise(loadFn);else loadFn();\n\t }\n\t /**\n\t * Execute callbacks when dependencies have been satisfied.\n\t * @param {(string|string[])} deps - List of bundle ids\n\t * @param {Object} args - success/error arguments\n\t */\n\n\n\t loadjs.ready = function ready(deps, args) {\n\t // subscribe to bundle load event\n\t subscribe(deps, function (depsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, depsNotFound);\n\t });\n\t return loadjs;\n\t };\n\t /**\n\t * Manually satisfy bundle dependencies.\n\t * @param {string} bundleId - The bundle id\n\t */\n\n\n\t loadjs.done = function done(bundleId) {\n\t publish(bundleId, []);\n\t };\n\t /**\n\t * Reset loadjs dependencies statuses\n\t */\n\n\n\t loadjs.reset = function reset() {\n\t bundleIdCache = {};\n\t bundleResultCache = {};\n\t bundleCallbackQueue = {};\n\t };\n\t /**\n\t * Determine if bundle has already been defined\n\t * @param String} bundleId - The bundle id\n\t */\n\n\n\t loadjs.isDefined = function isDefined(bundleId) {\n\t return bundleId in bundleIdCache;\n\t }; // export\n\n\n\t return loadjs;\n\t });\n\t});\n\n\t// ==========================================================================\n\tfunction loadScript(url) {\n\t return new Promise(function (resolve, reject) {\n\t loadjs_umd(url, {\n\t success: resolve,\n\t error: reject\n\t });\n\t });\n\t}\n\n\tfunction parseId(url) {\n\t if (is$1.empty(url)) {\n\t return null;\n\t }\n\n\t if (is$1.number(Number(url))) {\n\t return url;\n\t }\n\n\t var regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar vimeo = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Set intial ratio\n\n\t setAspectRatio.call(this); // Load the API if not already\n\n\t if (!is$1.object(window.Vimeo)) {\n\t loadScript(this.config.urls.vimeo.sdk).then(function () {\n\t vimeo.ready.call(_this);\n\t }).catch(function (error) {\n\t _this.debug.warn('Vimeo API failed to load', error);\n\t });\n\t } else {\n\t vimeo.ready.call(this);\n\t }\n\t },\n\t // API Ready\n\t ready: function ready() {\n\t var _this2 = this;\n\n\t var player = this;\n\t var config = player.config.vimeo; // Get Vimeo params for the iframe\n\n\t var params = buildUrlParams(extend({}, {\n\t loop: player.config.loop.active,\n\t autoplay: player.autoplay,\n\t muted: player.muted,\n\t gesture: 'media',\n\t playsinline: !this.config.fullscreen.iosNative\n\t }, config)); // Get the source URL or ID\n\n\t var source = player.media.getAttribute('src'); // Get from
if needed\n\n\t if (is$1.empty(source)) {\n\t source = player.media.getAttribute(player.config.attributes.embed.id);\n\t }\n\n\t var id = parseId(source); // Build an iframe\n\n\t var iframe = createElement('iframe');\n\t var src = format(player.config.urls.vimeo.iframe, id, params);\n\t iframe.setAttribute('src', src);\n\t iframe.setAttribute('allowfullscreen', '');\n\t iframe.setAttribute('allowtransparency', '');\n\t iframe.setAttribute('allow', 'autoplay'); // Get poster, if already set\n\n\t var poster = player.poster; // Inject the package\n\n\t var wrapper = createElement('div', {\n\t poster: poster,\n\t class: player.config.classNames.embedContainer\n\t });\n\t wrapper.appendChild(iframe);\n\t player.media = replaceElement(wrapper, player.media); // Get poster image\n\n\t fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) {\n\t if (is$1.empty(response)) {\n\t return;\n\t } // Get the URL for thumbnail\n\n\n\t var url = new URL(response[0].thumbnail_large); // Get original image\n\n\t url.pathname = \"\".concat(url.pathname.split('_')[0], \".jpg\"); // Set and show poster\n\n\t ui.setPoster.call(player, url.href).catch(function () {});\n\t }); // Setup instance\n\t // https://github.com/vimeo/player.js\n\n\t player.embed = new window.Vimeo.Player(iframe, {\n\t autopause: player.config.autopause,\n\t muted: player.muted\n\t });\n\t player.media.paused = true;\n\t player.media.currentTime = 0; // Disable native text track rendering\n\n\t if (player.supported.ui) {\n\t player.embed.disableTextTrack();\n\t } // Create a faux HTML5 API using the Vimeo API\n\n\n\t player.media.play = function () {\n\t assurePlaybackState.call(player, true);\n\t return player.embed.play();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState.call(player, false);\n\t return player.embed.pause();\n\t };\n\n\t player.media.stop = function () {\n\t player.pause();\n\t player.currentTime = 0;\n\t }; // Seeking\n\n\n\t var currentTime = player.media.currentTime;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return currentTime;\n\t },\n\t set: function set(time) {\n\t // Vimeo will automatically play on seek if the video hasn't been played before\n\t // Get current paused state and volume etc\n\t var embed = player.embed,\n\t media = player.media,\n\t paused = player.paused,\n\t volume = player.volume;\n\t var restorePause = paused && !embed.hasPlayed; // Set seeking state and trigger event\n\n\t media.seeking = true;\n\t triggerEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete\n\n\t Promise.resolve(restorePause && embed.setVolume(0)) // Seek\n\t .then(function () {\n\t return embed.setCurrentTime(time);\n\t }) // Restore paused\n\t .then(function () {\n\t return restorePause && embed.pause();\n\t }) // Restore volume\n\t .then(function () {\n\t return restorePause && embed.setVolume(volume);\n\t }).catch(function () {// Do nothing\n\t });\n\t }\n\t }); // Playback speed\n\n\t var speed = player.config.speed.selected;\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return speed;\n\t },\n\t set: function set(input) {\n\t player.embed.setPlaybackRate(input).then(function () {\n\t speed = input;\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t }).catch(function (error) {\n\t // Hide menu item (and menu if empty)\n\t if (error.name === 'Error') {\n\t controls.setSpeedMenu.call(player, []);\n\t }\n\t });\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t player.embed.setVolume(input).then(function () {\n\t volume = input;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$1.boolean(input) ? input : false;\n\t player.embed.setVolume(toggle ? 0 : player.config.volume).then(function () {\n\t muted = toggle;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Loop\n\n\t var loop = player.config.loop;\n\t Object.defineProperty(player.media, 'loop', {\n\t get: function get() {\n\t return loop;\n\t },\n\t set: function set(input) {\n\t var toggle = is$1.boolean(input) ? input : player.config.loop.active;\n\t player.embed.setLoop(toggle).then(function () {\n\t loop = toggle;\n\t });\n\t }\n\t }); // Source\n\n\t var currentSrc;\n\t player.embed.getVideoUrl().then(function (value) {\n\t currentSrc = value;\n\t controls.setDownloadLink.call(player);\n\t }).catch(function (error) {\n\t _this2.debug.warn(error);\n\t });\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return currentSrc;\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Set aspect ratio based on video size\n\n\t Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(function (dimensions) {\n\t var _dimensions = _slicedToArray(dimensions, 2),\n\t width = _dimensions[0],\n\t height = _dimensions[1];\n\n\t player.embed.ratio = \"\".concat(width, \":\").concat(height);\n\t setAspectRatio.call(_this2, player.embed.ratio);\n\t }); // Set autopause\n\n\t player.embed.setAutopause(player.config.autopause).then(function (state) {\n\t player.config.autopause = state;\n\t }); // Get title\n\n\t player.embed.getVideoTitle().then(function (title) {\n\t player.config.title = title;\n\t ui.setTitle.call(_this2);\n\t }); // Get current time\n\n\t player.embed.getCurrentTime().then(function (value) {\n\t currentTime = value;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }); // Get duration\n\n\t player.embed.getDuration().then(function (value) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }); // Get captions\n\n\t player.embed.getTextTracks().then(function (tracks) {\n\t player.media.textTracks = tracks;\n\t captions.setup.call(player);\n\t });\n\t player.embed.on('cuechange', function (_ref) {\n\t var _ref$cues = _ref.cues,\n\t cues = _ref$cues === void 0 ? [] : _ref$cues;\n\t var strippedCues = cues.map(function (cue) {\n\t return stripHTML(cue.text);\n\t });\n\t captions.updateCues.call(player, strippedCues);\n\t });\n\t player.embed.on('loaded', function () {\n\t // Assure state and events are updated on autoplay\n\t player.embed.getPaused().then(function (paused) {\n\t assurePlaybackState.call(player, !paused);\n\n\t if (!paused) {\n\t triggerEvent.call(player, player.media, 'playing');\n\t }\n\t });\n\n\t if (is$1.element(player.embed.element) && player.supported.ui) {\n\t var frame = player.embed.element; // Fix keyboard focus issues\n\t // https://github.com/sampotts/plyr/issues/317\n\n\t frame.setAttribute('tabindex', -1);\n\t }\n\t });\n\t player.embed.on('play', function () {\n\t assurePlaybackState.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('pause', function () {\n\t assurePlaybackState.call(player, false);\n\t });\n\t player.embed.on('timeupdate', function (data) {\n\t player.media.seeking = false;\n\t currentTime = data.seconds;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t });\n\t player.embed.on('progress', function (data) {\n\t player.media.buffered = data.percent;\n\t triggerEvent.call(player, player.media, 'progress'); // Check all loaded\n\n\t if (parseInt(data.percent, 10) === 1) {\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t } // Get duration as if we do it before load, it gives an incorrect value\n\t // https://github.com/sampotts/plyr/issues/891\n\n\n\t player.embed.getDuration().then(function (value) {\n\t if (value !== player.media.duration) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t });\n\t });\n\t player.embed.on('seeked', function () {\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t });\n\t player.embed.on('ended', function () {\n\t player.media.paused = true;\n\t triggerEvent.call(player, player.media, 'ended');\n\t });\n\t player.embed.on('error', function (detail) {\n\t player.media.error = detail;\n\t triggerEvent.call(player, player.media, 'error');\n\t }); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 0);\n\t }\n\t};\n\n\t// ==========================================================================\n\n\tfunction parseId$1(url) {\n\t if (is$1.empty(url)) {\n\t return null;\n\t }\n\n\t var regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState$1(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar youtube = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Set aspect ratio\n\n\t setAspectRatio.call(this); // Setup API\n\n\t if (is$1.object(window.YT) && is$1.function(window.YT.Player)) {\n\t youtube.ready.call(this);\n\t } else {\n\t // Load the API\n\t loadScript(this.config.urls.youtube.sdk).catch(function (error) {\n\t _this.debug.warn('YouTube API failed to load', error);\n\t }); // Setup callback for the API\n\t // YouTube has it's own system of course...\n\n\t window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || []; // Add to queue\n\n\t window.onYouTubeReadyCallbacks.push(function () {\n\t youtube.ready.call(_this);\n\t }); // Set callback to process queue\n\n\t window.onYouTubeIframeAPIReady = function () {\n\t window.onYouTubeReadyCallbacks.forEach(function (callback) {\n\t callback();\n\t });\n\t };\n\t }\n\t },\n\t // Get the media title\n\t getTitle: function getTitle(videoId) {\n\t var _this2 = this;\n\n\t // Try via undocumented API method first\n\t // This method disappears now and then though...\n\t // https://github.com/sampotts/plyr/issues/709\n\t if (is$1.function(this.embed.getVideoData)) {\n\t var _this$embed$getVideoD = this.embed.getVideoData(),\n\t title = _this$embed$getVideoD.title;\n\n\t if (is$1.empty(title)) {\n\t this.config.title = title;\n\t ui.setTitle.call(this);\n\t return;\n\t }\n\t } // Or via Google API\n\n\n\t var key = this.config.keys.google;\n\n\t if (is$1.string(key) && !is$1.empty(key)) {\n\t var url = format(this.config.urls.youtube.api, videoId, key);\n\t fetch(url).then(function (result) {\n\t if (is$1.object(result)) {\n\t _this2.config.title = result.items[0].snippet.title;\n\t ui.setTitle.call(_this2);\n\t }\n\t }).catch(function () {});\n\t }\n\t },\n\t // API ready\n\t ready: function ready() {\n\t var player = this; // Ignore already setup (race condition)\n\n\t var currentId = player.media.getAttribute('id');\n\n\t if (!is$1.empty(currentId) && currentId.startsWith('youtube-')) {\n\t return;\n\t } // Get the source URL or ID\n\n\n\t var source = player.media.getAttribute('src'); // Get from
if needed\n\n\t if (is$1.empty(source)) {\n\t source = player.media.getAttribute(this.config.attributes.embed.id);\n\t } // Replace the