diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..e59ae038 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +#The docker build doesn't require anything, so just ignore all +* + diff --git a/.gitignore b/.gitignore index 329e6b95..ddd51772 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ Makefile.ini /custom/* /custom_2/* +.env diff --git a/Dockerfile b/Dockerfile index 15960af9..0fedd98a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,5 +3,7 @@ FROM php:7.4-apache #Default value in case no build argument: ARG tz="Europe/Amsterdam" -RUN printf "[PHP]\ndate.timezone = $tz\n" > /usr/local/etc/php/conf.d/tzone.ini +RUN printf "[PHP]\ndate.timezone = $tz\n" > /usr/local/etc/php/conf.d/tzone.ini && \ +mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" +#RUN printf "[PHP]\ndate.timezone = $tz\n" > /usr/local/etc/php/conf.d/tzone.ini SHELL ["/bin/bash", "-c"] diff --git a/css/creative.css b/css/creative.css index cc0ee528..1580c7dc 100755 --- a/css/creative.css +++ b/css/creative.css @@ -134,6 +134,7 @@ .dt_state { margin: 5px 5px; + min-height: 1px; } .button .dt_state, @@ -311,28 +312,40 @@ background-color: #555; } -.modal-header { - border-bottom: 0px !important; +.modal-dialog-custom .modal-content:not(.modal-url) .close { + color: white; + opacity: 0.7; +} + +.modal-dialog-custom .modal-content:not(.modal-url) .close:focus, .modal-dialog-custom .modal-content:not(.modal-url) .close:hover { + color: white; + opacity: 1; +} + +.modal-popup > [id^="block"] { + height: 100%; + min-height: 1px; + overflow:auto; } + + /* next css sets the default height of the frame popup */ +/* .popupheight { height: calc(95vh - 150px); } +*/ .modal-body .glyphicon { color: #a80002; cursor: help; } -.modal-dialog-settings { - width: 70%; - margin: 80px auto; -} .nav { border-bottom: 1px solid #e5e5e5; @@ -385,8 +398,27 @@ next css sets the default height of the frame popup .modal-dialog-custom { min-width: 10px; width: 80%; + height: 80%; + margin: auto; + margin: 5px; } +.modal-dialog-custom .modal-content:not(.modal-url) { + background-color: #222; + color: white; +} + +.modal-header { + border-bottom: 0px !important; +} + +.modal-content.url { + background-color: white; + color: black; +} + + + .material-switch>input[type='checkbox'] { display: none; } @@ -438,35 +470,57 @@ next css sets the default height of the frame popup /* END || Popup modal settings (need to sort and arrange first) */ -.containslog .items { - height: 154px; +/* .log */ + +.log { + height: 200px +} + +/*on IOS display:flex and height have to bubble down*/ +.log .dt_content { + height:100%; + display: flex; + flex-direction: column; +} + +.log .dt_state{ + display:flex; + flex-direction:column; + height: 100%; +} + + +.log .items { + height: 100%; overflow: auto; - width: calc(100% - 40px); } -.containslog .items .level0 { +.modal-popup > div > .log { + height: 100% +} + +.log .items .level0 { color: #c70626; } -.containslog .items .level1 { +.log .items .level1 { color: #067676; } -.containslog .items .level2 { +.log .items .level2 { color: #ffffff; } -.containslog .items .level0.popup { - color: #c70626; +.log .items .timestamp { + white-space: nowrap; + vertical-align: top; } -.containslog .items .level1.popup { - color: #067676; +.log .items .sep { + width: 5px } -.containslog .items .level2.popup { - color: #727272; -} +/* end log */ .containsicalendar table.calendar { border-collapse: separate; @@ -482,15 +536,6 @@ next css sets the default height of the frame popup white-space: normal; } -.containslog.popup { - height: 100% !important; - overflow: auto; -} - -.containslog.popup .items { - min-height: 300px; -} - .colbar.transbg { padding: 6px 5px !important; } @@ -608,10 +653,25 @@ a.playlist { background-color: #fff; width: 93%; border: 1px solid #ccc; - height: 77px; margin: 5px; + display: inline-block; } +.modal-dialog.modal-spotify { + width: 80%; +} + +.spotlist img { + height: 100%; + width: 100%; + object-fit: contain; +} + +.spotlist .spotify-info { + padding-left:10px; + padding-top:5px; + padding-right:10px; +} /* Thermostat CSS: */ @@ -763,12 +823,23 @@ a.playlist { height: 300px; } */ +.modal-dialog-custom .modal-content { + display: flex; + flex-direction: column; + height: 100%; +} -.modal.opengraph .modal-content { - background-color: #222; - color: white; +.modal-body { + height: 100%; +} + +/* +.modal.openpopup .frameclose { + background-color: #fff; + color: black; margin: 5px; } +*/ .graphcontent { height: 100%; @@ -783,12 +854,15 @@ a.playlist { .graphwidth { min-width: 30px; - width: 100vw; + width: 80%; } -@media (min-width: 768px) { - .graphwidth { - width: 80vw; +@media (max-width: 768px) { +/* .graphwidth { + width: 100vw; + }*/ + .modal-dialog { + width: 100% } } @@ -1019,10 +1093,12 @@ select option { margin-top: 8px; } +/* .fas.fa-tint { margin-left: 5px; margin-top: 4px; } +*/ .fas.fa-trash { margin-left: 8px; @@ -1114,6 +1190,10 @@ p { background-clip: padding-box; } +.dt_block.popup { + background:unset; +} + .weatherfull .transbg { padding-top: 9px !important; padding-bottom: 10px !important; @@ -1484,10 +1564,10 @@ img.icon { img.icon { max-width: 15px !important; } - .fas, - .far, - .fab, - .wi { + .mh .fas, + .mh .far, + .mh .fab, + .mh .wi { font-size: 15px !important; } .fa-tv:before { @@ -1908,6 +1988,15 @@ a:not([href]) { text-align: center; } +.modal-dialog { + display: inline-block; + text-align: left; + vertical-align: middle; + min-width: 50%; + margin-left:auto; + margin-right: auto; +} + @media screen and (min-width: 768px) { .modal:before { display: inline-block; @@ -1915,16 +2004,13 @@ a:not([href]) { content: ' '; height: 100%; } -} -.modal-dialog { - display: inline-block; - text-align: left; - vertical-align: middle; - min-width: 50%; + .modal-dialog-settings { + margin: 80px auto; + vertical-align: top; + } } - /* START: NEWS BLOCK*/ #newsTicker { @@ -2484,6 +2570,7 @@ canvas { .agenda table { border-collapse: separate; border-spacing: 10px 0px; + margin-left: -10px; } .agenda td { @@ -2695,14 +2782,27 @@ td.agenda-title { background-color: rgba(0, 0, 0, 0.2); } +.sec-modal .sec-frame { + position: relative +} + .sec-frame { + border-radius: 5px; + position: relative; + width: 12em; + margin: 0 auto +} + +.sec-frame.decorated { background-image: url(../img/bg14.jpg); -webkit-box-shadow: 10px 10px 5px 0px rgba(0, 0, 0, 0.75); -moz-box-shadow: 10px 10px 5px 0px rgba(0, 0, 0, 0.75); box-shadow: 0px 6px 20px 5px rgba(0, 0, 0, 0.75), inset 0px 5px 7px -2px rgba(252, 252, 252, 0.2), inset 0 -14px 8px 2px rgba(0, 0, 0, 0.7); - border-radius: 5px; - position: relative; - height: 100%; + padding: 1em; +} + +.sec-frame:not(.decorated) { + background-color: rgba(0,0,0,0.2); } .sec-frame .keypad-header { @@ -2710,15 +2810,13 @@ td.agenda-title { white-space: nowrap; align-items: center; justify-content: center; - height: 5%; - position: absolute; width: 100%; - top: 7%; - font-size: 2vw; + height: 2em; + font-size: 100%; } .sec-frame .keypad-header .fas { - font-size: 100%; + font-size: 100% !important; } .sec-frame .keypad-header .text { @@ -2754,30 +2852,20 @@ td.agenda-title { color: #494848; text-align: center; font-family: monospace; - position: absolute; - bottom: 7%; width: 100%; - height: 3%; - font-size: 0.6vw; + font-size: 50%; + line-height: 2; } .sec-frame .keypad-input { - text-align: left; - position: absolute; - width: 80%; - top: 15%; - height: 75%; - margin: 0 10%; + margin: 0 2%; } .sec-frame .keypad-input table { border-collapse: separate; border-spacing: 1px; width: 100%; - position: absolute; - top: 12%; margin: 0; - height: 82%; } .sec-frame .keypad-input table td { @@ -2787,22 +2875,19 @@ td.agenda-title { .sec-frame .keypad-input table tr { white-space: nowrap; - height: 25%; } .sec-frame .keypad-input .input-container { - background-color: #161616; - position: absolute; overflow: hidden; - height: 10%; - left: 2%; - right: 2%; + margin: 0 2%; +} + +.sec-frame.decorated .keypad-input .input-container { box-shadow: 0px 2px 9px 1px rgba(0, 0, 0, 0.8); } .sec-frame .keypad-input .key-input { font-family: 'Audiowide' !important; - font-size: 2vw; width: 100%; border-radius: 3px; background-color: #161616; @@ -2812,6 +2897,7 @@ td.agenda-title { font-family: monospace; text-align: center; height: 100%; + font-size: 70%; } .text-strobe { @@ -2841,16 +2927,20 @@ td.agenda-title { -webkit-user-select: none; -ms-user-select: none; user-select: none; - -webkit-box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); - -moz-box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); - box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); font-family: monospace; text-transform: uppercase; font-weight: 900; - font-size: 3.5vw; display: flex; justify-content: center; align-items: center; + font-size: 100%; + line-height: 1.75; +} + +.sec-frame.decorated .keypad-input .key { + -webkit-box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); + -moz-box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); + box-shadow: 0px 11px 22px #000000, 0px 3px 15px rgba(0, 0, 0, 0.4), inset 0px 1px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 3px rgba(255, 255, 255, 0.5); } .sec-frame .keypad-input .key:not(.disabled):hover { @@ -2937,8 +3027,8 @@ td.agenda-title { .screw { position: absolute; - width: 5%; - height: 4%; + width: 0.5em; + height: 0.5em; border-radius: 100%; background: -moz-linear-gradient( -45deg, #adadad 0%, #e1e1e1 51%, #dddddd 68%, #f6f6f6 100%); background: -webkit-gradient( linear, left top, right bottom, color-stop(0%, #adadad), color-stop(51%, #e1e1e1), color-stop(68%, #dddddd), color-stop(100%, #f6f6f6)); @@ -2969,23 +3059,23 @@ td.agenda-title { } .sec-frame .screw.tl { - top: 3%; - left: 3%; + top: 0.5em; + left: 0.5em; } .sec-frame .screw.tr { - top: 3%; - right: 3%; + top: 0.5em; + right: 0.5em; } .sec-frame .screw.bl { - bottom: 3%; - left: 3%; + bottom: 0.5em; + left: 0.5em; } .sec-frame .screw.br { - bottom: 3%; - right: 3%; + bottom: 0.5em; + right: 0.5em; } .sec-frame td .status.key.disabled { @@ -3003,6 +3093,10 @@ td.agenda-title { /* START: DIAL */ +.transbg.dial { + background-color: rgba(0,0,0,0); +} + .block-center { display: flex; -ms-flex-wrap: wrap; @@ -3020,10 +3114,12 @@ td.agenda-title { } .dt_content .dial { + position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); + font-size: 240px; width: 1em; height: 1em; @@ -3167,17 +3263,19 @@ td.agenda-title { .dial .slice { position: absolute; - width: 100%; - height: 100%; - transform: rotate(-140deg); + width: 1em; + height: 1em; + left: 50%; + top: 50%; + transform: translate(-50%, -50%) rotate(-140deg); } .dial .slice.splitdial-plus { - transform: rotateY(0deg) rotateX(0deg)!important; + transform: translate(-50%,-50%) rotateY(0deg) rotateX(0deg)!important; } .dial .slice.splitdial-minus { - transform: rotate(180deg)!important; + transform: translate(-50%,-50%) rotate(180deg)!important; } .dial:not(.p180):not(.p360) .slice, @@ -3192,10 +3290,11 @@ td.agenda-title { .dial .dial-container { position: absolute; - width: 94%; - height: 94%; - top: 3%; - left: 3%; + width: 0.9em; + height: 0.9em; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); -webkit-transition-property: all; -moz-transition-property: all; -o-transition-property: all; @@ -3211,10 +3310,13 @@ td.agenda-title { } .dt_content .dial:not(.fixed):hover .dial-container { - width: 87.5%; - height: 87.5%; - top: 6%; - left: 6%; + width: 0.8em; + height: 0.8em; +/* top: 6%; + left: 6%;*/ + top: 50%; + left: 50%; + transform: translate(-50%, -50%); -webkit-transition-property: all; -moz-transition-property: all; -o-transition-property: all; @@ -3230,20 +3332,26 @@ td.agenda-title { } .dial .draggable { - width: 100%; - height: 100%; - top: 0; + width: 1em; + height: 1em; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); position: absolute; } .dial .dial-center { - width: 75%; - height: 75%; + width: 0.75em; + height: 0.75em; + /* top: 0; left: 0; right: 0; bottom: 0; - margin: auto auto; + margin: auto auto;*/ + top: 50%; + left: 50%; + transform: translate(-50%, -50%); position: absolute; display: -webkit-box; display: -ms-flexbox; @@ -3265,8 +3373,8 @@ td.agenda-title { } .dt_content .dial:not(.fixed):hover .dial-center { - width: 50%; - height: 50%; + width: 0.5em; + height: 0.5em; -webkit-transition: all 0.2s ease-in; -moz-transition: all 0.2s ease-in; -o-transition: all 0.2s ease-in; @@ -3275,14 +3383,14 @@ td.agenda-title { } .dt_content .dial.fixed .dial-center { - width: 85%; - height: 85%; + width: 0.85em; + height: 0.85em; } .dial-menu { justify-content: center; - height: 100%; - width: 90%; + height: 1em; + width: 0.9em; min-height: 100%; display: flex; flex-direction: column; @@ -3292,10 +3400,13 @@ td.agenda-title { .dial-menu .status { list-style-type: none; padding-left: 0; - width: 100%; + width: 90%; height: 90%; - max-width: 100%; font-size: 9%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); -webkit-appearance: none; -moz-appearance: none; appearance: none; @@ -3303,7 +3414,6 @@ td.agenda-title { text-align-last: center; -moz-text-align-last: center; border-radius: 50%; - margin-top: 10px; box-shadow: inset 0px 0.5px 0px rgba(255, 255, 255, 0.3), inset 0px 0px 2px rgba(255, 255, 255, 0.5), inset 0px 5px 8px 5px rgba(0, 0, 0, 0.8); color: #cccccc; background-color: #2a2a2a; @@ -3383,36 +3493,36 @@ td.agenda-title { } .dial .dial-display, -.dial .dial-display .value, -.dial .dial-display .device, -.dial .dial-display .info { +.dial .value, +.dial .info { width: 100%; text-align: center; white-space: nowrap; } + + .dial .dial-display { display: -webkit-box; display: -ms-flexbox; display: flex; flex-direction: column; - -ms-flex-wrap: wrap; - flex-wrap: wrap; align-items: center; justify-content: center; height: 90%; } -.dial .dial-display .value-unit { +.dial .value-unit { position: absolute; top: 30%; display: flex; align-items: center; + left: 50%; + transform: translate(-50%); } -.dial .dial-display .value-unit .value, -.dial .dial-display .value-unit .unit { - font-size: 0.22em; +.dial .value-unit { + font-size: 0.15em; line-height: 1em; color: #cccccc; -webkit-transition: all 0.2s ease-out; @@ -3423,26 +3533,42 @@ td.agenda-title { z-index: 5; } -.dial .dial-display .value-unit .unit { - font-size: 0.1em; +.dial .unit { + font-size: 0.7em; color: grey; - margin-left: 0.1em; - max-width: 30%; + margin-left: 0.2em; } .animation { animation: fadeInLoad 2s; } -.dial .dial-display .device { +.dial .device { position: absolute; top: 7%; - font-size: 0.07em; color: #ffa500; line-height: 2em; + font-size: 0.07em; + white-space: normal; + line-height: 1em; + width: 80%; + text-align: center; + left: 50%; + transform: translate(-50%); + + } -.dial .dial-display .info { +.dial.text .value-unit { + width: 95%; + font-size: 0.1em; +} + +.dial.text .value { + white-space: normal; +} + +.dial .info { position: relative; top: 28%; font-size: 0.06em; @@ -3450,10 +3576,11 @@ td.agenda-title { line-height: 2em; } -.dial .dial-display .info.nosetpoint { +.dial .info.nosetpoint { margin-bottom: 7px; } +/* .dial .dial-display .extra { position: relative; top: 28%; @@ -3489,24 +3616,99 @@ td.agenda-title { width: 1em; margin-right: 0.25em; } +*/ +.dial .extra { + position: absolute; + font-size: 0.06em; + color: grey; + display: flex; + flex-direction: row; + justify-content: center; + top: 60%; + line-height: 1.3em; + width: 100%; + flex-wrap: wrap; +} + +.dial .extra.novalue { + top: 30%; +} + +.dial .item { + display: flex; + justify-content: center; + align-items: center; +} + +.dial .itemlabel { + margin-right: 0.3em +} + +.dial .info { + margin-top: auto; + top: 0px; +} + +.dial:hover .info { + display:block +} + +.dial .extra i { + font-size: 1em; +} + +.dial .extra img { + width: 1em; + margin-right: 0.25em; +} + +.dial .item.primary{ + font-size: 150%; + width:100% +} + + +.dataunit { + display: flex; + align-items: center; +} + +.primary .data{ + font-size: 1.5em; + line-height: 1.5em; + color: #cccccc; +} -.dial .dial-display .extra.hidden { +.dial .extra.hidden { visibility: hidden; } -.dial:hover .dial-display .value-unit .value { - font-size: 0.15em; +.dial:hover .value { color: orange; color: var(--dial-color); } -.dial:hover .dial-display .value-unit .unit { +.dial-switch .extra { + margin-top: 4% +} + +.dial-switch .info { + margin-bottom: 1em; +} + +/*Some dial utility classes*/ + +.dial .w100 { + width: 100% +} + +.dial:hover .value-unit .unit { font-size: 0.05em; } -.dial:hover .dial-display .info, -.dial:hover .dial-display .device, -.dial:hover .dial-display .extra { +.dial:hover .info, +.dial:hover .device, +.dial:hover .extra { display: none; } @@ -3799,7 +4001,6 @@ td.agenda-title { background: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#191919)); background: -webkit-linear-gradient(#333333, #191919); background: linear-gradient(#333333, #191919); - position: relative; color: #a5a39d; text-align: center; -webkit-transition: all 0.2s ease-out; @@ -3842,31 +4043,6 @@ td.agenda-title { filter: blur(1px); } -.dial-switch .switch-face .device { - font-size: 12px; - font-size: 0.07em; - position: absolute; - top: 25%; - -webkit-transition: all 0.1s ease; - -moz-transition: all 0.1s ease; - -ms-transition: all 0.1s ease; - -o-transition: all 0.1s ease; - transition: all 0.1s ease; -} - -.dial-switch .switch-face .info { - color: grey; - line-height: 2em; - font-size: 0.05em; - position: absolute; - top: 60%; - -webkit-transition: all 0.1s ease; - -moz-transition: all 0.1s ease; - -ms-transition: all 0.1s ease; - -o-transition: all 0.1s ease; - transition: all 0.1s ease; -} - .dial-switch input:checked { width: 99%; height: 99%; @@ -3881,17 +4057,20 @@ td.agenda-title { } .dial-switch .icon-off { - font-size: 0.1em; + font-size: 0.18em; color: #cccccc; -webkit-transition: all 0.1s ease; -moz-transition: all 0.1s ease; -ms-transition: all 0.1s ease; -o-transition: all 0.1s ease; transition: all 0.1s ease; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); } .dial-switch input:checked~.switch-face .device { - font-size: 0.06em; -webkit-transition: all 0.1s ease; -moz-transition: all 0.1s ease; -ms-transition: all 0.1s ease; @@ -3900,7 +4079,7 @@ td.agenda-title { } .dial-switch input:checked~.switch-face .fas { - font-size: 0.08em; + font-size: 0.18em; color: orange; color: var(--dial-color); -webkit-transition: all 0.1s ease; @@ -3911,7 +4090,6 @@ td.agenda-title { } .dial-switch input:checked~.switch-face .info { - font-size: 0.04em; -webkit-transition: all 0.1s ease; -moz-transition: all 0.1s ease; -ms-transition: all 0.1s ease; @@ -3923,12 +4101,12 @@ td.agenda-title { content: ""; display: block; position: absolute; - width: 70%; - height: 70%; + width: 90%; + height: 90%; left: 50%; top: 50%; z-index: -1; - margin: -35% 0 0 -35%; + margin: -45% 0 0 -45%; border-radius: 50%; background: #d2cbc3; background: -moz-linear-gradient(#161616, #6c6c6c); @@ -3978,16 +4156,13 @@ td.agenda-title { .colorpicker .modal-dialog { max-width: 90%; min-width: unset; - width: 90%; + width: 90%; } - -/* .colorpicker .modal-content { - max-width: 90%; - min-width: unset; - width: 50%; -}*/ + position: relative; + background-color: white; +} .colorpicker .cp-iro { overflow-x: auto; @@ -4043,4 +4218,69 @@ td.agenda-title { .trashdate { text-align: right; } -/*end garbage*/ \ No newline at end of file +/*end garbage*/ + +/*battery level*/ + +.battery-level { + position: absolute; + right:0; + top:0; + color: rgba(255, 255, 255, 0.5); + margin-right: 3px; + font-size: 15px +} + +.battery-level.fa-battery-empty { + color:red; + z-index: 15; +} + +.battery-percentage { +/* position: absolute; + top: 5px; + left: 2px;*/ + width: 100%; + text-align: center; + font-size: 10px; +} + +/*end battery level + +/*tvguide*/ + +.tvguide tr { + vertical-align: top +} +.tvtime { + white-space: nowrap +} +.tvchannel { + font-style: italic; + white-space: nowrap +} + +.tvtitle { + font-weight: bold; +} + +.tvsep { + width: 1em; + text-align: center; +} + +/*end tvguide*/ + +/*debug*/ +.modal-dialog-custom .tab-content { + height: 100% +} + +.modal-dialog-custom .tab-content { + +} + +/*owm widget*/ +.dt_block.owmwidget { + background-color: unset +} \ No newline at end of file diff --git a/custom/custom.css b/custom/custom.css deleted file mode 100644 index ad852d9b..00000000 --- a/custom/custom.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -CUSTOM CSS FILE -*/ \ No newline at end of file diff --git a/custom/custom.js b/custom/custom.js deleted file mode 100644 index 88037c9d..00000000 --- a/custom/custom.js +++ /dev/null @@ -1,10 +0,0 @@ - //add custom javascript in here -function afterGetDevices(){ - - -} - -function getExtendedBlockTypes(blocktypes){ - //blocktypes.Type['Lighting 2'] = { icon: 'fa fa-lightbulb-o', title: '', value: 'ds' } - return blocktypes; -} diff --git a/custom_2/custom.css b/custom_2/custom.css deleted file mode 100644 index ad852d9b..00000000 --- a/custom_2/custom.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -CUSTOM CSS FILE -*/ \ No newline at end of file diff --git a/custom_2/custom.js b/custom_2/custom.js deleted file mode 100644 index d186cde2..00000000 --- a/custom_2/custom.js +++ /dev/null @@ -1,10 +0,0 @@ -//add custom javascript in here -function afterGetDevices(){ - - -} - -function getExtendedBlockTypes(blocktypes){ - //blocktypes.Type['Lighting 2'] = { icon: 'fa fa-lightbulb-o', title: '', value: 'ds' } - return blocktypes; -} \ No newline at end of file diff --git a/dist/assets/fonts/fa-brands-400.eot b/dist/assets/fonts/fa-brands-400.eot index 54ad8d72..d05ea581 100644 Binary files a/dist/assets/fonts/fa-brands-400.eot and b/dist/assets/fonts/fa-brands-400.eot differ diff --git a/dist/assets/fonts/fa-brands-400.svg b/dist/assets/fonts/fa-brands-400.svg index 2c8659c1..4e48a466 100644 --- a/dist/assets/fonts/fa-brands-400.svg +++ b/dist/assets/fonts/fa-brands-400.svg @@ -1,16 +1,12 @@ - -Created by FontForge 20200314 at Wed Jul 15 11:59:41 2020 +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 By Robert Madole Copyright (c) Font Awesome - + + + + + + + + + + + +d="M498.252 213.777c0.129883 -0.613281 0.322266 -1.21777 0.561523 -1.78223v-37.0557c-0.194336 -0.300781 -0.516602 -0.583008 -0.552734 -0.900391c-0.619141 -5.36426 -0.837891 -10.8076 -1.87012 -16.0869c-2.06934 -10.6074 -4.15723 -21.2393 -7.0166 -31.6523 +c-4.94531 -18.0205 -12.7578 -34.8809 -22.2998 -50.9258c-8.94336 -15.126 -19.4043 -28.9668 -31.4268 -41.6387c-3.74609 -3.92188 -7.54688 -7.80078 -11.5107 -11.5c-5.31152 -4.95703 -10.5146 -10.1094 -16.2998 -14.457 +c-9.3418 -7.02344 -18.9883 -13.6533 -28.7373 -20.1006c-15.083 -9.81543 -31.6211 -17.9053 -48.9512 -23.8174c-15.3828 -5.38281 -31.1533 -9.38574 -47.4893 -10.7178c-2.52734 -0.206055 -5.02051 -0.753906 -7.52734 -1.14258h-32.2891 +c-0.358398 0.245117 -0.762695 0.436523 -1.18945 0.55957c-6.1377 0.620117 -12.3418 0.863281 -18.4121 1.87305c-13.8301 2.22949 -27.5977 5.58398 -40.6416 9.83496c-19.5498 6.43359 -38.4463 15.0176 -55.8994 25.2773 +c-15.0488 8.79004 -28.9365 18.9688 -41.7871 30.5859c-9.6875 8.70605 -18.3936 18.0898 -26.3584 28.416c-9.38184 12.1963 -17.4385 25.4316 -24 39.5283c-7.5918 16.6592 -13.3467 34.7812 -16.7295 53.2998c-2.35547 13.1611 -3.85059 26.5459 -4.4248 40.2402 +c-0.136719 3.0332 -0.209961 5.74121 -0.209961 8.80859c0 9.05566 0.599609 17.9717 1.76172 26.7119c1.52637 11.874 4.15625 23.6367 7.69043 34.7588c5.05762 15.7021 12.0283 30.7871 20.4941 44.6006c9.58203 15.9961 20.7793 30.6025 33.6484 43.9502 +c9.55469 9.83496 19.7539 19.0605 29.9268 28.2676c5.70605 5.1582 11.8066 9.9082 17.9736 14.5186c12.0029 9.04004 24.6963 17.1025 38.0801 24.1572c12.5137 6.63281 25.9795 12.1963 39.7686 16.3555c10.9453 3.41016 22.5254 5.84375 34.2559 7.09961 +c2.42773 0.225586 4.82617 0.761719 7.23633 1.15039c10.7627 -0.00195312 21.5254 0 32.2881 0.00585938c0.299805 -0.195312 0.583984 -0.516602 0.899414 -0.552734c6.87793 -0.81543 13.8467 -1.16797 20.627 -2.48242 +c11.2432 -2.18359 22.4971 -4.51465 33.5156 -7.61523c19.999 -5.78125 39.2266 -14.2031 56.7227 -24.668c17.2832 -10.0947 32.9639 -22.1357 47.1133 -36.1152c6.71973 -6.90527 12.9209 -14.0508 18.8174 -21.6895c13.4639 -16.959 24.0283 -36.4561 30.874 -57.5 +c3.88867 -11.8086 7.16211 -24.2148 9.62207 -36.5996c2.0459 -10.1748 2.53809 -20.6602 3.74609 -31zM337.135 214.927l0.00488281 67.2695c-35.2686 0 -53.1152 -9.36719 -62.04 -36.1895v31.9316h-73.5176v-190.738h73.5127v93.667 +c0 22.1396 6.37012 37.04 33.5703 37.04c11.8984 0 28.4697 -2.98047 28.4697 -2.98047z" /> +d="M104.324 178.828v26.1777h26.0664v-26.1777h-26.0664zM156.79 205.006h-26.3428v26.1777c-0.124023 7.05762 -5.8916 12.748 -12.9785 12.748c-7.08594 0 -12.8535 -5.69043 -12.9775 -12.748v-0.166016h-26.4004v0.166016 +c-0.000976562 0.119141 -0.000976562 0.220703 -0.000976562 0.339844c0 21.7041 17.6211 39.3242 39.3242 39.3242c21.5039 0 38.999 -17.2959 39.3213 -38.7227v-0.941406zM209.146 179.16v26.0117h26.3438v-26.0117 +c0 -0.0371094 -0.000976562 -0.0722656 -0.000976562 -0.109375c0 -64.7373 -52.5439 -117.3 -117.274 -117.331h-0.774414c-0.0380859 0 -0.0732422 0.000976562 -0.110352 0.000976562c-64.7373 0 -117.299 52.543 -117.33 117.273v0.166016h26.3369 +c0 -50.2793 40.8203 -91.1006 91.0996 -91.1006h0.609375c50.2793 0 91.1006 40.8213 91.1006 91.1006zM51.9131 179.16v25.96h-26.291v25.3994c0 50.6445 41.1162 91.7617 91.7607 91.7617s91.7607 -41.1172 91.7607 -91.7617v-25.293h-26.3438v25.293v0.200195 +c0 36.1055 -29.3135 65.4199 -65.4199 65.4199c-35.7656 0 -64.8672 -28.7646 -65.4121 -64.4023v-26.6201h26.2891v-25.957c0.356445 -21.2305 17.7031 -38.3564 39.0176 -38.3564s38.6611 17.126 39.0176 38.3564h26.3438 +c-0.140625 -35.9551 -29.374 -65.1016 -65.3613 -65.1016s-65.2207 29.1465 -65.3613 65.1016zM470.313 250.333c-11.3467 0 -20.8633 -4.75977 -24.2402 -12.1172v-8.41211c2.21875 -4.53809 6.30859 -7.69238 12.6191 -9.62988 +c4.75879 -1.37891 9.76562 -2.3623 14.832 -2.87793c6.36426 -0.827148 13.0068 -1.71484 20.6992 -4.42676c13.7256 -4.59375 24.0742 -13.2275 28.9443 -24.2412l0.166016 -0.664062l-0.166016 -25.8994c-7.69238 -17.0479 -28.668 -28.4473 -52.2998 -28.4473 +c-25.6797 0 -47.374 12.6182 -55.2891 32.0439l-0.552734 1.43848l23.0205 11.5078l0.719727 -1.49414c5.97754 -12.1211 17.5996 -19.0391 31.9336 -19.0391c12.0098 0 22.083 4.81445 25.791 12.3418v9.85059c-2.37988 4.59473 -6.47656 7.75098 -12.8398 9.85156 +c-5.20312 1.71582 -10.3506 2.37988 -15.8291 3.09961c-6.78809 0.675781 -13.4814 2.04199 -19.8135 3.98438c-14.1123 4.87109 -23.9678 13.2275 -28.668 24.2412c-0.158203 0.949219 -0.123047 -2.02637 0 24.8496c7.36133 17.0469 27.8379 28.4473 50.9727 28.4473 +c24.9062 0 45.3818 -12.0098 53.4062 -31.2705l0.609375 -1.43848l-23.2451 -11.5117l-0.71875 1.5498c-5.47949 11.6221 -16.3818 18.2637 -30.0518 18.2637zM287.568 136.656v68.3994h26.0664v-68.3994h-26.0664zM639.834 189.956l0.166016 -0.722656l-0.166016 -28.8906 +c-7.52734 -15.9941 -27.8916 -26.7305 -50.584 -26.7305s-43.0029 10.7363 -50.585 26.7305l-0.166016 0.720703l0.166016 28.8887c2.93262 6.25391 8.24121 12.0137 15.4414 16.7139c-5.57422 3.90332 -10.0391 9.14453 -13.0068 15.3311l-0.166016 0.664062 +l0.166016 25.3467c7.36133 15.9922 26.7334 26.7324 48.1504 26.7324s40.7881 -10.7402 48.1504 -26.7295l0.166016 -0.664062l-0.166016 -25.3467c-2.90137 -6.22852 -7.38379 -11.4873 -13.0078 -15.3301c7.1416 -4.7041 12.5088 -10.46 15.4414 -16.7139z +M566.614 240.762v-13.7246c3.48535 -6.19922 12.5068 -10.3486 22.5801 -10.3486c10.0723 0 19.0938 4.14844 22.6357 10.3486v13.7246c-3.59766 6.31055 -12.6191 10.5166 -22.6357 10.5166c-10.0176 0 -18.9805 -4.20605 -22.5801 -10.5166zM613.933 168.593v16.1572 +c-3.76367 6.36523 -13.3379 10.5146 -24.6826 10.5146c-11.1836 0 -20.9756 -4.20605 -24.6836 -10.5146v-16.1572c3.70801 -6.52734 13.5586 -10.8994 24.6836 -10.8994c11.3447 0 20.9189 4.25879 24.6826 10.8994zM376.4 182.038v89.7129h25.8994v-135.095h-25.6777 +l-62.5391 94.085v0.386719h-26.5098v40.623h29z" /> +d="M284.046 223.2c0.0341797 0 0.0664062 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM173.596 223.2 +c0.0332031 0 0.0673828 -0.00195312 0.100586 -0.00195312c18.8496 0 34.1592 -15.2754 34.2168 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1143 15.2861 -34.1143 34.1143c0 18.7588 15.1748 34.002 33.9072 34.1133zM394.519 223.2 +c0.0351562 0 0.0683594 -0.00195312 0.102539 -0.00195312c18.8496 0 34.1592 -15.2754 34.2148 -34.1113c0 -18.8281 -15.2822 -34.1143 -34.1104 -34.1143s-34.1133 15.2861 -34.1133 34.1143c0 18.7588 15.1738 34.002 33.9062 34.1133zM548.326 278.519 +c17.3076 -26.9443 26.0674 -55.9189 26.0898 -86.9395c0 -30.209 -8.76074 -59.2021 -26.0703 -86.125c-15.5342 -24.1934 -37.3076 -45.5703 -64.6787 -63.6191c-52.8672 -34.8164 -122.354 -53.9746 -195.667 -53.9746 +c-0.150391 -0.000976562 0.0664062 -0.00585938 -0.0830078 -0.00585938c-24.5488 0 -48.5908 2.18359 -71.9443 6.36621c-14.8564 -14.2842 -31.3604 -26.5059 -49.5098 -36.5889c-66.7744 -33.3467 -125.6 -20.9092 -155.324 -10.2002 +c-5.54492 1.96289 -9.51758 7.25488 -9.51758 13.4697c0 3.82715 1.50879 7.30469 3.96289 9.87109c20.9619 21.6748 55.6416 64.5342 47.1162 103.49c-33.1426 33.9004 -51.1123 74.7764 -51.1123 118.148c0 42.5605 17.9697 83.4365 51.1123 117.337 +c8.52148 38.9521 -26.1582 81.7939 -47.1201 103.47c-2.45996 2.56738 -3.97656 6.0498 -3.97656 9.88281c0 6.21973 3.98047 11.5156 9.53125 13.4785c29.7246 10.71 88.5488 23.1211 155.302 -10.2109c18.1504 -10.0811 34.6553 -22.3027 49.5107 -36.5879 +c23.3457 4.18066 47.0137 6.35742 71.5547 6.35742c0.15918 0 0.318359 -0.000976562 0.476562 -0.000976562c73.293 0 142.78 -19.1826 195.666 -54c27.3711 -18.0479 49.1465 -39.4453 64.6816 -63.6182zM284.987 38.0996c128.612 0 232.866 67.376 232.866 150.487 +c0 83.0957 -104.274 150.469 -232.866 150.469c-128.593 0 -232.847 -67.3691 -232.847 -150.469c0 -36.2002 19.7861 -69.4375 52.7783 -95.4004c9.28809 -29.5986 3.84668 -62.958 -16.3252 -100.078c-0.960938 -1.79297 -1.8584 -3.58496 -2.8418 -5.35645 +c18.6367 1.63574 36.5557 6.875 52.5225 14.8701c13.5889 7.65625 25.9609 16.8633 37.1377 27.585l20.1289 19.3926c28.2617 -7.47852 57.8037 -11.501 88.4033 -11.501c0.347656 0 0.695312 0 1.04297 0.000976562z" /> @@ -3286,8 +3368,6 @@ c0 -0.0498047 -0.00195312 -0.0986328 -0.00585938 -0.147461v-0.799805c0.00195312 v-25.7998h16.1006c0.0380859 0.00195312 0.0742188 0.00488281 0.113281 0.00488281c1.04297 0 1.88965 -0.847656 1.88965 -1.89062c0 -0.0380859 -0.000976562 -0.0761719 -0.00292969 -0.114258v-0.800781 c0.00195312 -0.0380859 0.00488281 -0.0742188 0.00488281 -0.113281c0 -1.04297 -0.847656 -1.88965 -1.89062 -1.88965c-0.0380859 0 -0.0761719 0.000976562 -0.114258 0.00292969h-16.1006v-26.6992h19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094 l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z" /> - diff --git a/dist/assets/fonts/fa-brands-400.ttf b/dist/assets/fonts/fa-brands-400.ttf index 16852bfd..fc567cd2 100644 Binary files a/dist/assets/fonts/fa-brands-400.ttf and b/dist/assets/fonts/fa-brands-400.ttf differ diff --git a/dist/assets/fonts/fa-brands-400.woff b/dist/assets/fonts/fa-brands-400.woff index 6cf6fb38..db70e73e 100644 Binary files a/dist/assets/fonts/fa-brands-400.woff and b/dist/assets/fonts/fa-brands-400.woff differ diff --git a/dist/assets/fonts/fa-brands-400.woff2 b/dist/assets/fonts/fa-brands-400.woff2 index f2a4e36f..b8a8f656 100644 Binary files a/dist/assets/fonts/fa-brands-400.woff2 and b/dist/assets/fonts/fa-brands-400.woff2 differ diff --git a/dist/assets/fonts/fa-regular-400.eot b/dist/assets/fonts/fa-regular-400.eot index 479b32ce..fae180da 100644 Binary files a/dist/assets/fonts/fa-regular-400.eot and b/dist/assets/fonts/fa-regular-400.eot differ diff --git a/dist/assets/fonts/fa-regular-400.svg b/dist/assets/fonts/fa-regular-400.svg index 7947ca8f..9dba8c34 100644 --- a/dist/assets/fonts/fa-regular-400.svg +++ b/dist/assets/fonts/fa-regular-400.svg @@ -1,16 +1,12 @@ - -Created by FontForge 20200314 at Wed Jul 15 11:59:40 2020 +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 By Robert Madole Copyright (c) Font Awesome - + - -Created by FontForge 20200314 at Wed Jul 15 11:59:41 2020 +Created by FontForge 20201107 at Tue Mar 16 10:15:04 2021 By Robert Madole Copyright (c) Font Awesome - + + + @@ -3707,11 +3720,17 @@ c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21 - + >>0;for(p=0;p0)for(M=0;M=0?M?"+":"":"-")+Math.pow(10,Math.max(0,L)).toString().substr(1)+S}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,E=Object.keys?Object.keys:function(f){var p,M=[];for(p in f)hasOwnProp(f,p)&&M.push(p);return M};var R=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,B=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,W={},G={};function addFormatToken(f,p,M,S){var L=S;"string"==typeof S&&(L=function(){return this[S]()}),f&&(G[f]=L),p&&(G[p[0]]=function(){return zeroFill(L.apply(this,arguments),p[1],p[2])}),M&&(G[M]=function(){return this.localeData().ordinal(L.apply(this,arguments),f)})}function formatMoment(f,p){return f.isValid()?(p=expandFormat(p,f.localeData()),W[p]=W[p]||function makeFormatFunction(f){var p,M,S,L=f.match(R);for(p=0,M=L.length;p=0&&B.test(f);)f=f.replace(B,replaceLongDateFormatTokens),B.lastIndex=0,M-=1;return f}var V={};function addUnitAlias(f,p){var M=f.toLowerCase();V[M]=V[M+"s"]=V[p]=f}function normalizeUnits(f){return"string"==typeof f?V[f]||V[f.toLowerCase()]:void 0}function normalizeObjectUnits(f){var p,M,S={};for(M in f)hasOwnProp(f,M)&&(p=normalizeUnits(M))&&(S[p]=f[M]);return S}var U={};function addUnitPriority(f,p){U[f]=p}function isLeapYear(f){return f%4==0&&f%100!=0||f%400==0}function absFloor(f){return f<0?Math.ceil(f)||0:Math.floor(f)}function toInt(f){var p=+f,M=0;return 0!==p&&isFinite(p)&&(M=absFloor(p)),M}function makeGetSet(f,p){return function(M){return null!=M?(set$1(this,f,M),hooks.updateOffset(this,p),this):get(this,f)}}function get(f,p){return f.isValid()?f._d["get"+(f._isUTC?"UTC":"")+p]():NaN}function set$1(f,p,M){f.isValid()&&!isNaN(M)&&("FullYear"===p&&isLeapYear(f.year())&&1===f.month()&&29===f.date()?(M=toInt(M),f._d["set"+(f._isUTC?"UTC":"")+p](M,f.month(),daysInMonth(M,f.month()))):f._d["set"+(f._isUTC?"UTC":"")+p](M))}var q,X=/\d/,K=/\d\d/,J=/\d{3}/,Z=/\d{4}/,Q=/[+-]?\d{6}/,ee=/\d\d?/,te=/\d\d\d\d?/,ne=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,re=/\d{1,4}/,ae=/[+-]?\d{1,6}/,oe=/\d+/,se=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,ce=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function addRegexToken(f,p,M){q[f]=isFunction(p)?p:function(f,S){return f&&M?M:p}}function getParseRegexForToken(f,p){return hasOwnProp(q,f)?q[f](p._strict,p._locale):new RegExp(function unescapeFormat(f){return regexEscape(f.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(f,p,M,S,L){return p||M||S||L})))}(f))}function regexEscape(f){return f.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}q={};var ue,he={};function addParseToken(f,p){var M,S=p;for("string"==typeof f&&(f=[f]),isNumber(p)&&(S=function(f,M){M[p]=toInt(f)}),M=0;M68?1900:2e3)};var ve=makeGetSet("FullYear",!0);function createDate(f,p,M,S,L,Y,E){var O;return f<100&&f>=0?(O=new Date(f+400,p,M,S,L,Y,E),isFinite(O.getFullYear())&&O.setFullYear(f)):O=new Date(f,p,M,S,L,Y,E),O}function createUTCDate(f){var p,M;return f<100&&f>=0?((M=Array.prototype.slice.call(arguments))[0]=f+400,p=new Date(Date.UTC.apply(null,M)),isFinite(p.getUTCFullYear())&&p.setUTCFullYear(f)):p=new Date(Date.UTC.apply(null,arguments)),p}function firstWeekOffset(f,p,M){var S=7+p-M;return-(7+createUTCDate(f,0,S).getUTCDay()-p)%7+S-1}function dayOfYearFromWeeks(f,p,M,S,L){var Y,E,O=1+7*(p-1)+(7+M-S)%7+firstWeekOffset(f,S,L);return O<=0?E=daysInYear(Y=f-1)+O:O>daysInYear(f)?(Y=f+1,E=O-daysInYear(f)):(Y=f,E=O),{year:Y,dayOfYear:E}}function weekOfYear(f,p,M){var S,L,Y=firstWeekOffset(f.year(),p,M),E=Math.floor((f.dayOfYear()-Y-1)/7)+1;return E<1?S=E+weeksInYear(L=f.year()-1,p,M):E>weeksInYear(f.year(),p,M)?(S=E-weeksInYear(f.year(),p,M),L=f.year()+1):(L=f.year(),S=E),{week:S,year:L}}function weeksInYear(f,p,M){var S=firstWeekOffset(f,p,M),L=firstWeekOffset(f+1,p,M);return(daysInYear(f)-S+L)/7}function shiftWeekdays(f,p){return f.slice(p,7).concat(f.slice(0,p))}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",ee),addRegexToken("ww",ee,K),addRegexToken("W",ee),addRegexToken("WW",ee,K),addWeekParseToken(["w","ww","W","WW"],(function(f,p,M,S){p[S.substr(0,1)]=toInt(f)})),addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,(function(f){return this.localeData().weekdaysMin(this,f)})),addFormatToken("ddd",0,0,(function(f){return this.localeData().weekdaysShort(this,f)})),addFormatToken("dddd",0,0,(function(f){return this.localeData().weekdays(this,f)})),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",ee),addRegexToken("e",ee),addRegexToken("E",ee),addRegexToken("dd",(function(f,p){return p.weekdaysMinRegex(f)})),addRegexToken("ddd",(function(f,p){return p.weekdaysShortRegex(f)})),addRegexToken("dddd",(function(f,p){return p.weekdaysRegex(f)})),addWeekParseToken(["dd","ddd","dddd"],(function(f,p,M,S){var L=M._locale.weekdaysParse(f,S,M._strict);null!=L?p.d=L:getParsingFlags(M).invalidWeekday=f})),addWeekParseToken(["d","e","E"],(function(f,p,M,S){p[S]=toInt(f)}));var _e="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ye="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),we="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xe=de,ke=de,Te=de;function handleStrictParse$1(f,p,M){var S,L,Y,E=f.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],S=0;S<7;++S)Y=createUTC([2e3,1]).day(S),this._minWeekdaysParse[S]=this.weekdaysMin(Y,"").toLocaleLowerCase(),this._shortWeekdaysParse[S]=this.weekdaysShort(Y,"").toLocaleLowerCase(),this._weekdaysParse[S]=this.weekdays(Y,"").toLocaleLowerCase();return M?"dddd"===p?-1!==(L=ue.call(this._weekdaysParse,E))?L:null:"ddd"===p?-1!==(L=ue.call(this._shortWeekdaysParse,E))?L:null:-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:"dddd"===p?-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._shortWeekdaysParse,E))||-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:"ddd"===p?-1!==(L=ue.call(this._shortWeekdaysParse,E))||-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:-1!==(L=ue.call(this._minWeekdaysParse,E))||-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._shortWeekdaysParse,E))?L:null}function computeWeekdaysParse(){function cmpLenRev(f,p){return p.length-f.length}var f,p,M,S,L,Y=[],E=[],O=[],R=[];for(f=0;f<7;f++)p=createUTC([2e3,1]).day(f),M=regexEscape(this.weekdaysMin(p,"")),S=regexEscape(this.weekdaysShort(p,"")),L=regexEscape(this.weekdays(p,"")),Y.push(M),E.push(S),O.push(L),R.push(M),R.push(S),R.push(L);Y.sort(cmpLenRev),E.sort(cmpLenRev),O.sort(cmpLenRev),R.sort(cmpLenRev),this._weekdaysRegex=new RegExp("^("+R.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+O.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+E.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+Y.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(f,p){addFormatToken(f,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),p)}))}function matchMeridiem(f,p){return p._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,(function kFormat(){return this.hours()||24})),addFormatToken("hmm",0,0,(function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)})),addFormatToken("hmmss",0,0,(function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)})),addFormatToken("Hmm",0,0,(function(){return""+this.hours()+zeroFill(this.minutes(),2)})),addFormatToken("Hmmss",0,0,(function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)})),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",ee),addRegexToken("h",ee),addRegexToken("k",ee),addRegexToken("HH",ee,K),addRegexToken("hh",ee,K),addRegexToken("kk",ee,K),addRegexToken("hmm",te),addRegexToken("hmmss",ne),addRegexToken("Hmm",te),addRegexToken("Hmmss",ne),addParseToken(["H","HH"],3),addParseToken(["k","kk"],(function(f,p,M){var S=toInt(f);p[3]=24===S?0:S})),addParseToken(["a","A"],(function(f,p,M){M._isPm=M._locale.isPM(f),M._meridiem=f})),addParseToken(["h","hh"],(function(f,p,M){p[3]=toInt(f),getParsingFlags(M).bigHour=!0})),addParseToken("hmm",(function(f,p,M){var S=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S)),getParsingFlags(M).bigHour=!0})),addParseToken("hmmss",(function(f,p,M){var S=f.length-4,L=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S,2)),p[5]=toInt(f.substr(L)),getParsingFlags(M).bigHour=!0})),addParseToken("Hmm",(function(f,p,M){var S=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S))})),addParseToken("Hmmss",(function(f,p,M){var S=f.length-4,L=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S,2)),p[5]=toInt(f.substr(L))}));var Me,Se=makeGetSet("Hours",!0),Le={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:fe,monthsShort:pe,week:{dow:0,doy:6},weekdays:_e,weekdaysMin:we,weekdaysShort:ye,meridiemParse:/[ap]\.?m?\.?/i},De={},Ce={};function commonPrefix(f,p){var M,S=Math.min(f.length,p.length);for(M=0;M0;){if(S=loadLocale(L.slice(0,p).join("-")))return S;if(M&&M.length>=p&&commonPrefix(L,M)>=p-1)break;p--}Y++}return Me}(f)}function checkOverflow(f){var p,M=f._a;return M&&-2===getParsingFlags(f).overflow&&(p=M[1]<0||M[1]>11?1:M[2]<1||M[2]>daysInMonth(M[0],M[1])?2:M[3]<0||M[3]>24||24===M[3]&&(0!==M[4]||0!==M[5]||0!==M[6])?3:M[4]<0||M[4]>59?4:M[5]<0||M[5]>59?5:M[6]<0||M[6]>999?6:-1,getParsingFlags(f)._overflowDayOfYear&&(p<0||p>2)&&(p=2),getParsingFlags(f)._overflowWeeks&&-1===p&&(p=7),getParsingFlags(f)._overflowWeekday&&-1===p&&(p=8),getParsingFlags(f).overflow=p),f}var Ae=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Pe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ye=/Z|[+-]\d\d(?::?\d\d)?/,Ie=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ee=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Oe=/^\/?Date\((-?\d+)/i,He=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ze={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromISO(f){var p,M,S,L,Y,E,O=f._i,R=Ae.exec(O)||Pe.exec(O);if(R){for(getParsingFlags(f).iso=!0,p=0,M=Ie.length;p7)&&(R=!0)):(Y=f._locale._week.dow,E=f._locale._week.doy,B=weekOfYear(createLocal(),Y,E),M=defaults(p.gg,f._a[0],B.year),S=defaults(p.w,B.week),null!=p.d?((L=p.d)<0||L>6)&&(R=!0):null!=p.e?(L=p.e+Y,(p.e<0||p.e>6)&&(R=!0)):L=Y),S<1||S>weeksInYear(M,Y,E)?getParsingFlags(f)._overflowWeeks=!0:null!=R?getParsingFlags(f)._overflowWeekday=!0:(O=dayOfYearFromWeeks(M,S,L,Y,E),f._a[0]=O.year,f._dayOfYear=O.dayOfYear)}(f),null!=f._dayOfYear&&(Y=defaults(f._a[0],S[0]),(f._dayOfYear>daysInYear(Y)||0===f._dayOfYear)&&(getParsingFlags(f)._overflowDayOfYear=!0),M=createUTCDate(Y,0,f._dayOfYear),f._a[1]=M.getUTCMonth(),f._a[2]=M.getUTCDate()),p=0;p<3&&null==f._a[p];++p)f._a[p]=E[p]=S[p];for(;p<7;p++)f._a[p]=E[p]=null==f._a[p]?2===p?1:0:f._a[p];24===f._a[3]&&0===f._a[4]&&0===f._a[5]&&0===f._a[6]&&(f._nextDay=!0,f._a[3]=0),f._d=(f._useUTC?createUTCDate:createDate).apply(null,E),L=f._useUTC?f._d.getUTCDay():f._d.getDay(),null!=f._tzm&&f._d.setUTCMinutes(f._d.getUTCMinutes()-f._tzm),f._nextDay&&(f._a[3]=24),f._w&&void 0!==f._w.d&&f._w.d!==L&&(getParsingFlags(f).weekdayMismatch=!0)}}function configFromStringAndFormat(f){if(f._f!==hooks.ISO_8601)if(f._f!==hooks.RFC_2822){f._a=[],getParsingFlags(f).empty=!0;var p,M,S,L,Y,E,O=""+f._i,B=O.length,W=0;for(S=expandFormat(f._f,f._locale).match(R)||[],p=0;p0&&getParsingFlags(f).unusedInput.push(Y),O=O.slice(O.indexOf(M)+M.length),W+=M.length),G[L]?(M?getParsingFlags(f).empty=!1:getParsingFlags(f).unusedTokens.push(L),addTimeToArrayFromToken(L,M,f)):f._strict&&!M&&getParsingFlags(f).unusedTokens.push(L);getParsingFlags(f).charsLeftOver=B-W,O.length>0&&getParsingFlags(f).unusedInput.push(O),f._a[3]<=12&&!0===getParsingFlags(f).bigHour&&f._a[3]>0&&(getParsingFlags(f).bigHour=void 0),getParsingFlags(f).parsedDateParts=f._a.slice(0),getParsingFlags(f).meridiem=f._meridiem,f._a[3]=function meridiemFixWrap(f,p,M){var S;return null==M?p:null!=f.meridiemHour?f.meridiemHour(p,M):null!=f.isPM?((S=f.isPM(M))&&p<12&&(p+=12),S||12!==p||(p=0),p):p}(f._locale,f._a[3],f._meridiem),null!==(E=getParsingFlags(f).era)&&(f._a[0]=f._locale.erasConvertYear(E,f._a[0])),configFromArray(f),checkOverflow(f)}else configFromRFC2822(f);else configFromISO(f)}function prepareConfig(f){var p=f._i,M=f._f;return f._locale=f._locale||getLocale(f._l),null===p||void 0===M&&""===p?createInvalid({nullInput:!0}):("string"==typeof p&&(f._i=p=f._locale.preparse(p)),isMoment(p)?new Moment(checkOverflow(p)):(isDate(p)?f._d=p:isArray(M)?function configFromStringAndArray(f){var p,M,S,L,Y,E,O=!1;if(0===f._f.length)return getParsingFlags(f).invalidFormat=!0,void(f._d=new Date(NaN));for(L=0;Lthis?this:f:createInvalid()}));function pickBy(f,p){var M,S;if(1===p.length&&isArray(p[0])&&(p=p[0]),!p.length)return createLocal();for(M=p[0],S=1;S=0?new Date(f+400,p,M)-126227808e5:new Date(f,p,M).valueOf()}function utcStartOfDate(f,p,M){return f<100&&f>=0?Date.UTC(f+400,p,M)-126227808e5:Date.UTC(f,p,M)}function matchEraAbbr(f,p){return p.erasAbbrRegex(f)}function computeErasParse(){var f,p,M=[],S=[],L=[],Y=[],E=this.eras();for(f=0,p=E.length;f(Y=weeksInYear(f,S,L))&&(p=Y),setWeekAll.call(this,f,p,M,S,L))}function setWeekAll(f,p,M,S,L){var Y=dayOfYearFromWeeks(f,p,M,S,L),E=createUTCDate(Y.year,0,Y.dayOfYear);return this.year(E.getUTCFullYear()),this.month(E.getUTCMonth()),this.date(E.getUTCDate()),this}addFormatToken("N",0,0,"eraAbbr"),addFormatToken("NN",0,0,"eraAbbr"),addFormatToken("NNN",0,0,"eraAbbr"),addFormatToken("NNNN",0,0,"eraName"),addFormatToken("NNNNN",0,0,"eraNarrow"),addFormatToken("y",["y",1],"yo","eraYear"),addFormatToken("y",["yy",2],0,"eraYear"),addFormatToken("y",["yyy",3],0,"eraYear"),addFormatToken("y",["yyyy",4],0,"eraYear"),addRegexToken("N",matchEraAbbr),addRegexToken("NN",matchEraAbbr),addRegexToken("NNN",matchEraAbbr),addRegexToken("NNNN",(function matchEraName(f,p){return p.erasNameRegex(f)})),addRegexToken("NNNNN",(function matchEraNarrow(f,p){return p.erasNarrowRegex(f)})),addParseToken(["N","NN","NNN","NNNN","NNNNN"],(function(f,p,M,S){var L=M._locale.erasParse(f,S,M._strict);L?getParsingFlags(M).era=L:getParsingFlags(M).invalidEra=f})),addRegexToken("y",oe),addRegexToken("yy",oe),addRegexToken("yyy",oe),addRegexToken("yyyy",oe),addRegexToken("yo",(function matchEraYearOrdinal(f,p){return p._eraYearOrdinalRegex||oe})),addParseToken(["y","yy","yyy","yyyy"],0),addParseToken(["yo"],(function(f,p,M,S){var L;M._locale._eraYearOrdinalRegex&&(L=f.match(M._locale._eraYearOrdinalRegex)),M._locale.eraYearOrdinalParse?p[0]=M._locale.eraYearOrdinalParse(f,L):p[0]=parseInt(f,10)})),addFormatToken(0,["gg",2],0,(function(){return this.weekYear()%100})),addFormatToken(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",se),addRegexToken("g",se),addRegexToken("GG",ee,K),addRegexToken("gg",ee,K),addRegexToken("GGGG",re,Z),addRegexToken("gggg",re,Z),addRegexToken("GGGGG",ae,Q),addRegexToken("ggggg",ae,Q),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],(function(f,p,M,S){p[S.substr(0,2)]=toInt(f)})),addWeekParseToken(["gg","GG"],(function(f,p,M,S){p[S]=hooks.parseTwoDigitYear(f)})),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",X),addParseToken("Q",(function(f,p){p[1]=3*(toInt(f)-1)})),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",ee),addRegexToken("DD",ee,K),addRegexToken("Do",(function(f,p){return f?p._dayOfMonthOrdinalParse||p._ordinalParse:p._dayOfMonthOrdinalParseLenient})),addParseToken(["D","DD"],2),addParseToken("Do",(function(f,p){p[2]=toInt(f.match(ee)[0])}));var $e=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",ie),addRegexToken("DDDD",J),addParseToken(["DDD","DDDD"],(function(f,p,M){M._dayOfYear=toInt(f)})),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",ee),addRegexToken("mm",ee,K),addParseToken(["m","mm"],4);var qe=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",ee),addRegexToken("ss",ee,K),addParseToken(["s","ss"],5);var Xe,Ke,Je=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,(function(){return~~(this.millisecond()/100)})),addFormatToken(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),addFormatToken(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),addFormatToken(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),addFormatToken(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),addFormatToken(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),addFormatToken(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",ie,X),addRegexToken("SS",ie,K),addRegexToken("SSS",ie,J),Xe="SSSS";Xe.length<=9;Xe+="S")addRegexToken(Xe,oe);function parseMs(f,p){p[6]=toInt(1e3*("0."+f))}for(Xe="S";Xe.length<=9;Xe+="S")addParseToken(Xe,parseMs);Ke=makeGetSet("Milliseconds",!1),addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var Ze=Moment.prototype;function preParsePostFormat(f){return f}Ze.add=Ge,Ze.calendar=function calendar$1(f,p){1===arguments.length&&(isMomentInput(arguments[0])?(f=arguments[0],p=void 0):isCalendarSpec(arguments[0])&&(p=arguments[0],f=void 0));var M=f||createLocal(),S=cloneWithOffset(M,this).startOf("day"),L=hooks.calendarFormat(this,S)||"sameElse",Y=p&&(isFunction(p[L])?p[L].call(this,M):p[L]);return this.format(Y||this.localeData().calendar(L,this,createLocal(M)))},Ze.clone=function clone(){return new Moment(this)},Ze.diff=function diff(f,p,M){var S,L,Y;if(!this.isValid())return NaN;if(!(S=cloneWithOffset(f,this)).isValid())return NaN;switch(L=6e4*(S.utcOffset()-this.utcOffset()),p=normalizeUnits(p)){case"year":Y=monthDiff(this,S)/12;break;case"month":Y=monthDiff(this,S);break;case"quarter":Y=monthDiff(this,S)/3;break;case"second":Y=(this-S)/1e3;break;case"minute":Y=(this-S)/6e4;break;case"hour":Y=(this-S)/36e5;break;case"day":Y=(this-S-L)/864e5;break;case"week":Y=(this-S-L)/6048e5;break;default:Y=this-S}return M?Y:absFloor(Y)},Ze.endOf=function endOf(f){var p,M;if(void 0===(f=normalizeUnits(f))||"millisecond"===f||!this.isValid())return this;switch(M=this._isUTC?utcStartOfDate:localStartOfDate,f){case"year":p=M(this.year()+1,0,1)-1;break;case"quarter":p=M(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":p=M(this.year(),this.month()+1,1)-1;break;case"week":p=M(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":p=M(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":p=M(this.year(),this.month(),this.date()+1)-1;break;case"hour":p=this._d.valueOf(),p+=36e5-mod$1(p+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":p=this._d.valueOf(),p+=6e4-mod$1(p,6e4)-1;break;case"second":p=this._d.valueOf(),p+=1e3-mod$1(p,1e3)-1}return this._d.setTime(p),hooks.updateOffset(this,!0),this},Ze.format=function format(f){f||(f=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var p=formatMoment(this,f);return this.localeData().postformat(p)},Ze.from=function from(f,p){return this.isValid()&&(isMoment(f)&&f.isValid()||createLocal(f).isValid())?createDuration({to:this,from:f}).locale(this.locale()).humanize(!p):this.localeData().invalidDate()},Ze.fromNow=function fromNow(f){return this.from(createLocal(),f)},Ze.to=function to(f,p){return this.isValid()&&(isMoment(f)&&f.isValid()||createLocal(f).isValid())?createDuration({from:this,to:f}).locale(this.locale()).humanize(!p):this.localeData().invalidDate()},Ze.toNow=function toNow(f){return this.to(createLocal(),f)},Ze.get=function stringGet(f){return isFunction(this[f=normalizeUnits(f)])?this[f]():this},Ze.invalidAt=function invalidAt(){return getParsingFlags(this).overflow},Ze.isAfter=function isAfter(f,p){var M=isMoment(f)?f:createLocal(f);return!(!this.isValid()||!M.isValid())&&("millisecond"===(p=normalizeUnits(p)||"millisecond")?this.valueOf()>M.valueOf():M.valueOf()9999?formatMoment(M,p?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?p?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(M,"Z")):formatMoment(M,p?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ze.inspect=function inspect(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var f,p,M,S="moment",L="";return this.isLocal()||(S=0===this.utcOffset()?"moment.utc":"moment.parseZone",L="Z"),f="["+S+'("]',p=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",M=L+'[")]',this.format(f+p+"-MM-DD[T]HH:mm:ss.SSS"+M)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Ze[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Ze.toJSON=function toJSON(){return this.isValid()?this.toISOString():null},Ze.toString=function toString(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ze.unix=function unix(){return Math.floor(this.valueOf()/1e3)},Ze.valueOf=function valueOf(){return this._d.valueOf()-6e4*(this._offset||0)},Ze.creationData=function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ze.eraName=function getEraName(){var f,p,M,S=this.localeData().eras();for(f=0,p=S.length;fthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ze.isLocal=function isLocal(){return!!this.isValid()&&!this._isUTC},Ze.isUtcOffset=function isUtcOffset(){return!!this.isValid()&&this._isUTC},Ze.isUtc=isUtc,Ze.isUTC=isUtc,Ze.zoneAbbr=function getZoneAbbr(){return this._isUTC?"UTC":""},Ze.zoneName=function getZoneName(){return this._isUTC?"Coordinated Universal Time":""},Ze.dates=deprecate("dates accessor is deprecated. Use date instead.",$e),Ze.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),Ze.years=deprecate("years accessor is deprecated. Use year instead",ve),Ze.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function getSetZone(f,p){return null!=f?("string"!=typeof f&&(f=-f),this.utcOffset(f,p),this):-this.utcOffset()})),Ze.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var f,p={};return copyConfig(p,this),(p=prepareConfig(p))._a?(f=p._isUTC?createUTC(p._a):createLocal(p._a),this._isDSTShifted=this.isValid()&&function compareArrays(f,p,M){var S,L=Math.min(f.length,p.length),Y=Math.abs(f.length-p.length),E=0;for(S=0;S0):this._isDSTShifted=!1,this._isDSTShifted}));var Qe=Locale.prototype;function get$1(f,p,M,S){var L=getLocale(),Y=createUTC().set(S,p);return L[M](Y,f)}function listMonthsImpl(f,p,M){if(isNumber(f)&&(p=f,f=void 0),f=f||"",null!=p)return get$1(f,p,M,"month");var S,L=[];for(S=0;S<12;S++)L[S]=get$1(f,S,M,"month");return L}function listWeekdaysImpl(f,p,M,S){"boolean"==typeof f?(isNumber(p)&&(M=p,p=void 0),p=p||""):(M=p=f,f=!1,isNumber(p)&&(M=p,p=void 0),p=p||"");var L,Y=getLocale(),E=f?Y._week.dow:0,O=[];if(null!=M)return get$1(p,(M+E)%7,S,"day");for(L=0;L<7;L++)O[L]=get$1(p,(L+E)%7,S,"day");return O}Qe.calendar=function calendar(f,p,M){var S=this._calendar[f]||this._calendar.sameElse;return isFunction(S)?S.call(p,M):S},Qe.longDateFormat=function longDateFormat(f){var p=this._longDateFormat[f],M=this._longDateFormat[f.toUpperCase()];return p||!M?p:(this._longDateFormat[f]=M.match(R).map((function(f){return"MMMM"===f||"MM"===f||"DD"===f||"dddd"===f?f.slice(1):f})).join(""),this._longDateFormat[f])},Qe.invalidDate=function invalidDate(){return this._invalidDate},Qe.ordinal=function ordinal(f){return this._ordinal.replace("%d",f)},Qe.preparse=preParsePostFormat,Qe.postformat=preParsePostFormat,Qe.relativeTime=function relativeTime(f,p,M,S){var L=this._relativeTime[M];return isFunction(L)?L(f,p,M,S):L.replace(/%d/i,f)},Qe.pastFuture=function pastFuture(f,p){var M=this._relativeTime[f>0?"future":"past"];return isFunction(M)?M(p):M.replace(/%s/i,p)},Qe.set=function set(f){var p,M;for(M in f)hasOwnProp(f,M)&&(isFunction(p=f[M])?this[M]=p:this["_"+M]=p);this._config=f,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Qe.eras=function localeEras(f,p){var M,S,L,Y=this._eras||getLocale("en")._eras;for(M=0,S=Y.length;M=0)return R[S]},Qe.erasConvertYear=function localeErasConvertYear(f,p){var M=f.since<=f.until?1:-1;return void 0===p?hooks(f.since).year():hooks(f.since).year()+(p-f.offset)*M},Qe.erasAbbrRegex=function erasAbbrRegex(f){return hasOwnProp(this,"_erasAbbrRegex")||computeErasParse.call(this),f?this._erasAbbrRegex:this._erasRegex},Qe.erasNameRegex=function erasNameRegex(f){return hasOwnProp(this,"_erasNameRegex")||computeErasParse.call(this),f?this._erasNameRegex:this._erasRegex},Qe.erasNarrowRegex=function erasNarrowRegex(f){return hasOwnProp(this,"_erasNarrowRegex")||computeErasParse.call(this),f?this._erasNarrowRegex:this._erasRegex},Qe.months=function localeMonths(f,p){return f?isArray(this._months)?this._months[f.month()]:this._months[(this._months.isFormat||me).test(p)?"format":"standalone"][f.month()]:isArray(this._months)?this._months:this._months.standalone},Qe.monthsShort=function localeMonthsShort(f,p){return f?isArray(this._monthsShort)?this._monthsShort[f.month()]:this._monthsShort[me.test(p)?"format":"standalone"][f.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Qe.monthsParse=function localeMonthsParse(f,p,M){var S,L,Y;if(this._monthsParseExact)return handleStrictParse.call(this,f,p,M);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),S=0;S<12;S++){if(L=createUTC([2e3,S]),M&&!this._longMonthsParse[S]&&(this._longMonthsParse[S]=new RegExp("^"+this.months(L,"").replace(".","")+"$","i"),this._shortMonthsParse[S]=new RegExp("^"+this.monthsShort(L,"").replace(".","")+"$","i")),M||this._monthsParse[S]||(Y="^"+this.months(L,"")+"|^"+this.monthsShort(L,""),this._monthsParse[S]=new RegExp(Y.replace(".",""),"i")),M&&"MMMM"===p&&this._longMonthsParse[S].test(f))return S;if(M&&"MMM"===p&&this._shortMonthsParse[S].test(f))return S;if(!M&&this._monthsParse[S].test(f))return S}},Qe.monthsRegex=function monthsRegex(f){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),f?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=be),this._monthsStrictRegex&&f?this._monthsStrictRegex:this._monthsRegex)},Qe.monthsShortRegex=function monthsShortRegex(f){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),f?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=ge),this._monthsShortStrictRegex&&f?this._monthsShortStrictRegex:this._monthsShortRegex)},Qe.week=function localeWeek(f){return weekOfYear(f,this._week.dow,this._week.doy).week},Qe.firstDayOfYear=function localeFirstDayOfYear(){return this._week.doy},Qe.firstDayOfWeek=function localeFirstDayOfWeek(){return this._week.dow},Qe.weekdays=function localeWeekdays(f,p){var M=isArray(this._weekdays)?this._weekdays:this._weekdays[f&&!0!==f&&this._weekdays.isFormat.test(p)?"format":"standalone"];return!0===f?shiftWeekdays(M,this._week.dow):f?M[f.day()]:M},Qe.weekdaysMin=function localeWeekdaysMin(f){return!0===f?shiftWeekdays(this._weekdaysMin,this._week.dow):f?this._weekdaysMin[f.day()]:this._weekdaysMin},Qe.weekdaysShort=function localeWeekdaysShort(f){return!0===f?shiftWeekdays(this._weekdaysShort,this._week.dow):f?this._weekdaysShort[f.day()]:this._weekdaysShort},Qe.weekdaysParse=function localeWeekdaysParse(f,p,M){var S,L,Y;if(this._weekdaysParseExact)return handleStrictParse$1.call(this,f,p,M);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),S=0;S<7;S++){if(L=createUTC([2e3,1]).day(S),M&&!this._fullWeekdaysParse[S]&&(this._fullWeekdaysParse[S]=new RegExp("^"+this.weekdays(L,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[S]=new RegExp("^"+this.weekdaysShort(L,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[S]=new RegExp("^"+this.weekdaysMin(L,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[S]||(Y="^"+this.weekdays(L,"")+"|^"+this.weekdaysShort(L,"")+"|^"+this.weekdaysMin(L,""),this._weekdaysParse[S]=new RegExp(Y.replace(".",""),"i")),M&&"dddd"===p&&this._fullWeekdaysParse[S].test(f))return S;if(M&&"ddd"===p&&this._shortWeekdaysParse[S].test(f))return S;if(M&&"dd"===p&&this._minWeekdaysParse[S].test(f))return S;if(!M&&this._weekdaysParse[S].test(f))return S}},Qe.weekdaysRegex=function weekdaysRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=xe),this._weekdaysStrictRegex&&f?this._weekdaysStrictRegex:this._weekdaysRegex)},Qe.weekdaysShortRegex=function weekdaysShortRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ke),this._weekdaysShortStrictRegex&&f?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Qe.weekdaysMinRegex=function weekdaysMinRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Te),this._weekdaysMinStrictRegex&&f?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Qe.isPM=function localeIsPM(f){return"p"===(f+"").toLowerCase().charAt(0)},Qe.meridiem=function localeMeridiem(f,p,M){return f>11?M?"pm":"PM":M?"am":"AM"},getSetGlobalLocale("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(f){var p=f%10;return f+(1===toInt(f%100/10)?"th":1===p?"st":2===p?"nd":3===p?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var et=Math.abs;function addSubtract$1(f,p,M,S){var L=createDuration(p,M);return f._milliseconds+=S*L._milliseconds,f._days+=S*L._days,f._months+=S*L._months,f._bubble()}function absCeil(f){return f<0?Math.floor(f):Math.ceil(f)}function daysToMonths(f){return 4800*f/146097}function monthsToDays(f){return 146097*f/4800}function makeAs(f){return function(){return this.as(f)}}var tt=makeAs("ms"),nt=makeAs("s"),it=makeAs("m"),rt=makeAs("h"),at=makeAs("d"),ot=makeAs("w"),st=makeAs("M"),lt=makeAs("Q"),ct=makeAs("y");function makeGetter(f){return function(){return this.isValid()?this._data[f]:NaN}}var dt=makeGetter("milliseconds"),ut=makeGetter("seconds"),ht=makeGetter("minutes"),ft=makeGetter("hours"),pt=makeGetter("days"),mt=makeGetter("months"),gt=makeGetter("years"),bt=Math.round,vt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function substituteTimeAgo(f,p,M,S,L){return L.relativeTime(p||1,!!M,f,S)}var _t=Math.abs;function sign(f){return(f>0)-(f<0)||+f}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var f,p,M,S,L,Y,E,O,R=_t(this._milliseconds)/1e3,B=_t(this._days),W=_t(this._months),G=this.asSeconds();return G?(f=absFloor(R/60),p=absFloor(f/60),R%=60,f%=60,M=absFloor(W/12),W%=12,S=R?R.toFixed(3).replace(/\.?0+$/,""):"",L=G<0?"-":"",Y=sign(this._months)!==sign(G)?"-":"",E=sign(this._days)!==sign(G)?"-":"",O=sign(this._milliseconds)!==sign(G)?"-":"",L+"P"+(M?Y+M+"Y":"")+(W?Y+W+"M":"")+(B?E+B+"D":"")+(p||f||R?"T":"")+(p?O+p+"H":"")+(f?O+f+"M":"")+(R?O+S+"S":"")):"P0D"}var yt=Duration.prototype;return yt.isValid=function isValid$1(){return this._isValid},yt.abs=function abs(){var f=this._data;return this._milliseconds=et(this._milliseconds),this._days=et(this._days),this._months=et(this._months),f.milliseconds=et(f.milliseconds),f.seconds=et(f.seconds),f.minutes=et(f.minutes),f.hours=et(f.hours),f.months=et(f.months),f.years=et(f.years),this},yt.add=function add$1(f,p){return addSubtract$1(this,f,p,1)},yt.subtract=function subtract$1(f,p){return addSubtract$1(this,f,p,-1)},yt.as=function as(f){if(!this.isValid())return NaN;var p,M,S=this._milliseconds;if("month"===(f=normalizeUnits(f))||"quarter"===f||"year"===f)switch(p=this._days+S/864e5,M=this._months+daysToMonths(p),f){case"month":return M;case"quarter":return M/3;case"year":return M/12}else switch(p=this._days+Math.round(monthsToDays(this._months)),f){case"week":return p/7+S/6048e5;case"day":return p+S/864e5;case"hour":return 24*p+S/36e5;case"minute":return 1440*p+S/6e4;case"second":return 86400*p+S/1e3;case"millisecond":return Math.floor(864e5*p)+S;default:throw new Error("Unknown unit "+f)}},yt.asMilliseconds=tt,yt.asSeconds=nt,yt.asMinutes=it,yt.asHours=rt,yt.asDays=at,yt.asWeeks=ot,yt.asMonths=st,yt.asQuarters=lt,yt.asYears=ct,yt.valueOf=function valueOf$1(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},yt._bubble=function bubble(){var f,p,M,S,L,Y=this._milliseconds,E=this._days,O=this._months,R=this._data;return Y>=0&&E>=0&&O>=0||Y<=0&&E<=0&&O<=0||(Y+=864e5*absCeil(monthsToDays(O)+E),E=0,O=0),R.milliseconds=Y%1e3,f=absFloor(Y/1e3),R.seconds=f%60,p=absFloor(f/60),R.minutes=p%60,M=absFloor(p/60),R.hours=M%24,E+=absFloor(M/24),L=absFloor(daysToMonths(E)),O+=L,E-=absCeil(monthsToDays(L)),S=absFloor(O/12),O%=12,R.days=E,R.months=O,R.years=S,this},yt.clone=function clone$1(){return createDuration(this)},yt.get=function get$2(f){return f=normalizeUnits(f),this.isValid()?this[f+"s"]():NaN},yt.milliseconds=dt,yt.seconds=ut,yt.minutes=ht,yt.hours=ft,yt.days=pt,yt.weeks=function weeks(){return absFloor(this.days()/7)},yt.months=mt,yt.years=gt,yt.humanize=function humanize(f,p){if(!this.isValid())return this.localeData().invalidDate();var M,S,L=!1,Y=vt;return"object"==typeof f&&(p=f,f=!1),"boolean"==typeof f&&(L=f),"object"==typeof p&&(Y=Object.assign({},vt,p),null!=p.s&&null==p.ss&&(Y.ss=p.s-1)),M=this.localeData(),S=function relativeTime$1(f,p,M,S){var L=createDuration(f).abs(),Y=bt(L.as("s")),E=bt(L.as("m")),O=bt(L.as("h")),R=bt(L.as("d")),B=bt(L.as("M")),W=bt(L.as("w")),G=bt(L.as("y")),V=Y<=M.ss&&["s",Y]||Y0,V[4]=S,substituteTimeAgo.apply(null,V)}(this,!L,Y,M),L&&(S=M.pastFuture(+this,S)),M.postformat(S)},yt.toISOString=toISOString$1,yt.toString=toISOString$1,yt.toJSON=toISOString$1,yt.locale=locale,yt.localeData=localeData,yt.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),yt.lang=Ue,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",se),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",(function(f,p,M){M._d=new Date(1e3*parseFloat(f))})),addParseToken("x",(function(f,p,M){M._d=new Date(toInt(f))})), +!function(f){var p={};function __webpack_require__(M){if(p[M])return p[M].exports;var S=p[M]={i:M,l:!1,exports:{}};return f[M].call(S.exports,S,S.exports,__webpack_require__),S.l=!0,S.exports}__webpack_require__.m=f,__webpack_require__.c=p,__webpack_require__.d=function(f,p,M){__webpack_require__.o(f,p)||Object.defineProperty(f,p,{enumerable:!0,get:M})},__webpack_require__.r=function(f){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(f,"__esModule",{value:!0})},__webpack_require__.t=function(f,p){if(1&p&&(f=__webpack_require__(f)),8&p)return f;if(4&p&&"object"==typeof f&&f&&f.__esModule)return f;var M=Object.create(null);if(__webpack_require__.r(M),Object.defineProperty(M,"default",{enumerable:!0,value:f}),2&p&&"string"!=typeof f)for(var S in f)__webpack_require__.d(M,S,function(p){return f[p]}.bind(null,S));return M},__webpack_require__.n=function(f){var p=f&&f.__esModule?function getDefault(){return f.default}:function getModuleExports(){return f};return __webpack_require__.d(p,"a",p),p},__webpack_require__.o=function(f,p){return Object.prototype.hasOwnProperty.call(f,p)},__webpack_require__.p="dist/",__webpack_require__(__webpack_require__.s=154)}([function(f,p,M){(function(f){f.exports=function(){"use strict";var p,S;function hooks(){return p.apply(null,arguments)}function isArray(f){return f instanceof Array||"[object Array]"===Object.prototype.toString.call(f)}function isObject(f){return null!=f&&"[object Object]"===Object.prototype.toString.call(f)}function hasOwnProp(f,p){return Object.prototype.hasOwnProperty.call(f,p)}function isObjectEmpty(f){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(f).length;var p;for(p in f)if(hasOwnProp(f,p))return!1;return!0}function isUndefined(f){return void 0===f}function isNumber(f){return"number"==typeof f||"[object Number]"===Object.prototype.toString.call(f)}function isDate(f){return f instanceof Date||"[object Date]"===Object.prototype.toString.call(f)}function map(f,p){var M,S=[];for(M=0;M>>0;for(p=0;p0)for(M=0;M=0?M?"+":"":"-")+Math.pow(10,Math.max(0,L)).toString().substr(1)+S}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,E=Object.keys?Object.keys:function(f){var p,M=[];for(p in f)hasOwnProp(f,p)&&M.push(p);return M};var R=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,B=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,W={},G={};function addFormatToken(f,p,M,S){var L=S;"string"==typeof S&&(L=function(){return this[S]()}),f&&(G[f]=L),p&&(G[p[0]]=function(){return zeroFill(L.apply(this,arguments),p[1],p[2])}),M&&(G[M]=function(){return this.localeData().ordinal(L.apply(this,arguments),f)})}function formatMoment(f,p){return f.isValid()?(p=expandFormat(p,f.localeData()),W[p]=W[p]||function makeFormatFunction(f){var p,M,S,L=f.match(R);for(p=0,M=L.length;p=0&&B.test(f);)f=f.replace(B,replaceLongDateFormatTokens),B.lastIndex=0,M-=1;return f}var V={};function addUnitAlias(f,p){var M=f.toLowerCase();V[M]=V[M+"s"]=V[p]=f}function normalizeUnits(f){return"string"==typeof f?V[f]||V[f.toLowerCase()]:void 0}function normalizeObjectUnits(f){var p,M,S={};for(M in f)hasOwnProp(f,M)&&(p=normalizeUnits(M))&&(S[p]=f[M]);return S}var U={};function addUnitPriority(f,p){U[f]=p}function isLeapYear(f){return f%4==0&&f%100!=0||f%400==0}function absFloor(f){return f<0?Math.ceil(f)||0:Math.floor(f)}function toInt(f){var p=+f,M=0;return 0!==p&&isFinite(p)&&(M=absFloor(p)),M}function makeGetSet(f,p){return function(M){return null!=M?(set$1(this,f,M),hooks.updateOffset(this,p),this):get(this,f)}}function get(f,p){return f.isValid()?f._d["get"+(f._isUTC?"UTC":"")+p]():NaN}function set$1(f,p,M){f.isValid()&&!isNaN(M)&&("FullYear"===p&&isLeapYear(f.year())&&1===f.month()&&29===f.date()?(M=toInt(M),f._d["set"+(f._isUTC?"UTC":"")+p](M,f.month(),daysInMonth(M,f.month()))):f._d["set"+(f._isUTC?"UTC":"")+p](M))}var q,X=/\d/,K=/\d\d/,J=/\d{3}/,Z=/\d{4}/,Q=/[+-]?\d{6}/,ee=/\d\d?/,te=/\d\d\d\d?/,ne=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,re=/\d{1,4}/,ae=/[+-]?\d{1,6}/,oe=/\d+/,se=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,ce=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function addRegexToken(f,p,M){q[f]=isFunction(p)?p:function(f,S){return f&&M?M:p}}function getParseRegexForToken(f,p){return hasOwnProp(q,f)?q[f](p._strict,p._locale):new RegExp(function unescapeFormat(f){return regexEscape(f.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(f,p,M,S,L){return p||M||S||L})))}(f))}function regexEscape(f){return f.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}q={};var ue,he={};function addParseToken(f,p){var M,S=p;for("string"==typeof f&&(f=[f]),isNumber(p)&&(S=function(f,M){M[p]=toInt(f)}),M=0;M68?1900:2e3)};var ve=makeGetSet("FullYear",!0);function createDate(f,p,M,S,L,Y,E){var O;return f<100&&f>=0?(O=new Date(f+400,p,M,S,L,Y,E),isFinite(O.getFullYear())&&O.setFullYear(f)):O=new Date(f,p,M,S,L,Y,E),O}function createUTCDate(f){var p,M;return f<100&&f>=0?((M=Array.prototype.slice.call(arguments))[0]=f+400,p=new Date(Date.UTC.apply(null,M)),isFinite(p.getUTCFullYear())&&p.setUTCFullYear(f)):p=new Date(Date.UTC.apply(null,arguments)),p}function firstWeekOffset(f,p,M){var S=7+p-M;return-(7+createUTCDate(f,0,S).getUTCDay()-p)%7+S-1}function dayOfYearFromWeeks(f,p,M,S,L){var Y,E,O=1+7*(p-1)+(7+M-S)%7+firstWeekOffset(f,S,L);return O<=0?E=daysInYear(Y=f-1)+O:O>daysInYear(f)?(Y=f+1,E=O-daysInYear(f)):(Y=f,E=O),{year:Y,dayOfYear:E}}function weekOfYear(f,p,M){var S,L,Y=firstWeekOffset(f.year(),p,M),E=Math.floor((f.dayOfYear()-Y-1)/7)+1;return E<1?S=E+weeksInYear(L=f.year()-1,p,M):E>weeksInYear(f.year(),p,M)?(S=E-weeksInYear(f.year(),p,M),L=f.year()+1):(L=f.year(),S=E),{week:S,year:L}}function weeksInYear(f,p,M){var S=firstWeekOffset(f,p,M),L=firstWeekOffset(f+1,p,M);return(daysInYear(f)-S+L)/7}function shiftWeekdays(f,p){return f.slice(p,7).concat(f.slice(0,p))}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",ee),addRegexToken("ww",ee,K),addRegexToken("W",ee),addRegexToken("WW",ee,K),addWeekParseToken(["w","ww","W","WW"],(function(f,p,M,S){p[S.substr(0,1)]=toInt(f)})),addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,(function(f){return this.localeData().weekdaysMin(this,f)})),addFormatToken("ddd",0,0,(function(f){return this.localeData().weekdaysShort(this,f)})),addFormatToken("dddd",0,0,(function(f){return this.localeData().weekdays(this,f)})),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",ee),addRegexToken("e",ee),addRegexToken("E",ee),addRegexToken("dd",(function(f,p){return p.weekdaysMinRegex(f)})),addRegexToken("ddd",(function(f,p){return p.weekdaysShortRegex(f)})),addRegexToken("dddd",(function(f,p){return p.weekdaysRegex(f)})),addWeekParseToken(["dd","ddd","dddd"],(function(f,p,M,S){var L=M._locale.weekdaysParse(f,S,M._strict);null!=L?p.d=L:getParsingFlags(M).invalidWeekday=f})),addWeekParseToken(["d","e","E"],(function(f,p,M,S){p[S]=toInt(f)}));var _e="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ye="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),we="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),xe=de,ke=de,Te=de;function handleStrictParse$1(f,p,M){var S,L,Y,E=f.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],S=0;S<7;++S)Y=createUTC([2e3,1]).day(S),this._minWeekdaysParse[S]=this.weekdaysMin(Y,"").toLocaleLowerCase(),this._shortWeekdaysParse[S]=this.weekdaysShort(Y,"").toLocaleLowerCase(),this._weekdaysParse[S]=this.weekdays(Y,"").toLocaleLowerCase();return M?"dddd"===p?-1!==(L=ue.call(this._weekdaysParse,E))?L:null:"ddd"===p?-1!==(L=ue.call(this._shortWeekdaysParse,E))?L:null:-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:"dddd"===p?-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._shortWeekdaysParse,E))||-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:"ddd"===p?-1!==(L=ue.call(this._shortWeekdaysParse,E))||-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._minWeekdaysParse,E))?L:null:-1!==(L=ue.call(this._minWeekdaysParse,E))||-1!==(L=ue.call(this._weekdaysParse,E))||-1!==(L=ue.call(this._shortWeekdaysParse,E))?L:null}function computeWeekdaysParse(){function cmpLenRev(f,p){return p.length-f.length}var f,p,M,S,L,Y=[],E=[],O=[],R=[];for(f=0;f<7;f++)p=createUTC([2e3,1]).day(f),M=regexEscape(this.weekdaysMin(p,"")),S=regexEscape(this.weekdaysShort(p,"")),L=regexEscape(this.weekdays(p,"")),Y.push(M),E.push(S),O.push(L),R.push(M),R.push(S),R.push(L);Y.sort(cmpLenRev),E.sort(cmpLenRev),O.sort(cmpLenRev),R.sort(cmpLenRev),this._weekdaysRegex=new RegExp("^("+R.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+O.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+E.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+Y.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(f,p){addFormatToken(f,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),p)}))}function matchMeridiem(f,p){return p._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,(function kFormat(){return this.hours()||24})),addFormatToken("hmm",0,0,(function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)})),addFormatToken("hmmss",0,0,(function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)})),addFormatToken("Hmm",0,0,(function(){return""+this.hours()+zeroFill(this.minutes(),2)})),addFormatToken("Hmmss",0,0,(function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)})),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",ee),addRegexToken("h",ee),addRegexToken("k",ee),addRegexToken("HH",ee,K),addRegexToken("hh",ee,K),addRegexToken("kk",ee,K),addRegexToken("hmm",te),addRegexToken("hmmss",ne),addRegexToken("Hmm",te),addRegexToken("Hmmss",ne),addParseToken(["H","HH"],3),addParseToken(["k","kk"],(function(f,p,M){var S=toInt(f);p[3]=24===S?0:S})),addParseToken(["a","A"],(function(f,p,M){M._isPm=M._locale.isPM(f),M._meridiem=f})),addParseToken(["h","hh"],(function(f,p,M){p[3]=toInt(f),getParsingFlags(M).bigHour=!0})),addParseToken("hmm",(function(f,p,M){var S=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S)),getParsingFlags(M).bigHour=!0})),addParseToken("hmmss",(function(f,p,M){var S=f.length-4,L=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S,2)),p[5]=toInt(f.substr(L)),getParsingFlags(M).bigHour=!0})),addParseToken("Hmm",(function(f,p,M){var S=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S))})),addParseToken("Hmmss",(function(f,p,M){var S=f.length-4,L=f.length-2;p[3]=toInt(f.substr(0,S)),p[4]=toInt(f.substr(S,2)),p[5]=toInt(f.substr(L))}));var Me,Se=makeGetSet("Hours",!0),Le={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:fe,monthsShort:pe,week:{dow:0,doy:6},weekdays:_e,weekdaysMin:we,weekdaysShort:ye,meridiemParse:/[ap]\.?m?\.?/i},De={},Ce={};function commonPrefix(f,p){var M,S=Math.min(f.length,p.length);for(M=0;M0;){if(S=loadLocale(L.slice(0,p).join("-")))return S;if(M&&M.length>=p&&commonPrefix(L,M)>=p-1)break;p--}Y++}return Me}(f)}function checkOverflow(f){var p,M=f._a;return M&&-2===getParsingFlags(f).overflow&&(p=M[1]<0||M[1]>11?1:M[2]<1||M[2]>daysInMonth(M[0],M[1])?2:M[3]<0||M[3]>24||24===M[3]&&(0!==M[4]||0!==M[5]||0!==M[6])?3:M[4]<0||M[4]>59?4:M[5]<0||M[5]>59?5:M[6]<0||M[6]>999?6:-1,getParsingFlags(f)._overflowDayOfYear&&(p<0||p>2)&&(p=2),getParsingFlags(f)._overflowWeeks&&-1===p&&(p=7),getParsingFlags(f)._overflowWeekday&&-1===p&&(p=8),getParsingFlags(f).overflow=p),f}var Ae=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Pe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ye=/Z|[+-]\d\d(?::?\d\d)?/,Ie=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ee=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Oe=/^\/?Date\((-?\d+)/i,He=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ze={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromISO(f){var p,M,S,L,Y,E,O=f._i,R=Ae.exec(O)||Pe.exec(O);if(R){for(getParsingFlags(f).iso=!0,p=0,M=Ie.length;p7)&&(R=!0)):(Y=f._locale._week.dow,E=f._locale._week.doy,B=weekOfYear(createLocal(),Y,E),M=defaults(p.gg,f._a[0],B.year),S=defaults(p.w,B.week),null!=p.d?((L=p.d)<0||L>6)&&(R=!0):null!=p.e?(L=p.e+Y,(p.e<0||p.e>6)&&(R=!0)):L=Y),S<1||S>weeksInYear(M,Y,E)?getParsingFlags(f)._overflowWeeks=!0:null!=R?getParsingFlags(f)._overflowWeekday=!0:(O=dayOfYearFromWeeks(M,S,L,Y,E),f._a[0]=O.year,f._dayOfYear=O.dayOfYear)}(f),null!=f._dayOfYear&&(Y=defaults(f._a[0],S[0]),(f._dayOfYear>daysInYear(Y)||0===f._dayOfYear)&&(getParsingFlags(f)._overflowDayOfYear=!0),M=createUTCDate(Y,0,f._dayOfYear),f._a[1]=M.getUTCMonth(),f._a[2]=M.getUTCDate()),p=0;p<3&&null==f._a[p];++p)f._a[p]=E[p]=S[p];for(;p<7;p++)f._a[p]=E[p]=null==f._a[p]?2===p?1:0:f._a[p];24===f._a[3]&&0===f._a[4]&&0===f._a[5]&&0===f._a[6]&&(f._nextDay=!0,f._a[3]=0),f._d=(f._useUTC?createUTCDate:createDate).apply(null,E),L=f._useUTC?f._d.getUTCDay():f._d.getDay(),null!=f._tzm&&f._d.setUTCMinutes(f._d.getUTCMinutes()-f._tzm),f._nextDay&&(f._a[3]=24),f._w&&void 0!==f._w.d&&f._w.d!==L&&(getParsingFlags(f).weekdayMismatch=!0)}}function configFromStringAndFormat(f){if(f._f!==hooks.ISO_8601)if(f._f!==hooks.RFC_2822){f._a=[],getParsingFlags(f).empty=!0;var p,M,S,L,Y,E,O=""+f._i,B=O.length,W=0;for(S=expandFormat(f._f,f._locale).match(R)||[],p=0;p0&&getParsingFlags(f).unusedInput.push(Y),O=O.slice(O.indexOf(M)+M.length),W+=M.length),G[L]?(M?getParsingFlags(f).empty=!1:getParsingFlags(f).unusedTokens.push(L),addTimeToArrayFromToken(L,M,f)):f._strict&&!M&&getParsingFlags(f).unusedTokens.push(L);getParsingFlags(f).charsLeftOver=B-W,O.length>0&&getParsingFlags(f).unusedInput.push(O),f._a[3]<=12&&!0===getParsingFlags(f).bigHour&&f._a[3]>0&&(getParsingFlags(f).bigHour=void 0),getParsingFlags(f).parsedDateParts=f._a.slice(0),getParsingFlags(f).meridiem=f._meridiem,f._a[3]=function meridiemFixWrap(f,p,M){var S;return null==M?p:null!=f.meridiemHour?f.meridiemHour(p,M):null!=f.isPM?((S=f.isPM(M))&&p<12&&(p+=12),S||12!==p||(p=0),p):p}(f._locale,f._a[3],f._meridiem),null!==(E=getParsingFlags(f).era)&&(f._a[0]=f._locale.erasConvertYear(E,f._a[0])),configFromArray(f),checkOverflow(f)}else configFromRFC2822(f);else configFromISO(f)}function prepareConfig(f){var p=f._i,M=f._f;return f._locale=f._locale||getLocale(f._l),null===p||void 0===M&&""===p?createInvalid({nullInput:!0}):("string"==typeof p&&(f._i=p=f._locale.preparse(p)),isMoment(p)?new Moment(checkOverflow(p)):(isDate(p)?f._d=p:isArray(M)?function configFromStringAndArray(f){var p,M,S,L,Y,E,O=!1;if(0===f._f.length)return getParsingFlags(f).invalidFormat=!0,void(f._d=new Date(NaN));for(L=0;Lthis?this:f:createInvalid()}));function pickBy(f,p){var M,S;if(1===p.length&&isArray(p[0])&&(p=p[0]),!p.length)return createLocal();for(M=p[0],S=1;S=0?new Date(f+400,p,M)-126227808e5:new Date(f,p,M).valueOf()}function utcStartOfDate(f,p,M){return f<100&&f>=0?Date.UTC(f+400,p,M)-126227808e5:Date.UTC(f,p,M)}function matchEraAbbr(f,p){return p.erasAbbrRegex(f)}function computeErasParse(){var f,p,M=[],S=[],L=[],Y=[],E=this.eras();for(f=0,p=E.length;f(Y=weeksInYear(f,S,L))&&(p=Y),setWeekAll.call(this,f,p,M,S,L))}function setWeekAll(f,p,M,S,L){var Y=dayOfYearFromWeeks(f,p,M,S,L),E=createUTCDate(Y.year,0,Y.dayOfYear);return this.year(E.getUTCFullYear()),this.month(E.getUTCMonth()),this.date(E.getUTCDate()),this}addFormatToken("N",0,0,"eraAbbr"),addFormatToken("NN",0,0,"eraAbbr"),addFormatToken("NNN",0,0,"eraAbbr"),addFormatToken("NNNN",0,0,"eraName"),addFormatToken("NNNNN",0,0,"eraNarrow"),addFormatToken("y",["y",1],"yo","eraYear"),addFormatToken("y",["yy",2],0,"eraYear"),addFormatToken("y",["yyy",3],0,"eraYear"),addFormatToken("y",["yyyy",4],0,"eraYear"),addRegexToken("N",matchEraAbbr),addRegexToken("NN",matchEraAbbr),addRegexToken("NNN",matchEraAbbr),addRegexToken("NNNN",(function matchEraName(f,p){return p.erasNameRegex(f)})),addRegexToken("NNNNN",(function matchEraNarrow(f,p){return p.erasNarrowRegex(f)})),addParseToken(["N","NN","NNN","NNNN","NNNNN"],(function(f,p,M,S){var L=M._locale.erasParse(f,S,M._strict);L?getParsingFlags(M).era=L:getParsingFlags(M).invalidEra=f})),addRegexToken("y",oe),addRegexToken("yy",oe),addRegexToken("yyy",oe),addRegexToken("yyyy",oe),addRegexToken("yo",(function matchEraYearOrdinal(f,p){return p._eraYearOrdinalRegex||oe})),addParseToken(["y","yy","yyy","yyyy"],0),addParseToken(["yo"],(function(f,p,M,S){var L;M._locale._eraYearOrdinalRegex&&(L=f.match(M._locale._eraYearOrdinalRegex)),M._locale.eraYearOrdinalParse?p[0]=M._locale.eraYearOrdinalParse(f,L):p[0]=parseInt(f,10)})),addFormatToken(0,["gg",2],0,(function(){return this.weekYear()%100})),addFormatToken(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",se),addRegexToken("g",se),addRegexToken("GG",ee,K),addRegexToken("gg",ee,K),addRegexToken("GGGG",re,Z),addRegexToken("gggg",re,Z),addRegexToken("GGGGG",ae,Q),addRegexToken("ggggg",ae,Q),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],(function(f,p,M,S){p[S.substr(0,2)]=toInt(f)})),addWeekParseToken(["gg","GG"],(function(f,p,M,S){p[S]=hooks.parseTwoDigitYear(f)})),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",X),addParseToken("Q",(function(f,p){p[1]=3*(toInt(f)-1)})),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",ee),addRegexToken("DD",ee,K),addRegexToken("Do",(function(f,p){return f?p._dayOfMonthOrdinalParse||p._ordinalParse:p._dayOfMonthOrdinalParseLenient})),addParseToken(["D","DD"],2),addParseToken("Do",(function(f,p){p[2]=toInt(f.match(ee)[0])}));var $e=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",ie),addRegexToken("DDDD",J),addParseToken(["DDD","DDDD"],(function(f,p,M){M._dayOfYear=toInt(f)})),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",ee),addRegexToken("mm",ee,K),addParseToken(["m","mm"],4);var qe=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",ee),addRegexToken("ss",ee,K),addParseToken(["s","ss"],5);var Xe,Ke,Je=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,(function(){return~~(this.millisecond()/100)})),addFormatToken(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),addFormatToken(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),addFormatToken(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),addFormatToken(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),addFormatToken(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),addFormatToken(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",ie,X),addRegexToken("SS",ie,K),addRegexToken("SSS",ie,J),Xe="SSSS";Xe.length<=9;Xe+="S")addRegexToken(Xe,oe);function parseMs(f,p){p[6]=toInt(1e3*("0."+f))}for(Xe="S";Xe.length<=9;Xe+="S")addParseToken(Xe,parseMs);Ke=makeGetSet("Milliseconds",!1),addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var Ze=Moment.prototype;function preParsePostFormat(f){return f}Ze.add=Ge,Ze.calendar=function calendar$1(f,p){1===arguments.length&&(arguments[0]?isMomentInput(arguments[0])?(f=arguments[0],p=void 0):isCalendarSpec(arguments[0])&&(p=arguments[0],f=void 0):(f=void 0,p=void 0));var M=f||createLocal(),S=cloneWithOffset(M,this).startOf("day"),L=hooks.calendarFormat(this,S)||"sameElse",Y=p&&(isFunction(p[L])?p[L].call(this,M):p[L]);return this.format(Y||this.localeData().calendar(L,this,createLocal(M)))},Ze.clone=function clone(){return new Moment(this)},Ze.diff=function diff(f,p,M){var S,L,Y;if(!this.isValid())return NaN;if(!(S=cloneWithOffset(f,this)).isValid())return NaN;switch(L=6e4*(S.utcOffset()-this.utcOffset()),p=normalizeUnits(p)){case"year":Y=monthDiff(this,S)/12;break;case"month":Y=monthDiff(this,S);break;case"quarter":Y=monthDiff(this,S)/3;break;case"second":Y=(this-S)/1e3;break;case"minute":Y=(this-S)/6e4;break;case"hour":Y=(this-S)/36e5;break;case"day":Y=(this-S-L)/864e5;break;case"week":Y=(this-S-L)/6048e5;break;default:Y=this-S}return M?Y:absFloor(Y)},Ze.endOf=function endOf(f){var p,M;if(void 0===(f=normalizeUnits(f))||"millisecond"===f||!this.isValid())return this;switch(M=this._isUTC?utcStartOfDate:localStartOfDate,f){case"year":p=M(this.year()+1,0,1)-1;break;case"quarter":p=M(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":p=M(this.year(),this.month()+1,1)-1;break;case"week":p=M(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":p=M(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":p=M(this.year(),this.month(),this.date()+1)-1;break;case"hour":p=this._d.valueOf(),p+=36e5-mod$1(p+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":p=this._d.valueOf(),p+=6e4-mod$1(p,6e4)-1;break;case"second":p=this._d.valueOf(),p+=1e3-mod$1(p,1e3)-1}return this._d.setTime(p),hooks.updateOffset(this,!0),this},Ze.format=function format(f){f||(f=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var p=formatMoment(this,f);return this.localeData().postformat(p)},Ze.from=function from(f,p){return this.isValid()&&(isMoment(f)&&f.isValid()||createLocal(f).isValid())?createDuration({to:this,from:f}).locale(this.locale()).humanize(!p):this.localeData().invalidDate()},Ze.fromNow=function fromNow(f){return this.from(createLocal(),f)},Ze.to=function to(f,p){return this.isValid()&&(isMoment(f)&&f.isValid()||createLocal(f).isValid())?createDuration({from:this,to:f}).locale(this.locale()).humanize(!p):this.localeData().invalidDate()},Ze.toNow=function toNow(f){return this.to(createLocal(),f)},Ze.get=function stringGet(f){return isFunction(this[f=normalizeUnits(f)])?this[f]():this},Ze.invalidAt=function invalidAt(){return getParsingFlags(this).overflow},Ze.isAfter=function isAfter(f,p){var M=isMoment(f)?f:createLocal(f);return!(!this.isValid()||!M.isValid())&&("millisecond"===(p=normalizeUnits(p)||"millisecond")?this.valueOf()>M.valueOf():M.valueOf()9999?formatMoment(M,p?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?p?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(M,"Z")):formatMoment(M,p?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ze.inspect=function inspect(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var f,p,M,S="moment",L="";return this.isLocal()||(S=0===this.utcOffset()?"moment.utc":"moment.parseZone",L="Z"),f="["+S+'("]',p=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",M=L+'[")]',this.format(f+p+"-MM-DD[T]HH:mm:ss.SSS"+M)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Ze[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Ze.toJSON=function toJSON(){return this.isValid()?this.toISOString():null},Ze.toString=function toString(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ze.unix=function unix(){return Math.floor(this.valueOf()/1e3)},Ze.valueOf=function valueOf(){return this._d.valueOf()-6e4*(this._offset||0)},Ze.creationData=function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ze.eraName=function getEraName(){var f,p,M,S=this.localeData().eras();for(f=0,p=S.length;fthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ze.isLocal=function isLocal(){return!!this.isValid()&&!this._isUTC},Ze.isUtcOffset=function isUtcOffset(){return!!this.isValid()&&this._isUTC},Ze.isUtc=isUtc,Ze.isUTC=isUtc,Ze.zoneAbbr=function getZoneAbbr(){return this._isUTC?"UTC":""},Ze.zoneName=function getZoneName(){return this._isUTC?"Coordinated Universal Time":""},Ze.dates=deprecate("dates accessor is deprecated. Use date instead.",$e),Ze.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),Ze.years=deprecate("years accessor is deprecated. Use year instead",ve),Ze.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function getSetZone(f,p){return null!=f?("string"!=typeof f&&(f=-f),this.utcOffset(f,p),this):-this.utcOffset()})),Ze.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var f,p={};return copyConfig(p,this),(p=prepareConfig(p))._a?(f=p._isUTC?createUTC(p._a):createLocal(p._a),this._isDSTShifted=this.isValid()&&function compareArrays(f,p,M){var S,L=Math.min(f.length,p.length),Y=Math.abs(f.length-p.length),E=0;for(S=0;S0):this._isDSTShifted=!1,this._isDSTShifted}));var Qe=Locale.prototype;function get$1(f,p,M,S){var L=getLocale(),Y=createUTC().set(S,p);return L[M](Y,f)}function listMonthsImpl(f,p,M){if(isNumber(f)&&(p=f,f=void 0),f=f||"",null!=p)return get$1(f,p,M,"month");var S,L=[];for(S=0;S<12;S++)L[S]=get$1(f,S,M,"month");return L}function listWeekdaysImpl(f,p,M,S){"boolean"==typeof f?(isNumber(p)&&(M=p,p=void 0),p=p||""):(M=p=f,f=!1,isNumber(p)&&(M=p,p=void 0),p=p||"");var L,Y=getLocale(),E=f?Y._week.dow:0,O=[];if(null!=M)return get$1(p,(M+E)%7,S,"day");for(L=0;L<7;L++)O[L]=get$1(p,(L+E)%7,S,"day");return O}Qe.calendar=function calendar(f,p,M){var S=this._calendar[f]||this._calendar.sameElse;return isFunction(S)?S.call(p,M):S},Qe.longDateFormat=function longDateFormat(f){var p=this._longDateFormat[f],M=this._longDateFormat[f.toUpperCase()];return p||!M?p:(this._longDateFormat[f]=M.match(R).map((function(f){return"MMMM"===f||"MM"===f||"DD"===f||"dddd"===f?f.slice(1):f})).join(""),this._longDateFormat[f])},Qe.invalidDate=function invalidDate(){return this._invalidDate},Qe.ordinal=function ordinal(f){return this._ordinal.replace("%d",f)},Qe.preparse=preParsePostFormat,Qe.postformat=preParsePostFormat,Qe.relativeTime=function relativeTime(f,p,M,S){var L=this._relativeTime[M];return isFunction(L)?L(f,p,M,S):L.replace(/%d/i,f)},Qe.pastFuture=function pastFuture(f,p){var M=this._relativeTime[f>0?"future":"past"];return isFunction(M)?M(p):M.replace(/%s/i,p)},Qe.set=function set(f){var p,M;for(M in f)hasOwnProp(f,M)&&(isFunction(p=f[M])?this[M]=p:this["_"+M]=p);this._config=f,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Qe.eras=function localeEras(f,p){var M,S,L,Y=this._eras||getLocale("en")._eras;for(M=0,S=Y.length;M=0)return R[S]},Qe.erasConvertYear=function localeErasConvertYear(f,p){var M=f.since<=f.until?1:-1;return void 0===p?hooks(f.since).year():hooks(f.since).year()+(p-f.offset)*M},Qe.erasAbbrRegex=function erasAbbrRegex(f){return hasOwnProp(this,"_erasAbbrRegex")||computeErasParse.call(this),f?this._erasAbbrRegex:this._erasRegex},Qe.erasNameRegex=function erasNameRegex(f){return hasOwnProp(this,"_erasNameRegex")||computeErasParse.call(this),f?this._erasNameRegex:this._erasRegex},Qe.erasNarrowRegex=function erasNarrowRegex(f){return hasOwnProp(this,"_erasNarrowRegex")||computeErasParse.call(this),f?this._erasNarrowRegex:this._erasRegex},Qe.months=function localeMonths(f,p){return f?isArray(this._months)?this._months[f.month()]:this._months[(this._months.isFormat||me).test(p)?"format":"standalone"][f.month()]:isArray(this._months)?this._months:this._months.standalone},Qe.monthsShort=function localeMonthsShort(f,p){return f?isArray(this._monthsShort)?this._monthsShort[f.month()]:this._monthsShort[me.test(p)?"format":"standalone"][f.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Qe.monthsParse=function localeMonthsParse(f,p,M){var S,L,Y;if(this._monthsParseExact)return handleStrictParse.call(this,f,p,M);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),S=0;S<12;S++){if(L=createUTC([2e3,S]),M&&!this._longMonthsParse[S]&&(this._longMonthsParse[S]=new RegExp("^"+this.months(L,"").replace(".","")+"$","i"),this._shortMonthsParse[S]=new RegExp("^"+this.monthsShort(L,"").replace(".","")+"$","i")),M||this._monthsParse[S]||(Y="^"+this.months(L,"")+"|^"+this.monthsShort(L,""),this._monthsParse[S]=new RegExp(Y.replace(".",""),"i")),M&&"MMMM"===p&&this._longMonthsParse[S].test(f))return S;if(M&&"MMM"===p&&this._shortMonthsParse[S].test(f))return S;if(!M&&this._monthsParse[S].test(f))return S}},Qe.monthsRegex=function monthsRegex(f){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),f?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=be),this._monthsStrictRegex&&f?this._monthsStrictRegex:this._monthsRegex)},Qe.monthsShortRegex=function monthsShortRegex(f){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),f?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=ge),this._monthsShortStrictRegex&&f?this._monthsShortStrictRegex:this._monthsShortRegex)},Qe.week=function localeWeek(f){return weekOfYear(f,this._week.dow,this._week.doy).week},Qe.firstDayOfYear=function localeFirstDayOfYear(){return this._week.doy},Qe.firstDayOfWeek=function localeFirstDayOfWeek(){return this._week.dow},Qe.weekdays=function localeWeekdays(f,p){var M=isArray(this._weekdays)?this._weekdays:this._weekdays[f&&!0!==f&&this._weekdays.isFormat.test(p)?"format":"standalone"];return!0===f?shiftWeekdays(M,this._week.dow):f?M[f.day()]:M},Qe.weekdaysMin=function localeWeekdaysMin(f){return!0===f?shiftWeekdays(this._weekdaysMin,this._week.dow):f?this._weekdaysMin[f.day()]:this._weekdaysMin},Qe.weekdaysShort=function localeWeekdaysShort(f){return!0===f?shiftWeekdays(this._weekdaysShort,this._week.dow):f?this._weekdaysShort[f.day()]:this._weekdaysShort},Qe.weekdaysParse=function localeWeekdaysParse(f,p,M){var S,L,Y;if(this._weekdaysParseExact)return handleStrictParse$1.call(this,f,p,M);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),S=0;S<7;S++){if(L=createUTC([2e3,1]).day(S),M&&!this._fullWeekdaysParse[S]&&(this._fullWeekdaysParse[S]=new RegExp("^"+this.weekdays(L,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[S]=new RegExp("^"+this.weekdaysShort(L,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[S]=new RegExp("^"+this.weekdaysMin(L,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[S]||(Y="^"+this.weekdays(L,"")+"|^"+this.weekdaysShort(L,"")+"|^"+this.weekdaysMin(L,""),this._weekdaysParse[S]=new RegExp(Y.replace(".",""),"i")),M&&"dddd"===p&&this._fullWeekdaysParse[S].test(f))return S;if(M&&"ddd"===p&&this._shortWeekdaysParse[S].test(f))return S;if(M&&"dd"===p&&this._minWeekdaysParse[S].test(f))return S;if(!M&&this._weekdaysParse[S].test(f))return S}},Qe.weekdaysRegex=function weekdaysRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=xe),this._weekdaysStrictRegex&&f?this._weekdaysStrictRegex:this._weekdaysRegex)},Qe.weekdaysShortRegex=function weekdaysShortRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ke),this._weekdaysShortStrictRegex&&f?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Qe.weekdaysMinRegex=function weekdaysMinRegex(f){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),f?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Te),this._weekdaysMinStrictRegex&&f?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Qe.isPM=function localeIsPM(f){return"p"===(f+"").toLowerCase().charAt(0)},Qe.meridiem=function localeMeridiem(f,p,M){return f>11?M?"pm":"PM":M?"am":"AM"},getSetGlobalLocale("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(f){var p=f%10;return f+(1===toInt(f%100/10)?"th":1===p?"st":2===p?"nd":3===p?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var et=Math.abs;function addSubtract$1(f,p,M,S){var L=createDuration(p,M);return f._milliseconds+=S*L._milliseconds,f._days+=S*L._days,f._months+=S*L._months,f._bubble()}function absCeil(f){return f<0?Math.floor(f):Math.ceil(f)}function daysToMonths(f){return 4800*f/146097}function monthsToDays(f){return 146097*f/4800}function makeAs(f){return function(){return this.as(f)}}var tt=makeAs("ms"),nt=makeAs("s"),it=makeAs("m"),rt=makeAs("h"),at=makeAs("d"),ot=makeAs("w"),st=makeAs("M"),lt=makeAs("Q"),ct=makeAs("y");function makeGetter(f){return function(){return this.isValid()?this._data[f]:NaN}}var dt=makeGetter("milliseconds"),ut=makeGetter("seconds"),ht=makeGetter("minutes"),ft=makeGetter("hours"),pt=makeGetter("days"),mt=makeGetter("months"),gt=makeGetter("years"),bt=Math.round,vt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function substituteTimeAgo(f,p,M,S,L){return L.relativeTime(p||1,!!M,f,S)}var _t=Math.abs;function sign(f){return(f>0)-(f<0)||+f}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var f,p,M,S,L,Y,E,O,R=_t(this._milliseconds)/1e3,B=_t(this._days),W=_t(this._months),G=this.asSeconds();return G?(f=absFloor(R/60),p=absFloor(f/60),R%=60,f%=60,M=absFloor(W/12),W%=12,S=R?R.toFixed(3).replace(/\.?0+$/,""):"",L=G<0?"-":"",Y=sign(this._months)!==sign(G)?"-":"",E=sign(this._days)!==sign(G)?"-":"",O=sign(this._milliseconds)!==sign(G)?"-":"",L+"P"+(M?Y+M+"Y":"")+(W?Y+W+"M":"")+(B?E+B+"D":"")+(p||f||R?"T":"")+(p?O+p+"H":"")+(f?O+f+"M":"")+(R?O+S+"S":"")):"P0D"}var yt=Duration.prototype;return yt.isValid=function isValid$1(){return this._isValid},yt.abs=function abs(){var f=this._data;return this._milliseconds=et(this._milliseconds),this._days=et(this._days),this._months=et(this._months),f.milliseconds=et(f.milliseconds),f.seconds=et(f.seconds),f.minutes=et(f.minutes),f.hours=et(f.hours),f.months=et(f.months),f.years=et(f.years),this},yt.add=function add$1(f,p){return addSubtract$1(this,f,p,1)},yt.subtract=function subtract$1(f,p){return addSubtract$1(this,f,p,-1)},yt.as=function as(f){if(!this.isValid())return NaN;var p,M,S=this._milliseconds;if("month"===(f=normalizeUnits(f))||"quarter"===f||"year"===f)switch(p=this._days+S/864e5,M=this._months+daysToMonths(p),f){case"month":return M;case"quarter":return M/3;case"year":return M/12}else switch(p=this._days+Math.round(monthsToDays(this._months)),f){case"week":return p/7+S/6048e5;case"day":return p+S/864e5;case"hour":return 24*p+S/36e5;case"minute":return 1440*p+S/6e4;case"second":return 86400*p+S/1e3;case"millisecond":return Math.floor(864e5*p)+S;default:throw new Error("Unknown unit "+f)}},yt.asMilliseconds=tt,yt.asSeconds=nt,yt.asMinutes=it,yt.asHours=rt,yt.asDays=at,yt.asWeeks=ot,yt.asMonths=st,yt.asQuarters=lt,yt.asYears=ct,yt.valueOf=function valueOf$1(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},yt._bubble=function bubble(){var f,p,M,S,L,Y=this._milliseconds,E=this._days,O=this._months,R=this._data;return Y>=0&&E>=0&&O>=0||Y<=0&&E<=0&&O<=0||(Y+=864e5*absCeil(monthsToDays(O)+E),E=0,O=0),R.milliseconds=Y%1e3,f=absFloor(Y/1e3),R.seconds=f%60,p=absFloor(f/60),R.minutes=p%60,M=absFloor(p/60),R.hours=M%24,E+=absFloor(M/24),L=absFloor(daysToMonths(E)),O+=L,E-=absCeil(monthsToDays(L)),S=absFloor(O/12),O%=12,R.days=E,R.months=O,R.years=S,this},yt.clone=function clone$1(){return createDuration(this)},yt.get=function get$2(f){return f=normalizeUnits(f),this.isValid()?this[f+"s"]():NaN},yt.milliseconds=dt,yt.seconds=ut,yt.minutes=ht,yt.hours=ft,yt.days=pt,yt.weeks=function weeks(){return absFloor(this.days()/7)},yt.months=mt,yt.years=gt,yt.humanize=function humanize(f,p){if(!this.isValid())return this.localeData().invalidDate();var M,S,L=!1,Y=vt;return"object"==typeof f&&(p=f,f=!1),"boolean"==typeof f&&(L=f),"object"==typeof p&&(Y=Object.assign({},vt,p),null!=p.s&&null==p.ss&&(Y.ss=p.s-1)),M=this.localeData(),S=function relativeTime$1(f,p,M,S){var L=createDuration(f).abs(),Y=bt(L.as("s")),E=bt(L.as("m")),O=bt(L.as("h")),R=bt(L.as("d")),B=bt(L.as("M")),W=bt(L.as("w")),G=bt(L.as("y")),V=Y<=M.ss&&["s",Y]||Y0,V[4]=S,substituteTimeAgo.apply(null,V)}(this,!L,Y,M),L&&(S=M.pastFuture(+this,S)),M.postformat(S)},yt.toISOString=toISOString$1,yt.toString=toISOString$1,yt.toJSON=toISOString$1,yt.locale=locale,yt.localeData=localeData,yt.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),yt.lang=Ue,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",se),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",(function(f,p,M){M._d=new Date(1e3*parseFloat(f))})),addParseToken("x",(function(f,p,M){M._d=new Date(toInt(f))})), //! moment.js -hooks.version="2.28.0",function setHookCallback(f){p=f}(createLocal),hooks.fn=Ze,hooks.min=function min(){var f=[].slice.call(arguments,0);return pickBy("isBefore",f)},hooks.max=function max(){var f=[].slice.call(arguments,0);return pickBy("isAfter",f)},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function createUnix(f){return createLocal(1e3*f)},hooks.months=function listMonths(f,p){return listMonthsImpl(f,p,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function listWeekdays(f,p,M){return listWeekdaysImpl(f,p,M,"weekdays")},hooks.parseZone=function createInZone(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function listMonthsShort(f,p){return listMonthsImpl(f,p,"monthsShort")},hooks.weekdaysMin=function listWeekdaysMin(f,p,M){return listWeekdaysImpl(f,p,M,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function updateLocale(f,p){if(null!=p){var M,S,L=Le;null!=De[f]&&null!=De[f].parentLocale?De[f].set(mergeConfigs(De[f]._config,p)):(null!=(S=loadLocale(f))&&(L=S._config),p=mergeConfigs(L,p),null==S&&(p.abbr=f),(M=new Locale(p)).parentLocale=De[f],De[f]=M),getSetGlobalLocale(f)}else null!=De[f]&&(null!=De[f].parentLocale?(De[f]=De[f].parentLocale,f===getSetGlobalLocale()&&getSetGlobalLocale(f)):null!=De[f]&&delete De[f]);return De[f]},hooks.locales=function listLocales(){return E(De)},hooks.weekdaysShort=function listWeekdaysShort(f,p,M){return listWeekdaysImpl(f,p,M,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function getSetRelativeTimeRounding(f){return void 0===f?bt:"function"==typeof f&&(bt=f,!0)},hooks.relativeTimeThreshold=function getSetRelativeTimeThreshold(f,p){return void 0!==vt[f]&&(void 0===p?vt[f]:(vt[f]=p,"s"===f&&(vt.ss=p-1),!0))},hooks.calendarFormat=function getCalendarFormat(f,p){var M=f.diff(p,"days",!0);return M<-6?"sameElse":M<-1?"lastWeek":M<0?"lastDay":M<1?"sameDay":M<2?"nextDay":M<7?"nextWeek":"sameElse"},hooks.prototype=Ze,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},hooks}()}).call(this,M(9)(f))},function(f,p,M){"use strict";p.__esModule=!0,p.extend=extend,p.indexOf=function indexOf(f,p){for(var M=0,S=f.length;M":">",'"':""","'":"'","`":"`","=":"="},L=/[&<>"'`=]/g,Y=/[&<>"'`=]/;function escapeChar(f){return S[f]}function extend(f){for(var p=1;p= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};function HandlebarsEnvironment(f,p,M){this.helpers=f||{},this.partials=p||{},this.decorators=M||{},Y.registerDefaultHelpers(this),E.registerDefaultDecorators(this)}HandlebarsEnvironment.prototype={constructor:HandlebarsEnvironment,logger:O.default,log:O.default.log,registerHelper:function registerHelper(f,p){if("[object Object]"===S.toString.call(f)){if(p)throw new L.default("Arg not supported with multiple helpers");S.extend(this.helpers,f)}else this.helpers[f]=p},unregisterHelper:function unregisterHelper(f){delete this.helpers[f]},registerPartial:function registerPartial(f,p){if("[object Object]"===S.toString.call(f))S.extend(this.partials,f);else{if(void 0===p)throw new L.default('Attempting to register a partial called "'+f+'" as undefined');this.partials[f]=p}},unregisterPartial:function unregisterPartial(f){delete this.partials[f]},registerDecorator:function registerDecorator(f,p){if("[object Object]"===S.toString.call(f)){if(p)throw new L.default("Arg not supported with multiple decorators");S.extend(this.decorators,f)}else this.decorators[f]=p},unregisterDecorator:function unregisterDecorator(f){delete this.decorators[f]},resetLoggedPropertyAccesses:function resetLoggedPropertyAccesses(){R.resetLoggedProperties()}};var B=O.default.log;p.log=B,p.createFrame=S.createFrame,p.logger=O.default},function(f,p){f.exports=function(f){return f.webpackPolyfill||(f.deprecate=function(){},f.paths=[],f.children||(f.children=[]),Object.defineProperty(f,"loaded",{enumerable:!0,get:function(){return f.l}}),Object.defineProperty(f,"id",{enumerable:!0,get:function(){return f.i}}),f.webpackPolyfill=1),f}},function(f,p,M){!function(f){"use strict"; +hooks.version="2.29.1",function setHookCallback(f){p=f}(createLocal),hooks.fn=Ze,hooks.min=function min(){var f=[].slice.call(arguments,0);return pickBy("isBefore",f)},hooks.max=function max(){var f=[].slice.call(arguments,0);return pickBy("isAfter",f)},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function createUnix(f){return createLocal(1e3*f)},hooks.months=function listMonths(f,p){return listMonthsImpl(f,p,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function listWeekdays(f,p,M){return listWeekdaysImpl(f,p,M,"weekdays")},hooks.parseZone=function createInZone(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function listMonthsShort(f,p){return listMonthsImpl(f,p,"monthsShort")},hooks.weekdaysMin=function listWeekdaysMin(f,p,M){return listWeekdaysImpl(f,p,M,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function updateLocale(f,p){if(null!=p){var M,S,L=Le;null!=De[f]&&null!=De[f].parentLocale?De[f].set(mergeConfigs(De[f]._config,p)):(null!=(S=loadLocale(f))&&(L=S._config),p=mergeConfigs(L,p),null==S&&(p.abbr=f),(M=new Locale(p)).parentLocale=De[f],De[f]=M),getSetGlobalLocale(f)}else null!=De[f]&&(null!=De[f].parentLocale?(De[f]=De[f].parentLocale,f===getSetGlobalLocale()&&getSetGlobalLocale(f)):null!=De[f]&&delete De[f]);return De[f]},hooks.locales=function listLocales(){return E(De)},hooks.weekdaysShort=function listWeekdaysShort(f,p,M){return listWeekdaysImpl(f,p,M,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function getSetRelativeTimeRounding(f){return void 0===f?bt:"function"==typeof f&&(bt=f,!0)},hooks.relativeTimeThreshold=function getSetRelativeTimeThreshold(f,p){return void 0!==vt[f]&&(void 0===p?vt[f]:(vt[f]=p,"s"===f&&(vt.ss=p-1),!0))},hooks.calendarFormat=function getCalendarFormat(f,p){var M=f.diff(p,"days",!0);return M<-6?"sameElse":M<-1?"lastWeek":M<0?"lastDay":M<1?"sameDay":M<2?"nextDay":M<7?"nextWeek":"sameElse"},hooks.prototype=Ze,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},hooks}()}).call(this,M(9)(f))},function(f,p,M){"use strict";p.__esModule=!0,p.extend=extend,p.indexOf=function indexOf(f,p){for(var M=0,S=f.length;M":">",'"':""","'":"'","`":"`","=":"="},L=/[&<>"'`=]/g,Y=/[&<>"'`=]/;function escapeChar(f){return S[f]}function extend(f){for(var p=1;p= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};function HandlebarsEnvironment(f,p,M){this.helpers=f||{},this.partials=p||{},this.decorators=M||{},Y.registerDefaultHelpers(this),E.registerDefaultDecorators(this)}HandlebarsEnvironment.prototype={constructor:HandlebarsEnvironment,logger:O.default,log:O.default.log,registerHelper:function registerHelper(f,p){if("[object Object]"===S.toString.call(f)){if(p)throw new L.default("Arg not supported with multiple helpers");S.extend(this.helpers,f)}else this.helpers[f]=p},unregisterHelper:function unregisterHelper(f){delete this.helpers[f]},registerPartial:function registerPartial(f,p){if("[object Object]"===S.toString.call(f))S.extend(this.partials,f);else{if(void 0===p)throw new L.default('Attempting to register a partial called "'+f+'" as undefined');this.partials[f]=p}},unregisterPartial:function unregisterPartial(f){delete this.partials[f]},registerDecorator:function registerDecorator(f,p){if("[object Object]"===S.toString.call(f)){if(p)throw new L.default("Arg not supported with multiple decorators");S.extend(this.decorators,f)}else this.decorators[f]=p},unregisterDecorator:function unregisterDecorator(f){delete this.decorators[f]},resetLoggedPropertyAccesses:function resetLoggedPropertyAccesses(){R.resetLoggedProperties()}};var B=O.default.log;p.log=B,p.createFrame=S.createFrame,p.logger=O.default},function(f,p){f.exports=function(f){return f.webpackPolyfill||(f.deprecate=function(){},f.paths=[],f.children||(f.children=[]),Object.defineProperty(f,"loaded",{enumerable:!0,get:function(){return f.l}}),Object.defineProperty(f,"id",{enumerable:!0,get:function(){return f.i}}),f.webpackPolyfill=1),f}},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(f){return/^nm$/i.test(f)},meridiem:function(f,p,M){return f<12?M?"vm":"VM":M?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(f){return f+(1===f||8===f||f>=20?"ste":"de")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -12,7 +12,7 @@ f.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ما //! moment.js locale configuration var p={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},pluralForm=function(f){return 0===f?0:1===f?1:2===f?2:f%100>=3&&f%100<=10?3:f%100>=11?4:5},M={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},pluralize=function(f){return function(p,S,L,Y){var E=pluralForm(p),O=M[f][pluralForm(p)];return 2===E&&(O=O[S?0:1]),O.replace(/%d/i,p)}},S=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];f.defineLocale("ar-ly",{months:S,monthsShort:S,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(f){return"م"===f},meridiem:function(f,p,M){return f<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:pluralize("s"),ss:pluralize("s"),m:pluralize("m"),mm:pluralize("m"),h:pluralize("h"),hh:pluralize("h"),d:pluralize("d"),dd:pluralize("d"),M:pluralize("M"),MM:pluralize("M"),y:pluralize("y"),yy:pluralize("y")},preparse:function(f){return f.replace(/،/g,",")},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},M={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};f.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(f){return"م"===f},meridiem:function(f,p,M){return f<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(f){return f.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(f){return M[f]})).replace(/،/g,",")},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -22,12 +22,14 @@ var p={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20: //! moment.js locale configuration function relativeTimeWithPlural(f,p,M){return"m"===M?p?"хвіліна":"хвіліну":"h"===M?p?"гадзіна":"гадзіну":f+" "+function plural(f,p){var M=f.split("_");return p%10==1&&p%100!=11?M[0]:p%10>=2&&p%10<=4&&(p%100<10||p%100>=20)?M[1]:M[2]}({ss:p?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:p?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:p?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[M],+f)}f.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:relativeTimeWithPlural,mm:relativeTimeWithPlural,h:relativeTimeWithPlural,hh:relativeTimeWithPlural,d:"дзень",dd:relativeTimeWithPlural,M:"месяц",MM:relativeTimeWithPlural,y:"год",yy:relativeTimeWithPlural},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(f){return/^(дня|вечара)$/.test(f)},meridiem:function(f,p,M){return f<4?"ночы":f<12?"раніцы":f<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(f,p){switch(p){case"M":case"d":case"DDD":case"w":case"W":return f%10!=2&&f%10!=3||f%100==12||f%100==13?f+"-ы":f+"-і";case"D":return f+"-га";default:return f}},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(f){var p=f%10,M=f%100;return 0===f?f+"-ев":0===M?f+"-ен":M>10&&M<20?f+"-ти":1===p?f+"-ви":2===p?f+"-ри":7===p||8===p?f+"-ми":f+"-ти"},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(f){var p=f%10,M=f%100;return 0===f?f+"-ев":0===M?f+"-ен":M>10&&M<20?f+"-ти":1===p?f+"-ви":2===p?f+"-ри":7===p||8===p?f+"-ми":f+"-ти"},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},M={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};f.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(f){return f.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(f,p){return 12===f&&(f=0),"রাত"===p&&f>=4||"দুপুর"===p&&f<5||"বিকাল"===p?f+12:f},meridiem:function(f,p,M){return f<4?"রাত":f<10?"সকাল":f<17?"দুপুর":f<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration +var p={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},M={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};f.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(f){return f.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(f,p){return 12===f&&(f=0),"রাত"===p?f<4?f:f+12:"ভোর"===p||"সকাল"===p?f:"দুপুর"===p?f>=3?f:f+12:"বিকাল"===p||"সন্ধ্যা"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"রাত":f<6?"ভোর":f<12?"সকাল":f<15?"দুপুর":f<18?"বিকাল":f<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; +//! moment.js locale configuration var p={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},M={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};f.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(f){return f.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(f,p){return 12===f&&(f=0),"མཚན་མོ"===p&&f>=4||"ཉིན་གུང"===p&&f<5||"དགོང་དག"===p?f+12:f},meridiem:function(f,p,M){return f<4?"མཚན་མོ":f<10?"ཞོགས་ཀས":f<17?"ཉིན་གུང":f<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration function relativeTimeWithMutation(f,p,M){return f+" "+function mutation(f,p){return 2===p?function softMutation(f){var p={m:"v",b:"v",d:"z"};return void 0===p[f.charAt(0)]?f:p[f.charAt(0)]+f.substring(1)}(f):f}({mm:"munutenn",MM:"miz",dd:"devezh"}[M],f)}var p=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],M=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,S=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];f.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:S,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:S,monthsRegex:M,monthsShortRegex:M,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:p,longMonthsParse:p,shortMonthsParse:p,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:relativeTimeWithMutation,h:"un eur",hh:"%d eur",d:"un devezh",dd:relativeTimeWithMutation,M:"ur miz",MM:relativeTimeWithMutation,y:"ur bloaz",yy:function specialMutationForYears(f){switch(function lastNumber(f){return f>9?lastNumber(f%10):f}(f)){case 1:case 3:case 4:case 5:case 9:return f+" bloaz";default:return f+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(f){return f+(1===f?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(f){return"g.m."===f},meridiem:function(f,p,M){return f<12?"a.m.":"g.m."}})}(M(0))},function(f,p,M){!function(f){"use strict"; @@ -72,11 +74,13 @@ f.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_Augus //! moment.js locale configuration f.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(f){return"p"===f.charAt(0).toLowerCase()},meridiem:function(f,p,M){return f>11?M?"p.t.m.":"P.T.M.":M?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(M(0))},function(f,p,M){!function(f){"use strict"; +//! moment.js locale configuration +var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),M="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),S=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],L=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;f.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration function processRelativeTime(f,p,M,S){var L={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[f+"sekundi",f+"sekundit"],m:["ühe minuti","üks minut"],mm:[f+" minuti",f+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[f+" tunni",f+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[f+" kuu",f+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[f+" aasta",f+" aastat"]};return p?L[M][2]?L[M][2]:L[M][1]:S?L[M][0]:L[M][1]}f.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:processRelativeTime,ss:processRelativeTime,m:processRelativeTime,mm:processRelativeTime,h:processRelativeTime,hh:processRelativeTime,d:processRelativeTime,dd:"%d päeva",M:processRelativeTime,MM:processRelativeTime,y:processRelativeTime,yy:processRelativeTime},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -90,7 +94,7 @@ f.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_ //! moment.js locale configuration f.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,M=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];f.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:p,monthsShortRegex:p,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:M,longMonthsParse:M,shortMonthsParse:M,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(f,p){switch(p){case"D":return f+(1===f?"er":"");default:case"M":case"Q":case"DDD":case"d":return f+(1===f?"er":"e");case"w":case"W":return f+(1===f?"re":"e")}},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,M=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];f.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:p,monthsShortRegex:p,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:M,longMonthsParse:M,shortMonthsParse:M,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(f,p){switch(p){case"D":return f+(1===f?"er":"");default:case"M":case"Q":case"DDD":case"d":return f+(1===f?"er":"e");case"w":case"W":return f+(1===f?"re":"e")}},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(f,p){switch(p){default:case"M":case"Q":case"D":case"DDD":case"d":return f+(1===f?"er":"e");case"w":case"W":return f+(1===f?"re":"e")}}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -112,11 +116,11 @@ var p={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0 //! moment.js locale configuration f.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(f){return 2===f?"שעתיים":f+" שעות"},d:"יום",dd:function(f){return 2===f?"יומיים":f+" ימים"},M:"חודש",MM:function(f){return 2===f?"חודשיים":f+" חודשים"},y:"שנה",yy:function(f){return 2===f?"שנתיים":f%10==0&&10!==f?f+" שנה":f+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(f){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(f)},meridiem:function(f,p,M){return f<5?"לפנות בוקר":f<10?"בבוקר":f<12?M?'לפנה"צ':"לפני הצהריים":f<18?M?'אחה"צ':"אחרי הצהריים":"בערב"}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},M={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};f.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(f){return f.replace(/[१२३४५६७८९०]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(f,p){return 12===f&&(f=0),"रात"===p?f<4?f:f+12:"सुबह"===p?f:"दोपहर"===p?f>=10?f:f+12:"शाम"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"रात":f<10?"सुबह":f<17?"दोपहर":f<20?"शाम":"रात"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},M={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},S=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];f.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:S,longMonthsParse:S,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(f){return f.replace(/[१२३४५६७८९०]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(f,p){return 12===f&&(f=0),"रात"===p?f<4?f:f+12:"सुबह"===p?f:"दोपहर"===p?f>=10?f:f+12:"शाम"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"रात":f<10?"सुबह":f<17?"दोपहर":f<20?"शाम":"रात"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration function translate(f,p,M){var S=f+" ";switch(M){case"ss":return S+=1===f?"sekunda":2===f||3===f||4===f?"sekunde":"sekundi";case"m":return p?"jedna minuta":"jedne minute";case"mm":return S+=1===f?"minuta":2===f||3===f||4===f?"minute":"minuta";case"h":return p?"jedan sat":"jednog sata";case"hh":return S+=1===f?"sat":2===f||3===f||4===f?"sata":"sati";case"dd":return S+=1===f?"dan":"dana";case"MM":return S+=1===f?"mjesec":2===f||3===f||4===f?"mjeseca":"mjeseci";case"yy":return S+=1===f?"godina":2===f||3===f||4===f?"godine":"godina"}}f.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:translate,m:translate,mm:translate,h:translate,hh:translate,d:"dan",dd:translate,M:"mjesec",MM:translate,y:"godinu",yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function translate(f,p,M,S){var L=f;switch(M){case"s":return S||p?"néhány másodperc":"néhány másodperce";case"ss":return L+(S||p)?" másodperc":" másodperce";case"m":return"egy"+(S||p?" perc":" perce");case"mm":return L+(S||p?" perc":" perce");case"h":return"egy"+(S||p?" óra":" órája");case"hh":return L+(S||p?" óra":" órája");case"d":return"egy"+(S||p?" nap":" napja");case"dd":return L+(S||p?" nap":" napja");case"M":return"egy"+(S||p?" hónap":" hónapja");case"MM":return L+(S||p?" hónap":" hónapja");case"y":return"egy"+(S||p?" év":" éve");case"yy":return L+(S||p?" év":" éve")}return""}function week(f){return(f?"":"[múlt] ")+"["+p[this.day()]+"] LT[-kor]"}f.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(f){return"u"===f.charAt(1).toLowerCase()},meridiem:function(f,p,M){return f<12?!0===M?"de":"DE":!0===M?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return week.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return week.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:translate,ss:translate,m:translate,mm:translate,h:translate,hh:translate,d:translate,dd:translate,M:translate,MM:translate,y:translate,yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function translate(f,p,M,S){var L=f;switch(M){case"s":return S||p?"néhány másodperc":"néhány másodperce";case"ss":return L+(S||p)?" másodperc":" másodperce";case"m":return"egy"+(S||p?" perc":" perce");case"mm":return L+(S||p?" perc":" perce");case"h":return"egy"+(S||p?" óra":" órája");case"hh":return L+(S||p?" óra":" órája");case"d":return"egy"+(S||p?" nap":" napja");case"dd":return L+(S||p?" nap":" napja");case"M":return"egy"+(S||p?" hónap":" hónapja");case"MM":return L+(S||p?" hónap":" hónapja");case"y":return"egy"+(S||p?" év":" éve");case"yy":return L+(S||p?" év":" éve")}return""}function week(f){return(f?"":"[múlt] ")+"["+p[this.day()]+"] LT[-kor]"}f.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(f){return"u"===f.charAt(1).toLowerCase()},meridiem:function(f,p,M){return f<12?!0===M?"de":"DE":!0===M?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return week.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return week.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:translate,ss:translate,m:translate,mm:translate,h:translate,hh:translate,d:translate,dd:translate,M:translate,MM:translate,y:translate,yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(f){return/^(ցերեկվա|երեկոյան)$/.test(f)},meridiem:function(f){return f<4?"գիշերվա":f<12?"առավոտվա":f<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(f,p){switch(p){case"DDD":case"w":case"W":case"DDDo":return 1===f?f+"-ին":f+"-րդ";default:return f}},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -124,7 +128,7 @@ f.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_ //! moment.js locale configuration function plural(f){return f%100==11||f%10!=1}function translate(f,p,M,S){var L=f+" ";switch(M){case"s":return p||S?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return plural(f)?L+(p||S?"sekúndur":"sekúndum"):L+"sekúnda";case"m":return p?"mínúta":"mínútu";case"mm":return plural(f)?L+(p||S?"mínútur":"mínútum"):p?L+"mínúta":L+"mínútu";case"hh":return plural(f)?L+(p||S?"klukkustundir":"klukkustundum"):L+"klukkustund";case"d":return p?"dagur":S?"dag":"degi";case"dd":return plural(f)?p?L+"dagar":L+(S?"daga":"dögum"):p?L+"dagur":L+(S?"dag":"degi");case"M":return p?"mánuður":S?"mánuð":"mánuði";case"MM":return plural(f)?p?L+"mánuðir":L+(S?"mánuði":"mánuðum"):p?L+"mánuður":L+(S?"mánuð":"mánuði");case"y":return p||S?"ár":"ári";case"yy":return plural(f)?L+(p||S?"ár":"árum"):L+(p||S?"ár":"ári")}}f.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:translate,ss:translate,m:translate,mm:translate,h:"klukkustund",hh:translate,d:translate,dd:translate,M:translate,MM:translate,y:translate,yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(f){return(/^[0-9].+$/.test(f)?"tra":"in")+" "+f},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -174,29 +178,29 @@ f.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_ //! moment.js locale configuration var p={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},M={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};f.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(f){return f.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},M={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};f.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(f){return f.replace(/[१२३४५६७८९०]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(f,p){return 12===f&&(f=0),"राति"===p?f<4?f:f+12:"बिहान"===p?f:"दिउँसो"===p?f>=10?f:f+12:"साँझ"===p?f+12:void 0},meridiem:function(f,p,M){return f<3?"राति":f<12?"बिहान":f<16?"दिउँसो":f<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),M="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),S=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],L=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;f.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(f){return f+(1===f||8===f||f>=20?"ste":"de")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),M="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),S=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],L=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;f.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(f){return f+(1===f||8===f||f>=20?"ste":"de")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),M="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),S=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],L=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;f.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(f,S){return f?/-MMM-/.test(S)?M[f.month()]:p[f.month()]:p},monthsRegex:L,monthsShortRegex:L,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(f){return f+(1===f||8===f||f>=20?"ste":"de")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(f,p){var M=1===f?"r":2===f?"n":3===f?"r":4===f?"t":"è";return"w"!==p&&"W"!==p||(M="a"),f+M},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},M={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};f.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(f){return f.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(f){return M[f]}))},postformat:function(f){return f.replace(/\d/g,(function(f){return p[f]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(f,p){return 12===f&&(f=0),"ਰਾਤ"===p?f<4?f:f+12:"ਸਵੇਰ"===p?f:"ਦੁਪਹਿਰ"===p?f>=10?f:f+12:"ਸ਼ਾਮ"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"ਰਾਤ":f<10?"ਸਵੇਰ":f<17?"ਦੁਪਹਿਰ":f<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),M="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function plural(f){return f%10<5&&f%10>1&&~~(f/10)%10!=1}function translate(f,p,M){var S=f+" ";switch(M){case"ss":return S+(plural(f)?"sekundy":"sekund");case"m":return p?"minuta":"minutę";case"mm":return S+(plural(f)?"minuty":"minut");case"h":return p?"godzina":"godzinę";case"hh":return S+(plural(f)?"godziny":"godzin");case"MM":return S+(plural(f)?"miesiące":"miesięcy");case"yy":return S+(plural(f)?"lata":"lat")}}f.defineLocale("pl",{months:function(f,S){return f?""===S?"("+M[f.month()]+"|"+p[f.month()]+")":/D MMMM/.test(S)?M[f.month()]:p[f.month()]:p},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:translate,m:translate,mm:translate,h:translate,hh:translate,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:translate,y:"rok",yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),M="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),S=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function plural(f){return f%10<5&&f%10>1&&~~(f/10)%10!=1}function translate(f,p,M){var S=f+" ";switch(M){case"ss":return S+(plural(f)?"sekundy":"sekund");case"m":return p?"minuta":"minutę";case"mm":return S+(plural(f)?"minuty":"minut");case"h":return p?"godzina":"godzinę";case"hh":return S+(plural(f)?"godziny":"godzin");case"ww":return S+(plural(f)?"tygodnie":"tygodni");case"MM":return S+(plural(f)?"miesiące":"miesięcy");case"yy":return S+(plural(f)?"lata":"lat")}}f.defineLocale("pl",{months:function(f,S){return f?/D MMMM/.test(S)?M[f.month()]:p[f.month()]:p},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:S,longMonthsParse:S,shortMonthsParse:S,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:translate,m:translate,mm:translate,h:translate,hh:translate,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:translate,M:"miesiąc",MM:translate,y:"rok",yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -function relativeTimeWithPlural(f,p,M){var S=" ";return(f%100>=20||f>=100&&f%100==0)&&(S=" de "),f+S+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[M]}f.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:relativeTimeWithPlural,m:"un minut",mm:relativeTimeWithPlural,h:"o oră",hh:relativeTimeWithPlural,d:"o zi",dd:relativeTimeWithPlural,M:"o lună",MM:relativeTimeWithPlural,y:"un an",yy:relativeTimeWithPlural},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +function relativeTimeWithPlural(f,p,M){var S=" ";return(f%100>=20||f>=100&&f%100==0)&&(S=" de "),f+S+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[M]}f.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:relativeTimeWithPlural,m:"un minut",mm:relativeTimeWithPlural,h:"o oră",hh:relativeTimeWithPlural,d:"o zi",dd:relativeTimeWithPlural,w:"o săptămână",ww:relativeTimeWithPlural,M:"o lună",MM:relativeTimeWithPlural,y:"un an",yy:relativeTimeWithPlural},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -function relativeTimeWithPlural(f,p,M){return"m"===M?p?"минута":"минуту":f+" "+function plural(f,p){var M=f.split("_");return p%10==1&&p%100!=11?M[0]:p%10>=2&&p%10<=4&&(p%100<10||p%100>=20)?M[1]:M[2]}({ss:p?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:p?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[M],+f)}var p=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];f.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:p,longMonthsParse:p,shortMonthsParse:p,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(f){if(f.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(f){if(f.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:relativeTimeWithPlural,m:relativeTimeWithPlural,mm:relativeTimeWithPlural,h:"час",hh:relativeTimeWithPlural,d:"день",dd:relativeTimeWithPlural,M:"месяц",MM:relativeTimeWithPlural,y:"год",yy:relativeTimeWithPlural},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(f){return/^(дня|вечера)$/.test(f)},meridiem:function(f,p,M){return f<4?"ночи":f<12?"утра":f<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(f,p){switch(p){case"M":case"d":case"DDD":return f+"-й";case"D":return f+"-го";case"w":case"W":return f+"-я";default:return f}},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +function relativeTimeWithPlural(f,p,M){return"m"===M?p?"минута":"минуту":f+" "+function plural(f,p){var M=f.split("_");return p%10==1&&p%100!=11?M[0]:p%10>=2&&p%10<=4&&(p%100<10||p%100>=20)?M[1]:M[2]}({ss:p?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:p?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[M],+f)}var p=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];f.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:p,longMonthsParse:p,shortMonthsParse:p,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(f){if(f.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(f){if(f.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:relativeTimeWithPlural,m:relativeTimeWithPlural,mm:relativeTimeWithPlural,h:"час",hh:relativeTimeWithPlural,d:"день",dd:relativeTimeWithPlural,w:"неделя",ww:relativeTimeWithPlural,M:"месяц",MM:relativeTimeWithPlural,y:"год",yy:relativeTimeWithPlural},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(f){return/^(дня|вечера)$/.test(f)},meridiem:function(f,p,M){return f<4?"ночи":f<12?"утра":f<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(f,p){switch(p){case"M":case"d":case"DDD":return f+"-й";case"D":return f+"-го";case"w":case"W":return f+"-я";default:return f}},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],M=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];f.defineLocale("sd",{months:p,monthsShort:p,weekdays:M,weekdaysShort:M,weekdaysMin:M,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(f){return"شام"===f},meridiem:function(f,p,M){return f<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(f){return f.replace(/،/g,",")},postformat:function(f){return f.replace(/,/g,"،")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -210,9 +214,9 @@ function processRelativeTime(f,p,M,S){var L=f+" ";switch(M){case"s":return p||S? //! moment.js locale configuration f.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(f){return"M"===f.charAt(0)},meridiem:function(f,p,M){return f<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(f,p){return 1===f?p[0]:f>=2&&f<=4?p[1]:p[2]},translate:function(f,M,S){var L=p.words[S];return 1===S.length?M?L[0]:L[1]:f+" "+p.correctGrammaticalCase(f,L)}};f.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:p.translate,m:p.translate,mm:p.translate,h:p.translate,hh:p.translate,d:"dan",dd:p.translate,M:"mesec",MM:p.translate,y:"godinu",yy:p.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(f,p){return 1===f?p[0]:f>=2&&f<=4?p[1]:p[2]},translate:function(f,M,S){var L=p.words[S];return 1===S.length?M?L[0]:L[1]:f+" "+p.correctGrammaticalCase(f,L)}};f.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:p.translate,m:p.translate,mm:p.translate,h:p.translate,hh:p.translate,d:"dan",dd:p.translate,M:"mesec",MM:p.translate,y:"godinu",yy:p.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(f,p){return 1===f?p[0]:f>=2&&f<=4?p[1]:p[2]},translate:function(f,M,S){var L=p.words[S];return 1===S.length?M?L[0]:L[1]:f+" "+p.correctGrammaticalCase(f,L)}};f.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:p.translate,m:p.translate,mm:p.translate,h:p.translate,hh:p.translate,d:"дан",dd:p.translate,M:"месец",MM:p.translate,y:"годину",yy:p.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(f,p){return 1===f?p[0]:f>=2&&f<=4?p[1]:p[2]},translate:function(f,M,S){var L=p.words[S];return 1===S.length?M?L[0]:L[1]:f+" "+p.correctGrammaticalCase(f,L)}};f.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:p.translate,m:p.translate,mm:p.translate,h:p.translate,hh:p.translate,d:"дан",dd:p.translate,M:"месец",MM:p.translate,y:"годину",yy:p.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(f,p,M){return f<11?"ekuseni":f<15?"emini":f<19?"entsambama":"ebusuku"},meridiemHour:function(f,p){return 12===f&&(f=0),"ekuseni"===p?f:"emini"===p?f>=11?f:f+12:"entsambama"===p||"ebusuku"===p?0===f?0:f+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -226,9 +230,9 @@ f.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార //! moment.js locale configuration f.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(f){var p=f%10;return f+(1==~~(f%100/10)?"th":1===p?"st":2===p?"nd":3===p?"rd":"th")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};f.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(f,p){return 12===f&&(f=0),"шаб"===p?f<4?f:f+12:"субҳ"===p?f:"рӯз"===p?f>=11?f:f+12:"бегоҳ"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"шаб":f<11?"субҳ":f<16?"рӯз":f<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(f){return f+(p[f]||p[f%10]||p[f>=100?100:null])},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};f.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(f,p){return 12===f&&(f=0),"шаб"===p?f<4?f:f+12:"субҳ"===p?f:"рӯз"===p?f>=11?f:f+12:"бегоҳ"===p?f+12:void 0},meridiem:function(f,p,M){return f<4?"шаб":f<11?"субҳ":f<16?"рӯз":f<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(f){return f+(p[f]||p[f%10]||p[f>=100?100:null])},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(f){return"หลังเที่ยง"===f},meridiem:function(f,p,M){return f<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(f){return"หลังเที่ยง"===f},meridiem:function(f,p,M){return f<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration var p={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};f.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(f,M){switch(M){case"d":case"D":case"Do":case"DD":return f;default:if(0===f)return f+"'unjy";var S=f%10;return f+(p[S]||p[f%100-S]||p[f>=100?100:null])}},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -236,7 +240,7 @@ f.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agost //! moment.js locale configuration var p="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function translate(f,M,S,L){var Y=function numberAsNoun(f){var M=Math.floor(f%1e3/100),S=Math.floor(f%100/10),L=f%10,Y="";return M>0&&(Y+=p[M]+"vatlh"),S>0&&(Y+=(""!==Y?" ":"")+p[S]+"maH"),L>0&&(Y+=(""!==Y?" ":"")+p[L]),""===Y?"pagh":Y}(f);switch(S){case"ss":return Y+" lup";case"mm":return Y+" tup";case"hh":return Y+" rep";case"dd":return Y+" jaj";case"MM":return Y+" jar";case"yy":return Y+" DIS"}}f.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function translateFuture(f){var p=f;return p=-1!==f.indexOf("jaj")?p.slice(0,-3)+"leS":-1!==f.indexOf("jar")?p.slice(0,-3)+"waQ":-1!==f.indexOf("DIS")?p.slice(0,-3)+"nem":p+" pIq"},past:function translatePast(f){var p=f;return p=-1!==f.indexOf("jaj")?p.slice(0,-3)+"Hu’":-1!==f.indexOf("jar")?p.slice(0,-3)+"wen":-1!==f.indexOf("DIS")?p.slice(0,-3)+"ben":p+" ret"},s:"puS lup",ss:translate,m:"wa’ tup",mm:translate,h:"wa’ rep",hh:translate,d:"wa’ jaj",dd:translate,M:"wa’ jar",MM:translate,y:"wa’ DIS",yy:translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -var p={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};f.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(f,p,M){return f<12?M?"öö":"ÖÖ":M?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(f){return"ös"===f||"ÖS"===f},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(f,M){switch(M){case"d":case"D":case"Do":case"DD":return f;default:if(0===f)return f+"'ıncı";var S=f%10;return f+(p[S]||p[f%100-S]||p[f>=100?100:null])}},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; +var p={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};f.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(f,p,M){return f<12?M?"öö":"ÖÖ":M?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(f){return"ös"===f||"ÖS"===f},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(f,M){switch(M){case"d":case"D":case"Do":case"DD":return f;default:if(0===f)return f+"'ıncı";var S=f%10;return f+(p[S]||p[f%100-S]||p[f>=100?100:null])}},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration function processRelativeTime(f,p,M,S){var L={s:["viensas secunds","'iensas secunds"],ss:[f+" secunds",f+" secunds"],m:["'n míut","'iens míut"],mm:[f+" míuts",f+" míuts"],h:["'n þora","'iensa þora"],hh:[f+" þoras",f+" þoras"],d:["'n ziua","'iensa ziua"],dd:[f+" ziuas",f+" ziuas"],M:["'n mes","'iens mes"],MM:[f+" mesen",f+" mesen"],y:["'n ar","'iens ar"],yy:[f+" ars",f+" ars"]};return S||p?L[M][0]:L[M][1]}f.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(f){return"d'o"===f.toLowerCase()},meridiem:function(f,p,M){return f>11?M?"d'o":"D'O":M?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:processRelativeTime,ss:processRelativeTime,m:processRelativeTime,mm:processRelativeTime,h:processRelativeTime,hh:processRelativeTime,d:processRelativeTime,dd:processRelativeTime,M:processRelativeTime,MM:processRelativeTime,y:processRelativeTime,yy:processRelativeTime},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -254,13 +258,13 @@ f.defineLocale("uz",{months:"январ_феврал_март_апрел_май_ //! moment.js locale configuration f.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(f){return/^ch$/i.test(f)},meridiem:function(f,p,M){return f<12?M?"sa":"SA":M?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(f){return f},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(f){return/^ch$/i.test(f)},meridiem:function(f,p,M){return f<12?M?"sa":"SA":M?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(f){return f},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(f){var p=f%10;return f+(1==~~(f%100/10)?"th":1===p?"st":2===p?"nd":3===p?"rd":"th")},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration -f.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(f,p){return 12===f&&(f=0),"凌晨"===p||"早上"===p||"上午"===p?f:"下午"===p||"晚上"===p?f+12:f>=11?f:f+12},meridiem:function(f,p,M){var S=100*f+p;return S<600?"凌晨":S<900?"早上":S<1130?"上午":S<1230?"中午":S<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(f){return f.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(f){return this.week()!==f.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(f,p){switch(p){case"d":case"D":case"DDD":return f+"日";case"M":return f+"月";case"w":case"W":return f+"周";default:return f}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; +f.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(f,p){return 12===f&&(f=0),"凌晨"===p||"早上"===p||"上午"===p?f:"下午"===p||"晚上"===p?f+12:f>=11?f:f+12},meridiem:function(f,p,M){var S=100*f+p;return S<600?"凌晨":S<900?"早上":S<1130?"上午":S<1230?"中午":S<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(f){return f.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(f){return this.week()!==f.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(f,p){switch(p){case"d":case"D":case"DDD":return f+"日";case"M":return f+"月";case"w":case"W":return f+"周";default:return f}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration f.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(f,p){return 12===f&&(f=0),"凌晨"===p||"早上"===p||"上午"===p?f:"中午"===p?f>=11?f:f+12:"下午"===p||"晚上"===p?f+12:void 0},meridiem:function(f,p,M){var S=100*f+p;return S<600?"凌晨":S<900?"早上":S<1200?"上午":1200===S?"中午":S<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(f,p){switch(p){case"d":case"D":case"DDD":return f+"日";case"M":return f+"月";case"w":case"W":return f+"週";default:return f}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(M(0))},function(f,p,M){!function(f){"use strict"; //! moment.js locale configuration @@ -268,45 +272,45 @@ f.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月 //! moment.js locale configuration f.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(f,p){return 12===f&&(f=0),"凌晨"===p||"早上"===p||"上午"===p?f:"中午"===p?f>=11?f:f+12:"下午"===p||"晚上"===p?f+12:void 0},meridiem:function(f,p,M){var S=100*f+p;return S<600?"凌晨":S<900?"早上":S<1130?"上午":S<1230?"中午":S<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(f,p){switch(p){case"d":case"D":case"DDD":return f+"日";case"M":return f+"月";case"w":case"W":return f+"週";default:return f}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(M(0))},function(f,p,M){ /*! - * Chart.js v2.9.3 + * Chart.js v2.9.4 * https://www.chartjs.org - * (c) 2019 Chart.js Contributors + * (c) 2020 Chart.js Contributors * Released under the MIT License */ -f.exports=function(f){"use strict";f=f&&f.hasOwnProperty("default")?f.default:f;var p={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},M=function createCommonjsModule(f,p){return f(p={exports:{}},p.exports),p.exports}((function(f){var M={};for(var S in p)p.hasOwnProperty(S)&&(M[p[S]]=S);var L=f.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Y in L)if(L.hasOwnProperty(Y)){if(!("channels"in L[Y]))throw new Error("missing channels property: "+Y);if(!("labels"in L[Y]))throw new Error("missing channel labels property: "+Y);if(L[Y].labels.length!==L[Y].channels)throw new Error("channel and label counts mismatch: "+Y);var E=L[Y].channels,O=L[Y].labels;delete L[Y].channels,delete L[Y].labels,Object.defineProperty(L[Y],"channels",{value:E}),Object.defineProperty(L[Y],"labels",{value:O})}L.rgb.hsl=function(f){var p,M,S=f[0]/255,L=f[1]/255,Y=f[2]/255,E=Math.min(S,L,Y),O=Math.max(S,L,Y),R=O-E;return O===E?p=0:S===O?p=(L-Y)/R:L===O?p=2+(Y-S)/R:Y===O&&(p=4+(S-L)/R),(p=Math.min(60*p,360))<0&&(p+=360),M=(E+O)/2,[p,100*(O===E?0:M<=.5?R/(O+E):R/(2-O-E)),100*M]},L.rgb.hsv=function(f){var p,M,S,L,Y,E=f[0]/255,O=f[1]/255,R=f[2]/255,B=Math.max(E,O,R),W=B-Math.min(E,O,R),diffc=function(f){return(B-f)/6/W+.5};return 0===W?L=Y=0:(Y=W/B,p=diffc(E),M=diffc(O),S=diffc(R),E===B?L=S-M:O===B?L=1/3+p-S:R===B&&(L=2/3+M-p),L<0?L+=1:L>1&&(L-=1)),[360*L,100*Y,100*B]},L.rgb.hwb=function(f){var p=f[0],M=f[1],S=f[2];return[L.rgb.hsl(f)[0],1/255*Math.min(p,Math.min(M,S))*100,100*(S=1-1/255*Math.max(p,Math.max(M,S)))]},L.rgb.cmyk=function(f){var p,M=f[0]/255,S=f[1]/255,L=f[2]/255;return[100*((1-M-(p=Math.min(1-M,1-S,1-L)))/(1-p)||0),100*((1-S-p)/(1-p)||0),100*((1-L-p)/(1-p)||0),100*p]},L.rgb.keyword=function(f){var S=M[f];if(S)return S;var L,Y,E,O=1/0;for(var R in p)if(p.hasOwnProperty(R)){var B=p[R],W=(Y=f,E=B,Math.pow(Y[0]-E[0],2)+Math.pow(Y[1]-E[1],2)+Math.pow(Y[2]-E[2],2));W.04045?Math.pow((p+.055)/1.055,2.4):p/12.92)+.3576*(M=M>.04045?Math.pow((M+.055)/1.055,2.4):M/12.92)+.1805*(S=S>.04045?Math.pow((S+.055)/1.055,2.4):S/12.92)),100*(.2126*p+.7152*M+.0722*S),100*(.0193*p+.1192*M+.9505*S)]},L.rgb.lab=function(f){var p=L.rgb.xyz(f),M=p[0],S=p[1],Y=p[2];return S/=100,Y/=108.883,M=(M/=95.047)>.008856?Math.pow(M,1/3):7.787*M+16/116,[116*(S=S>.008856?Math.pow(S,1/3):7.787*S+16/116)-16,500*(M-S),200*(S-(Y=Y>.008856?Math.pow(Y,1/3):7.787*Y+16/116))]},L.hsl.rgb=function(f){var p,M,S,L,Y,E=f[0]/360,O=f[1]/100,R=f[2]/100;if(0===O)return[Y=255*R,Y,Y];p=2*R-(M=R<.5?R*(1+O):R+O-R*O),L=[0,0,0];for(var B=0;B<3;B++)(S=E+1/3*-(B-1))<0&&S++,S>1&&S--,Y=6*S<1?p+6*(M-p)*S:2*S<1?M:3*S<2?p+(M-p)*(2/3-S)*6:p,L[B]=255*Y;return L},L.hsl.hsv=function(f){var p=f[0],M=f[1]/100,S=f[2]/100,L=M,Y=Math.max(S,.01);return M*=(S*=2)<=1?S:2-S,L*=Y<=1?Y:2-Y,[p,100*(0===S?2*L/(Y+L):2*M/(S+M)),(S+M)/2*100]},L.hsv.rgb=function(f){var p=f[0]/60,M=f[1]/100,S=f[2]/100,L=Math.floor(p)%6,Y=p-Math.floor(p),E=255*S*(1-M),O=255*S*(1-M*Y),R=255*S*(1-M*(1-Y));switch(S*=255,L){case 0:return[S,R,E];case 1:return[O,S,E];case 2:return[E,S,R];case 3:return[E,O,S];case 4:return[R,E,S];case 5:return[S,E,O]}},L.hsv.hsl=function(f){var p,M,S,L=f[0],Y=f[1]/100,E=f[2]/100,O=Math.max(E,.01);return S=(2-Y)*E,M=Y*O,[L,100*(M=(M/=(p=(2-Y)*O)<=1?p:2-p)||0),100*(S/=2)]},L.hwb.rgb=function(f){var p,M,S,L,Y,E,O,R=f[0]/360,B=f[1]/100,W=f[2]/100,G=B+W;switch(G>1&&(B/=G,W/=G),S=6*R-(p=Math.floor(6*R)),0!=(1&p)&&(S=1-S),L=B+S*((M=1-W)-B),p){default:case 6:case 0:Y=M,E=L,O=B;break;case 1:Y=L,E=M,O=B;break;case 2:Y=B,E=M,O=L;break;case 3:Y=B,E=L,O=M;break;case 4:Y=L,E=B,O=M;break;case 5:Y=M,E=B,O=L}return[255*Y,255*E,255*O]},L.cmyk.rgb=function(f){var p=f[0]/100,M=f[1]/100,S=f[2]/100,L=f[3]/100;return[255*(1-Math.min(1,p*(1-L)+L)),255*(1-Math.min(1,M*(1-L)+L)),255*(1-Math.min(1,S*(1-L)+L))]},L.xyz.rgb=function(f){var p,M,S,L=f[0]/100,Y=f[1]/100,E=f[2]/100;return M=-.9689*L+1.8758*Y+.0415*E,S=.0557*L+-.204*Y+1.057*E,p=(p=3.2406*L+-1.5372*Y+-.4986*E)>.0031308?1.055*Math.pow(p,1/2.4)-.055:12.92*p,M=M>.0031308?1.055*Math.pow(M,1/2.4)-.055:12.92*M,S=S>.0031308?1.055*Math.pow(S,1/2.4)-.055:12.92*S,[255*(p=Math.min(Math.max(0,p),1)),255*(M=Math.min(Math.max(0,M),1)),255*(S=Math.min(Math.max(0,S),1))]},L.xyz.lab=function(f){var p=f[0],M=f[1],S=f[2];return M/=100,S/=108.883,p=(p/=95.047)>.008856?Math.pow(p,1/3):7.787*p+16/116,[116*(M=M>.008856?Math.pow(M,1/3):7.787*M+16/116)-16,500*(p-M),200*(M-(S=S>.008856?Math.pow(S,1/3):7.787*S+16/116))]},L.lab.xyz=function(f){var p,M,S,L=f[0];p=f[1]/500+(M=(L+16)/116),S=M-f[2]/200;var Y=Math.pow(M,3),E=Math.pow(p,3),O=Math.pow(S,3);return M=Y>.008856?Y:(M-16/116)/7.787,p=E>.008856?E:(p-16/116)/7.787,S=O>.008856?O:(S-16/116)/7.787,[p*=95.047,M*=100,S*=108.883]},L.lab.lch=function(f){var p,M=f[0],S=f[1],L=f[2];return(p=360*Math.atan2(L,S)/2/Math.PI)<0&&(p+=360),[M,Math.sqrt(S*S+L*L),p]},L.lch.lab=function(f){var p,M=f[0],S=f[1];return p=f[2]/360*2*Math.PI,[M,S*Math.cos(p),S*Math.sin(p)]},L.rgb.ansi16=function(f){var p=f[0],M=f[1],S=f[2],Y=1 in arguments?arguments[1]:L.rgb.hsv(f)[2];if(0===(Y=Math.round(Y/50)))return 30;var E=30+(Math.round(S/255)<<2|Math.round(M/255)<<1|Math.round(p/255));return 2===Y&&(E+=60),E},L.hsv.ansi16=function(f){return L.rgb.ansi16(L.hsv.rgb(f),f[2])},L.rgb.ansi256=function(f){var p=f[0],M=f[1],S=f[2];return p===M&&M===S?p<8?16:p>248?231:Math.round((p-8)/247*24)+232:16+36*Math.round(p/255*5)+6*Math.round(M/255*5)+Math.round(S/255*5)},L.ansi16.rgb=function(f){var p=f%10;if(0===p||7===p)return f>50&&(p+=3.5),[p=p/10.5*255,p,p];var M=.5*(1+~~(f>50));return[(1&p)*M*255,(p>>1&1)*M*255,(p>>2&1)*M*255]},L.ansi256.rgb=function(f){if(f>=232){var p=10*(f-232)+8;return[p,p,p]}var M;return f-=16,[Math.floor(f/36)/5*255,Math.floor((M=f%36)/6)/5*255,M%6/5*255]},L.rgb.hex=function(f){var p=(((255&Math.round(f[0]))<<16)+((255&Math.round(f[1]))<<8)+(255&Math.round(f[2]))).toString(16).toUpperCase();return"000000".substring(p.length)+p},L.hex.rgb=function(f){var p=f.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!p)return[0,0,0];var M=p[0];3===p[0].length&&(M=M.split("").map((function(f){return f+f})).join(""));var S=parseInt(M,16);return[S>>16&255,S>>8&255,255&S]},L.rgb.hcg=function(f){var p,M=f[0]/255,S=f[1]/255,L=f[2]/255,Y=Math.max(Math.max(M,S),L),E=Math.min(Math.min(M,S),L),O=Y-E;return p=O<=0?0:Y===M?(S-L)/O%6:Y===S?2+(L-M)/O:4+(M-S)/O+4,p/=6,[360*(p%=1),100*O,100*(O<1?E/(1-O):0)]},L.hsl.hcg=function(f){var p=f[1]/100,M=f[2]/100,S=1,L=0;return(S=M<.5?2*p*M:2*p*(1-M))<1&&(L=(M-.5*S)/(1-S)),[f[0],100*S,100*L]},L.hsv.hcg=function(f){var p=f[1]/100,M=f[2]/100,S=p*M,L=0;return S<1&&(L=(M-S)/(1-S)),[f[0],100*S,100*L]},L.hcg.rgb=function(f){var p=f[0]/360,M=f[1]/100,S=f[2]/100;if(0===M)return[255*S,255*S,255*S];var L,Y=[0,0,0],E=p%1*6,O=E%1,R=1-O;switch(Math.floor(E)){case 0:Y[0]=1,Y[1]=O,Y[2]=0;break;case 1:Y[0]=R,Y[1]=1,Y[2]=0;break;case 2:Y[0]=0,Y[1]=1,Y[2]=O;break;case 3:Y[0]=0,Y[1]=R,Y[2]=1;break;case 4:Y[0]=O,Y[1]=0,Y[2]=1;break;default:Y[0]=1,Y[1]=0,Y[2]=R}return L=(1-M)*S,[255*(M*Y[0]+L),255*(M*Y[1]+L),255*(M*Y[2]+L)]},L.hcg.hsv=function(f){var p=f[1]/100,M=p+f[2]/100*(1-p),S=0;return M>0&&(S=p/M),[f[0],100*S,100*M]},L.hcg.hsl=function(f){var p=f[1]/100,M=f[2]/100*(1-p)+.5*p,S=0;return M>0&&M<.5?S=p/(2*M):M>=.5&&M<1&&(S=p/(2*(1-M))),[f[0],100*S,100*M]},L.hcg.hwb=function(f){var p=f[1]/100,M=p+f[2]/100*(1-p);return[f[0],100*(M-p),100*(1-M)]},L.hwb.hcg=function(f){var p=f[1]/100,M=1-f[2]/100,S=M-p,L=0;return S<1&&(L=(M-S)/(1-S)),[f[0],100*S,100*L]},L.apple.rgb=function(f){return[f[0]/65535*255,f[1]/65535*255,f[2]/65535*255]},L.rgb.apple=function(f){return[f[0]/255*65535,f[1]/255*65535,f[2]/255*65535]},L.gray.rgb=function(f){return[f[0]/100*255,f[0]/100*255,f[0]/100*255]},L.gray.hsl=L.gray.hsv=function(f){return[0,0,f[0]]},L.gray.hwb=function(f){return[0,100,f[0]]},L.gray.cmyk=function(f){return[0,0,0,f[0]]},L.gray.lab=function(f){return[f[0],0,0]},L.gray.hex=function(f){var p=255&Math.round(f[0]/100*255),M=((p<<16)+(p<<8)+p).toString(16).toUpperCase();return"000000".substring(M.length)+M},L.rgb.gray=function(f){return[(f[0]+f[1]+f[2])/3/255*100]}}));function deriveBFS(f){var p=function buildGraph(){for(var f={},p=Object.keys(M),S=p.length,L=0;L1&&(p=Array.prototype.slice.call(arguments));var M=f(p);if("object"==typeof M)for(var S=M.length,L=0;L1&&(p=Array.prototype.slice.call(arguments)),f(p))};return"conversion"in f&&(wrappedFn.conversion=f.conversion),wrappedFn}(L)}))}));var L=S,Y={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},E={getRgba:getRgba,getHsla:getHsla,getRgb:function getRgb(f){var p=getRgba(f);return p&&p.slice(0,3)},getHsl:function getHsl(f){var p=getHsla(f);return p&&p.slice(0,3)},getHwb:getHwb,getAlpha:function getAlpha(f){var p=getRgba(f);return p||(p=getHsla(f))||(p=getHwb(f))?p[3]:void 0},hexString:function hexString(f,p){return p=void 0!==p&&3===f.length?p:f[3],"#"+hexDouble(f[0])+hexDouble(f[1])+hexDouble(f[2])+(p>=0&&p<1?hexDouble(Math.round(255*p)):"")},rgbString:function rgbString(f,p){return p<1||f[3]&&f[3]<1?rgbaString(f,p):"rgb("+f[0]+", "+f[1]+", "+f[2]+")"},rgbaString:rgbaString,percentString:function percentString(f,p){if(p<1||f[3]&&f[3]<1)return percentaString(f,p);var M=Math.round(f[0]/255*100),S=Math.round(f[1]/255*100),L=Math.round(f[2]/255*100);return"rgb("+M+"%, "+S+"%, "+L+"%)"},percentaString:percentaString,hslString:function hslString(f,p){return p<1||f[3]&&f[3]<1?hslaString(f,p):"hsl("+f[0]+", "+f[1]+"%, "+f[2]+"%)"},hslaString:hslaString,hwbString:function hwbString(f,p){return void 0===p&&(p=void 0!==f[3]?f[3]:1),"hwb("+f[0]+", "+f[1]+"%, "+f[2]+"%"+(void 0!==p&&1!==p?", "+p:"")+")"},keyword:function keyword(f){return O[f.slice(0,3)]}};function getRgba(f){if(f){var p=[0,0,0],M=1,S=f.match(/^#([a-fA-F0-9]{3,4})$/i),L="";if(S){L=(S=S[1])[3];for(var E=0;EM?(p+.05)/(M+.05):(M+.05)/(p+.05)},level:function(f){var p=this.contrast(f);return p>=7.1?"AAA":p>=4.5?"AA":""},dark:function(){var f=this.values.rgb;return(299*f[0]+587*f[1]+114*f[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var f=[],p=0;p<3;p++)f[p]=255-this.values.rgb[p];return this.setValues("rgb",f),this},lighten:function(f){var p=this.values.hsl;return p[2]+=p[2]*f,this.setValues("hsl",p),this},darken:function(f){var p=this.values.hsl;return p[2]-=p[2]*f,this.setValues("hsl",p),this},saturate:function(f){var p=this.values.hsl;return p[1]+=p[1]*f,this.setValues("hsl",p),this},desaturate:function(f){var p=this.values.hsl;return p[1]-=p[1]*f,this.setValues("hsl",p),this},whiten:function(f){var p=this.values.hwb;return p[1]+=p[1]*f,this.setValues("hwb",p),this},blacken:function(f){var p=this.values.hwb;return p[2]+=p[2]*f,this.setValues("hwb",p),this},greyscale:function(){var f=this.values.rgb,p=.3*f[0]+.59*f[1]+.11*f[2];return this.setValues("rgb",[p,p,p]),this},clearer:function(f){var p=this.values.alpha;return this.setValues("alpha",p-p*f),this},opaquer:function(f){var p=this.values.alpha;return this.setValues("alpha",p+p*f),this},rotate:function(f){var p=this.values.hsl,M=(p[0]+f)%360;return p[0]=M<0?360+M:M,this.setValues("hsl",p),this},mix:function(f,p){var M=f,S=void 0===p?.5:p,L=2*S-1,Y=this.alpha()-M.alpha(),E=((L*Y==-1?L:(L+Y)/(1+L*Y))+1)/2,O=1-E;return this.rgb(E*this.red()+O*M.red(),E*this.green()+O*M.green(),E*this.blue()+O*M.blue()).alpha(this.alpha()*S+M.alpha()*(1-S))},toJSON:function(){return this.rgb()},clone:function(){var f,p,M=new Color,S=this.values,L=M.values;for(var Y in S)S.hasOwnProperty(Y)&&(f=S[Y],"[object Array]"===(p={}.toString.call(f))?L[Y]=f.slice(0):"[object Number]"===p?L[Y]=f:console.error("unexpected color value:",f));return M}},Color.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Color.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Color.prototype.getValues=function(f){for(var p=this.values,M={},S=0;S=0;L--)p.call(M,f[L],L);else for(L=0;L=1?f:-(Math.sqrt(1-f*f)-1)},easeOutCirc:function(f){return Math.sqrt(1-(f-=1)*f)},easeInOutCirc:function(f){return(f/=.5)<1?-.5*(Math.sqrt(1-f*f)-1):.5*(Math.sqrt(1-(f-=2)*f)+1)},easeInElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:1===f?1:(M||(M=.3),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),-S*Math.pow(2,10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M))},easeOutElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:1===f?1:(M||(M=.3),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),S*Math.pow(2,-10*f)*Math.sin((f-p)*(2*Math.PI)/M)+1)},easeInOutElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:2==(f/=.5)?1:(M||(M=.45),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),f<1?S*Math.pow(2,10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M)*-.5:S*Math.pow(2,-10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M)*.5+1)},easeInBack:function(f){var p=1.70158;return f*f*((p+1)*f-p)},easeOutBack:function(f){var p=1.70158;return(f-=1)*f*((p+1)*f+p)+1},easeInOutBack:function(f){var p=1.70158;return(f/=.5)<1?f*f*((1+(p*=1.525))*f-p)*.5:.5*((f-=2)*f*((1+(p*=1.525))*f+p)+2)},easeInBounce:function(f){return 1-U.easeOutBounce(1-f)},easeOutBounce:function(f){return f<1/2.75?7.5625*f*f:f<2/2.75?7.5625*(f-=1.5/2.75)*f+.75:f<2.5/2.75?7.5625*(f-=2.25/2.75)*f+.9375:7.5625*(f-=2.625/2.75)*f+.984375},easeInOutBounce:function(f){return f<.5?.5*U.easeInBounce(2*f):.5*U.easeOutBounce(2*f-1)+.5}},q={effects:U};V.easingEffects=U;var X=Math.PI,K=X/180,J=2*X,Z=X/2,Q=X/4,ee=2*X/3,te={clear:function(f){f.ctx.clearRect(0,0,f.width,f.height)},roundedRect:function(f,p,M,S,L,Y){if(Y){var E=Math.min(Y,L/2,S/2),O=p+E,R=M+E,B=p+S-E,W=M+L-E;f.moveTo(p,R),Op.left-1e-6&&f.xp.top-1e-6&&f.y0&&this.requestAnimationFrame()},advance:function(){for(var f,p,M,S,L=this.animations,Y=0;Y=M?(ce.callback(f.onAnimationComplete,[f],p),p.animating=!1,L.splice(Y,1)):++Y}},_e=ce.options.resolve,ye=["push","pop","shift","splice","unshift"];function unlistenArrayEvents(f,p){var M=f._chartjs;if(M){var S=M.listeners,L=S.indexOf(p);-1!==L&&S.splice(L,1),S.length>0||(ye.forEach((function(p){delete f[p]})),delete f._chartjs)}}var DatasetController=function(f,p){this.initialize(f,p)};ce.extend(DatasetController.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(f,p){var M=this;M.chart=f,M.index=p,M.linkScales(),M.addElements(),M._type=M.getMeta().type},updateIndex:function(f){this.index=f},linkScales:function(){var f=this.getMeta(),p=this.chart,M=p.scales,S=this.getDataset(),L=p.options.scales;null!==f.xAxisID&&f.xAxisID in M&&!S.xAxisID||(f.xAxisID=S.xAxisID||L.xAxes[0].id),null!==f.yAxisID&&f.yAxisID in M&&!S.yAxisID||(f.yAxisID=S.yAxisID||L.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(f){return this.chart.scales[f]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&unlistenArrayEvents(this._data,this)},createMetaDataset:function(){var f=this.datasetElementType;return f&&new f({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(f){var p=this.dataElementType;return p&&new p({_chart:this.chart,_datasetIndex:this.index,_index:f})},addElements:function(){var f,p,M=this.getMeta(),S=this.getDataset().data||[],L=M.data;for(f=0,p=S.length;fM&&this.insertElements(M,S-M)},insertElements:function(f,p){for(var M=0;ML?(Y=L/p.innerRadius,f.arc(E,O,p.innerRadius-L,S+Y,M-Y,!0)):f.arc(E,O,L,S+Math.PI/2,M-Math.PI/2),f.closePath(),f.clip()}function drawBorder(f,p,M){var S="inner"===p.borderAlign;S?(f.lineWidth=2*p.borderWidth,f.lineJoin="round"):(f.lineWidth=p.borderWidth,f.lineJoin="bevel"),M.fullCircles&&function drawFullCircleBorders(f,p,M,S){var L,Y=M.endAngle;for(S&&(M.endAngle=M.startAngle+xe,clipArc(f,M),M.endAngle=Y,M.endAngle===M.startAngle&&M.fullCircles&&(M.endAngle+=xe,M.fullCircles--)),f.beginPath(),f.arc(M.x,M.y,M.innerRadius,M.startAngle+xe,M.startAngle,!0),L=0;LO;)L-=xe;for(;L=E&&L<=O,B=Y>=M.innerRadius&&Y<=M.outerRadius;return R&&B}return!1},getCenterPoint:function(){var f=this._view,p=(f.startAngle+f.endAngle)/2,M=(f.innerRadius+f.outerRadius)/2;return{x:f.x+Math.cos(p)*M,y:f.y+Math.sin(p)*M}},getArea:function(){var f=this._view;return Math.PI*((f.endAngle-f.startAngle)/(2*Math.PI))*(Math.pow(f.outerRadius,2)-Math.pow(f.innerRadius,2))},tooltipPosition:function(){var f=this._view,p=f.startAngle+(f.endAngle-f.startAngle)/2,M=(f.outerRadius-f.innerRadius)/2+f.innerRadius;return{x:f.x+Math.cos(p)*M,y:f.y+Math.sin(p)*M}},draw:function(){var f,p=this._chart.ctx,M=this._view,S="inner"===M.borderAlign?.33:0,L={x:M.x,y:M.y,innerRadius:M.innerRadius,outerRadius:Math.max(M.outerRadius-S,0),pixelMargin:S,startAngle:M.startAngle,endAngle:M.endAngle,fullCircles:Math.floor(M.circumference/xe)};if(p.save(),p.fillStyle=M.backgroundColor,p.strokeStyle=M.borderColor,L.fullCircles){for(L.endAngle=L.startAngle+xe,p.beginPath(),p.arc(L.x,L.y,L.outerRadius,L.startAngle,L.endAngle),p.arc(L.x,L.y,L.innerRadius,L.endAngle,L.startAngle,!0),p.closePath(),f=0;ff.x&&(p=swap(p,"left","right")):f.baseM?M:S,r:R.right||L<0?0:L>p?p:L,b:R.bottom||Y<0?0:Y>M?M:Y,l:R.left||E<0?0:E>p?p:E}}function inRange(f,p,M){var S=null===p,L=null===M,Y=!(!f||S&&L)&&getBarBounds(f);return Y&&(S||p>=Y.left&&p<=Y.right)&&(L||M>=Y.top&&M<=Y.bottom)}re._set("global",{elements:{rectangle:{backgroundColor:Ae,borderColor:Ae,borderSkipped:"bottom",borderWidth:0}}});var Pe=me.extend({_type:"rectangle",draw:function(){var f=this._chart.ctx,p=this._view,M=function boundingRects(f){var p=getBarBounds(f),M=p.right-p.left,S=p.bottom-p.top,L=parseBorderWidth(f,M/2,S/2);return{outer:{x:p.left,y:p.top,w:M,h:S},inner:{x:p.left+L.l,y:p.top+L.t,w:M-L.l-L.r,h:S-L.t-L.b}}}(p),S=M.outer,L=M.inner;f.fillStyle=p.backgroundColor,f.fillRect(S.x,S.y,S.w,S.h),S.w===L.w&&S.h===L.h||(f.save(),f.beginPath(),f.rect(S.x,S.y,S.w,S.h),f.clip(),f.fillStyle=p.borderColor,f.rect(L.x,L.y,L.w,L.h),f.fill("evenodd"),f.restore())},height:function(){var f=this._view;return f.base-f.y},inRange:function(f,p){return inRange(this._view,f,p)},inLabelRange:function(f,p){var M=this._view;return isVertical(M)?inRange(M,f,null):inRange(M,null,p)},inXRange:function(f){return inRange(this._view,f,null)},inYRange:function(f){return inRange(this._view,null,f)},getCenterPoint:function(){var f,p,M=this._view;return isVertical(M)?(f=M.x,p=(M.y+M.base)/2):(f=(M.x+M.base)/2,p=M.y),{x:f,y:p}},getArea:function(){var f=this._view;return isVertical(f)?f.width*Math.abs(f.y-f.base):f.height*Math.abs(f.x-f.base)},tooltipPosition:function(){var f=this._view;return{x:f.x,y:f.y}}}),Ye={},Ie=ke,Ee=Se,Oe=Ce,He=Pe;Ye.Arc=Ie,Ye.Line=Ee,Ye.Point=Oe,Ye.Rectangle=He;var ze=ce._deprecated,Ne=ce.valueOrDefault;function computeFitCategoryTraits(f,p,M){var S,L,Y=M.barThickness,E=p.stackCount,O=p.pixels[f],R=ce.isNullOrUndef(Y)?function computeMinSampleSize(f,p){var M,S,L,Y,E=f._length;for(L=1,Y=p.length;L0?Math.min(E,Math.abs(S-M)):E,M=S;return E}(p.scale,p.pixels):-1;return ce.isNullOrUndef(Y)?(S=R*M.categoryPercentage,L=M.barPercentage):(S=Y*E,L=1),{chunk:S/E,ratio:L,start:O-S/2}}re._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),re._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var je=we.extend({dataElementType:Ye.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var f,p,M=this;we.prototype.initialize.apply(M,arguments),(f=M.getMeta()).stack=M.getDataset().stack,f.bar=!0,p=M._getIndexScale().options,ze("bar chart",p.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),ze("bar chart",p.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),ze("bar chart",p.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),ze("bar chart",M._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),ze("bar chart",p.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(f){var p,M,S=this.getMeta().data;for(this._ruler=this.getRuler(),p=0,M=S.length;p=0&&X.min>=0?X.min:X.max,ee=void 0===X.start?X.end:X.max>=0&&X.min>=0?X.max-X.min:X.min-X.max,te=q.length;if(J||void 0===J&&void 0!==Z)for(S=0;S=0&&B.max>=0?B.max:B.min,(X.min<0&&Y<0||X.max>=0&&Y>0)&&(Q+=Y));return E=G.getPixelForValue(Q),R=(O=G.getPixelForValue(Q+ee))-E,void 0!==K&&Math.abs(R)=0&&!V||ee<0&&V?E-K:E+K),{size:R,base:E,head:O,center:O+R/2}},calculateBarIndexPixels:function(f,p,M,S){var L="flex"===S.barThickness?function computeFlexCategoryTraits(f,p,M){var S,L=p.pixels,Y=L[f],E=f>0?L[f-1]:null,O=f=Ge?-Ve:Z<-Ge?Ve:0)+K,ee=Math.cos(Z),te=Math.sin(Z),ne=Math.cos(Q),ie=Math.sin(Q),re=Z<=0&&Q>=0||Q>=Ve,ae=Z<=Ue&&Q>=Ue||Q>=Ve+Ue,oe=Z<=-Ue&&Q>=-Ue||Q>=Ge+Ue,se=Z===-Ge||Q>=Ge?-1:Math.min(ee,ee*X,ne,ne*X),le=oe?-1:Math.min(te,te*X,ie,ie*X),ce=re?1:Math.max(ee,ee*X,ne,ne*X),de=ae?1:Math.max(te,te*X,ie,ie*X);B=(ce-se)/2,W=(de-le)/2,G=-(ce+se)/2,V=-(de+le)/2}for(S=0,L=q.length;S0&&!isNaN(f)?Ve*(Math.abs(f)/p):0},getMaxBorderWidth:function(f){var p,M,S,L,Y,E,O,R,B=0,W=this.chart;if(!f)for(p=0,M=W.data.datasets.length;p(B=O>B?O:B)?R:B);return B},setHoverStyle:function(f){var p=f._model,M=f._options,S=ce.getHoverColor;f.$previousStyle={backgroundColor:p.backgroundColor,borderColor:p.borderColor,borderWidth:p.borderWidth},p.backgroundColor=We(M.hoverBackgroundColor,S(M.backgroundColor)),p.borderColor=We(M.hoverBorderColor,S(M.borderColor)),p.borderWidth=We(M.hoverBorderWidth,M.borderWidth)},_getRingWeightOffset:function(f){for(var p=0,M=0;M0&&Je(R[f-1]._model,O)&&(M.controlPointPreviousX=capControlPoint(M.controlPointPreviousX,O.left,O.right),M.controlPointPreviousY=capControlPoint(M.controlPointPreviousY,O.top,O.bottom)),f0&&(Y=f.getDatasetMeta(Y[0]._datasetIndex).data),Y},"x-axis":function(f,p){return indexMode(f,p,{intersect:!1})},point:function(f,p){return getIntersectItems(f,getRelativePosition(p,f))},nearest:function(f,p,M){var S=getRelativePosition(p,f);M.axis=M.axis||"xy";var L=getDistanceMetricForAxis(M.axis);return getNearestItems(f,S,M.intersect,L)},x:function(f,p,M){var S=getRelativePosition(p,f),L=[],Y=!1;return parseVisibleItems(f,(function(f){f.inXRange(S.x)&&L.push(f),f.inRange(S.x,S.y)&&(Y=!0)})),M.intersect&&!Y&&(L=[]),L},y:function(f,p,M){var S=getRelativePosition(p,f),L=[],Y=!1;return parseVisibleItems(f,(function(f){f.inYRange(S.y)&&L.push(f),f.inRange(S.x,S.y)&&(Y=!0)})),M.intersect&&!Y&&(L=[]),L}}},ot=ce.extend;function filterByPosition(f,p){return ce.where(f,(function(f){return f.pos===p}))}function sortByWeight(f,p){return f.sort((function(f,M){var S=p?M:f,L=p?f:M;return S.weight===L.weight?S.index-L.index:S.weight-L.weight}))}function getCombinedMax(f,p,M,S){return Math.max(f[M],p[M])+Math.max(f[S],p[S])}function updateDims(f,p,M){var S,L,Y=M.box,E=f.maxPadding;if(M.size&&(f[M.pos]-=M.size),M.size=M.horizontal?Y.height:Y.width,f[M.pos]+=M.size,Y.getPadding){var O=Y.getPadding();E.top=Math.max(E.top,O.top),E.left=Math.max(E.left,O.left),E.bottom=Math.max(E.bottom,O.bottom),E.right=Math.max(E.right,O.right)}if(S=p.outerWidth-getCombinedMax(E,f,"left","right"),L=p.outerHeight-getCombinedMax(E,f,"top","bottom"),S!==f.w||L!==f.h)return f.w=S,f.h=L,M.horizontal?S!==f.w:L!==f.h}function getMargins(f,p){var M=p.maxPadding;function marginForPositions(f){var S={left:0,top:0,right:0,bottom:0};return f.forEach((function(f){S[f]=Math.max(p[f],M[f])})),S}return marginForPositions(f?["left","right"]:["top","bottom"])}function fitBoxes(f,p,M){var S,L,Y,E,O,R,B=[];for(S=0,L=f.length;S div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n"})),ct=["animationstart","webkitAnimationStart"],dt={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function readUsedSize(f,p){var M=ce.getStyle(f,p),S=M&&M.match(/^(\d+)(\.\d+)?px$/);return S?Number(S[1]):void 0}var ut=!!function(){var f=!1;try{var p=Object.defineProperty({},"passive",{get:function(){f=!0}});window.addEventListener("e",null,p)}catch(f){}return f}()&&{passive:!0};function addListener(f,p,M){f.addEventListener(p,M,ut)}function removeListener(f,p,M){f.removeEventListener(p,M,ut)}function createEvent(f,p,M,S,L){return{type:f,chart:p,native:L||null,x:void 0!==M?M:null,y:void 0!==S?S:null}}function createDiv(f){var p=document.createElement("div");return p.className=f||"",p}function addResizeListener(f,p,M){var S=f.$chartjs||(f.$chartjs={}),L=S.resizer=function createResizer(f){var p=createDiv("chartjs-size-monitor"),M=createDiv("chartjs-size-monitor-expand"),S=createDiv("chartjs-size-monitor-shrink");M.appendChild(createDiv()),S.appendChild(createDiv()),p.appendChild(M),p.appendChild(S),p._reset=function(){M.scrollLeft=1e6,M.scrollTop=1e6,S.scrollLeft=1e6,S.scrollTop=1e6};var onScroll=function(){p._reset(),f()};return addListener(M,"scroll",onScroll.bind(M,"expand")),addListener(S,"scroll",onScroll.bind(S,"shrink")),p}(function throttled(f,p){var M=!1,S=[];return function(){S=Array.prototype.slice.call(arguments),p=p||this,M||(M=!0,ce.requestAnimFrame.call(window,(function(){M=!1,f.apply(p,S)})))}}((function(){if(S.resizer){var L=M.options.maintainAspectRatio&&f.parentNode,Y=L?L.clientWidth:0;p(createEvent("resize",M)),L&&L.clientWidth0){var Y=f[0];Y.label?M=Y.label:Y.xLabel?M=Y.xLabel:L>0&&Y.index-1?f.split("\n"):f}function getBaseModel(f){var p=re.global;return{xPadding:f.xPadding,yPadding:f.yPadding,xAlign:f.xAlign,yAlign:f.yAlign,rtl:f.rtl,textDirection:f.textDirection,bodyFontColor:f.bodyFontColor,_bodyFontFamily:bt(f.bodyFontFamily,p.defaultFontFamily),_bodyFontStyle:bt(f.bodyFontStyle,p.defaultFontStyle),_bodyAlign:f.bodyAlign,bodyFontSize:bt(f.bodyFontSize,p.defaultFontSize),bodySpacing:f.bodySpacing,titleFontColor:f.titleFontColor,_titleFontFamily:bt(f.titleFontFamily,p.defaultFontFamily),_titleFontStyle:bt(f.titleFontStyle,p.defaultFontStyle),titleFontSize:bt(f.titleFontSize,p.defaultFontSize),_titleAlign:f.titleAlign,titleSpacing:f.titleSpacing,titleMarginBottom:f.titleMarginBottom,footerFontColor:f.footerFontColor,_footerFontFamily:bt(f.footerFontFamily,p.defaultFontFamily),_footerFontStyle:bt(f.footerFontStyle,p.defaultFontStyle),footerFontSize:bt(f.footerFontSize,p.defaultFontSize),_footerAlign:f.footerAlign,footerSpacing:f.footerSpacing,footerMarginTop:f.footerMarginTop,caretSize:f.caretSize,cornerRadius:f.cornerRadius,backgroundColor:f.backgroundColor,opacity:0,legendColorBackground:f.multiKeyBackground,displayColors:f.displayColors,borderColor:f.borderColor,borderWidth:f.borderWidth}}function getAlignedX(f,p){return"center"===p?f.x+f.width/2:"right"===p?f.x+f.width-f.xPadding:f.x+f.xPadding}function getBeforeAfterBodyLines(f){return pushOrConcat([],splitNewlines(f))}var yt=me.extend({initialize:function(){this._model=getBaseModel(this._options),this._lastActive=[]},getTitle:function(){var f=this,p=f._options,M=p.callbacks,S=M.beforeTitle.apply(f,arguments),L=M.title.apply(f,arguments),Y=M.afterTitle.apply(f,arguments),E=[];return E=pushOrConcat(E,splitNewlines(S)),E=pushOrConcat(E,splitNewlines(L)),E=pushOrConcat(E,splitNewlines(Y))},getBeforeBody:function(){return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(f,p){var M=this,S=M._options.callbacks,L=[];return ce.each(f,(function(f){var Y={before:[],lines:[],after:[]};pushOrConcat(Y.before,splitNewlines(S.beforeLabel.call(M,f,p))),pushOrConcat(Y.lines,S.label.call(M,f,p)),pushOrConcat(Y.after,splitNewlines(S.afterLabel.call(M,f,p))),L.push(Y)})),L},getAfterBody:function(){return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var f=this,p=f._options.callbacks,M=p.beforeFooter.apply(f,arguments),S=p.footer.apply(f,arguments),L=p.afterFooter.apply(f,arguments),Y=[];return Y=pushOrConcat(Y,splitNewlines(M)),Y=pushOrConcat(Y,splitNewlines(S)),Y=pushOrConcat(Y,splitNewlines(L))},update:function(f){var p,M,S,L,Y,E,O,R,B,W,G=this,V=G._options,U=G._model,q=G._model=getBaseModel(V),X=G._active,K=G._data,J={xAlign:U.xAlign,yAlign:U.yAlign},Z={x:U.x,y:U.y},Q={width:U.width,height:U.height},ee={x:U.caretX,y:U.caretY};if(X.length){q.opacity=1;var te=[],ne=[];ee=_t[V.position].call(G,X,G._eventPosition);var ie=[];for(p=0,M=X.length;pS.width&&(L=S.width-p.width),L<0&&(L=0)),"top"===W?Y+=G:Y-="bottom"===W?p.height+G:p.height/2,"center"===W?"left"===B?L+=G:"right"===B&&(L-=G):"left"===B?L-=V:"right"===B&&(L+=V),{x:L,y:Y}}(q,Q,J=function determineAlignment(f,p){var M,S,L,Y,E,O=f._model,R=f._chart,B=f._chart.chartArea,W="center",G="center";O.yR.height-p.height&&(G="bottom");var V=(B.left+B.right)/2,U=(B.top+B.bottom)/2;"center"===G?(M=function(f){return f<=V},S=function(f){return f>V}):(M=function(f){return f<=p.width/2},S=function(f){return f>=R.width-p.width/2}),L=function(f){return f+p.width+O.caretSize+O.caretPadding>R.width},Y=function(f){return f-p.width-O.caretSize-O.caretPadding<0},E=function(f){return f<=U?"top":"bottom"},M(O.x)?(W="left",L(O.x)&&(W="center",G=E(O.y))):S(O.x)&&(W="right",Y(O.x)&&(W="center",G=E(O.y)));var q=f._options;return{xAlign:q.xAlign?q.xAlign:W,yAlign:q.yAlign?q.yAlign:G}}(this,Q),G._chart)}else q.opacity=0;return q.xAlign=J.xAlign,q.yAlign=J.yAlign,q.x=Z.x,q.y=Z.y,q.width=Q.width,q.height=Q.height,q.caretX=ee.x,q.caretY=ee.y,G._model=q,f&&V.custom&&V.custom.call(G,q),G},drawCaret:function(f,p){var M=this._chart.ctx,S=this._view,L=this.getCaretPosition(f,p,S);M.lineTo(L.x1,L.y1),M.lineTo(L.x2,L.y2),M.lineTo(L.x3,L.y3)},getCaretPosition:function(f,p,M){var S,L,Y,E,O,R,B=M.caretSize,W=M.cornerRadius,G=M.xAlign,V=M.yAlign,U=f.x,q=f.y,X=p.width,K=p.height;if("center"===V)O=q+K/2,"left"===G?(L=(S=U)-B,Y=S,E=O+B,R=O-B):(L=(S=U+X)+B,Y=S,E=O-B,R=O+B);else if("left"===G?(S=(L=U+W+B)-B,Y=L+B):"right"===G?(S=(L=U+X-W-B)-B,Y=L+B):(S=(L=M.caretX)-B,Y=L+B),"top"===V)O=(E=q)-B,R=E;else{O=(E=q+K)+B,R=E;var J=Y;Y=S,S=J}return{x1:S,x2:L,x3:Y,y1:E,y2:O,y3:R}},drawTitle:function(f,p,M){var S,L,Y,E=p.title,O=E.length;if(O){var R=vt(p.rtl,p.x,p.width);for(f.x=getAlignedX(p,p._titleAlign),M.textAlign=R.textAlign(p._titleAlign),M.textBaseline="middle",S=p.titleFontSize,L=p.titleSpacing,M.fillStyle=p.titleFontColor,M.font=ce.fontString(S,p._titleFontStyle,p._titleFontFamily),Y=0;Y0&&M.stroke()},draw:function(){var f=this._chart.ctx,p=this._view;if(0!==p.opacity){var M={width:p.width,height:p.height},S={x:p.x,y:p.y},L=Math.abs(p.opacity<.001)?0:p.opacity,Y=p.title.length||p.beforeBody.length||p.body.length||p.afterBody.length||p.footer.length;this._options.enabled&&Y&&(f.save(),f.globalAlpha=L,this.drawBackground(S,p,f,M),S.y+=p.yPadding,ce.rtl.overrideTextDirection(f,p.textDirection),this.drawTitle(S,p,f),this.drawBody(S,p,f),this.drawFooter(S,p,f),ce.rtl.restoreTextDirection(f,p.textDirection),f.restore())}},handleEvent:function(f){var p,M=this,S=M._options;return M._lastActive=M._lastActive||[],"mouseout"===f.type?M._active=[]:(M._active=M._chart.getElementsAtEventForMode(f,S.mode,S),S.reverse&&M._active.reverse()),(p=!ce.arrayEquals(M._active,M._lastActive))&&(M._lastActive=M._active,(S.enabled||S.custom)&&(M._eventPosition={x:f.x,y:f.y},M.update(!0),M.pivot())),p}}),wt=_t,xt=yt;xt.positioners=wt;var kt=ce.valueOrDefault;function mergeScaleConfig(){return ce.merge({},[].slice.call(arguments),{merger:function(f,p,M,S){if("xAxes"===f||"yAxes"===f){var L,Y,E,O=M[f].length;for(p[f]||(p[f]=[]),L=0;L=p[f].length&&p[f].push({}),!p[f][L].type||E.type&&E.type!==p[f][L].type?ce.merge(p[f][L],[gt.getScaleDefaults(Y),E]):ce.merge(p[f][L],E)}else ce._merger(f,p,M,S)}})}function mergeConfig(){return ce.merge({},[].slice.call(arguments),{merger:function(f,p,M,S){var L=p[f]||{},Y=M[f];"scales"===f?p[f]=mergeScaleConfig(L,Y):"scale"===f?p[f]=ce.merge(L,[gt.getScaleDefaults(Y.type),Y]):ce._merger(f,p,M,S)}})}function updateConfig(f){var p=f.options;ce.each(f.scales,(function(p){st.removeBox(f,p)})),p=mergeConfig(re.global,re[f.config.type],p),f.options=f.config.options=p,f.ensureScalesHaveIDs(),f.buildOrUpdateScales(),f.tooltip._options=p.tooltips,f.tooltip.initialize()}function nextAvailableScaleId(f,p,M){var S,hasId=function(f){return f.id===S};do{S=p+M++}while(ce.findIndex(f,hasId)>=0);return S}function positionIsHorizontal(f){return"top"===f||"bottom"===f}function compare2Level(f,p){return function(M,S){return M[f]===S[f]?M[p]-S[p]:M[f]-S[f]}}re._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Chart=function(f,p){return this.construct(f,p),this};ce.extend(Chart.prototype,{construct:function(f,p){var M=this;p=function initConfig(f){var p=(f=f||{}).data=f.data||{};return p.datasets=p.datasets||[],p.labels=p.labels||[],f.options=mergeConfig(re.global,re[f.type],f.options||{}),f}(p);var S=pt.acquireContext(f,p),L=S&&S.canvas,Y=L&&L.height,E=L&&L.width;M.id=ce.uid(),M.ctx=S,M.canvas=L,M.config=p,M.width=E,M.height=Y,M.aspectRatio=Y?E/Y:null,M.options=p.options,M._bufferedRender=!1,M._layers=[],M.chart=M,M.controller=M,Chart.instances[M.id]=M,Object.defineProperty(M,"data",{get:function(){return M.config.data},set:function(f){M.config.data=f}}),S&&L?(M.initialize(),M.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var f=this;return mt.notify(f,"beforeInit"),ce.retinaScale(f,f.options.devicePixelRatio),f.bindEvents(),f.options.responsive&&f.resize(!0),f.initToolTip(),mt.notify(f,"afterInit"),f},clear:function(){return ce.canvas.clear(this),this},stop:function(){return ve.cancelAnimation(this),this},resize:function(f){var p=this,M=p.options,S=p.canvas,L=M.maintainAspectRatio&&p.aspectRatio||null,Y=Math.max(0,Math.floor(ce.getMaximumWidth(S))),E=Math.max(0,Math.floor(L?Y/L:ce.getMaximumHeight(S)));if((p.width!==Y||p.height!==E)&&(S.width=p.width=Y,S.height=p.height=E,S.style.width=Y+"px",S.style.height=E+"px",ce.retinaScale(p,M.devicePixelRatio),!f)){var O={width:Y,height:E};mt.notify(p,"resize",[O]),M.onResize&&M.onResize(p,O),p.stop(),p.update({duration:M.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var f=this.options,p=f.scales||{},M=f.scale;ce.each(p.xAxes,(function(f,M){f.id||(f.id=nextAvailableScaleId(p.xAxes,"x-axis-",M))})),ce.each(p.yAxes,(function(f,M){f.id||(f.id=nextAvailableScaleId(p.yAxes,"y-axis-",M))})),M&&(M.id=M.id||"scale")},buildOrUpdateScales:function(){var f=this,p=f.options,M=f.scales||{},S=[],L=Object.keys(M).reduce((function(f,p){return f[p]=!1,f}),{});p.scales&&(S=S.concat((p.scales.xAxes||[]).map((function(f){return{options:f,dtype:"category",dposition:"bottom"}})),(p.scales.yAxes||[]).map((function(f){return{options:f,dtype:"linear",dposition:"left"}})))),p.scale&&S.push({options:p.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ce.each(S,(function(p){var S=p.options,Y=S.id,E=kt(S.type,p.dtype);positionIsHorizontal(S.position)!==positionIsHorizontal(p.dposition)&&(S.position=p.dposition),L[Y]=!0;var O=null;if(Y in M&&M[Y].type===E)(O=M[Y]).options=S,O.ctx=f.ctx,O.chart=f;else{var R=gt.getScaleConstructor(E);if(!R)return;O=new R({id:Y,type:E,options:S,ctx:f.ctx,chart:f}),M[O.id]=O}O.mergeTicksOptions(),p.isDefault&&(f.scale=O)})),ce.each(L,(function(f,p){f||delete M[p]})),f.scales=M,gt.addScalesToLayout(this)},buildOrUpdateControllers:function(){var f,p,M=this,S=[],L=M.data.datasets;for(f=0,p=L.length;f=0;--M)this.drawDataset(p[M],f);mt.notify(this,"afterDatasetsDraw",[f])}},drawDataset:function(f,p){var M={meta:f,index:f.index,easingValue:p};!1!==mt.notify(this,"beforeDatasetDraw",[M])&&(f.controller.draw(p),mt.notify(this,"afterDatasetDraw",[M]))},_drawTooltip:function(f){var p=this.tooltip,M={tooltip:p,easingValue:f};!1!==mt.notify(this,"beforeTooltipDraw",[M])&&(p.draw(),mt.notify(this,"afterTooltipDraw",[M]))},getElementAtEvent:function(f){return at.modes.single(this,f)},getElementsAtEvent:function(f){return at.modes.label(this,f,{intersect:!0})},getElementsAtXAxis:function(f){return at.modes["x-axis"](this,f,{intersect:!0})},getElementsAtEventForMode:function(f,p,M){var S=at.modes[p];return"function"==typeof S?S(this,f,M):[]},getDatasetAtEvent:function(f){return at.modes.dataset(this,f,{intersect:!0})},getDatasetMeta:function(f){var p=this.data.datasets[f];p._meta||(p._meta={});var M=p._meta[this.id];return M||(M=p._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:p.order||0,index:f}),M},getVisibleDatasetCount:function(){for(var f=0,p=0,M=this.data.datasets.length;p3?M[2]-M[1]:M[1]-M[0];Math.abs(S)>1&&f!==Math.floor(f)&&(S=f-Math.floor(f));var L=ce.log10(Math.abs(S)),Y="";if(0!==f)if(Math.max(Math.abs(M[0]),Math.abs(M[M.length-1]))<1e-4){var E=ce.log10(Math.abs(f)),O=Math.floor(E)-Math.floor(L);O=Math.max(Math.min(O,20),0),Y=f.toExponential(O)}else{var R=-1*Math.floor(L);R=Math.max(Math.min(R,20),0),Y=f.toFixed(R)}else Y="0";return Y},logarithmic:function(f,p,M){var S=f/Math.pow(10,Math.floor(ce.log10(f)));return 0===f?"0":1===S||2===S||5===S||0===p||p===M.length-1?f.toExponential():""}}},Lt=ce.isArray,Dt=ce.isNullOrUndef,Ct=ce.valueOrDefault,At=ce.valueAtIndexOrDefault;function getPixelForGridLine(f,p,M){var S,L=f.getTicks().length,Y=Math.min(p,L-1),E=f.getPixelForTick(Y),O=f._startPixel,R=f._endPixel;if(!(M&&(S=1===L?Math.max(E-O,R-E):0===p?(f.getPixelForTick(1)-E)/2:(E-f.getPixelForTick(Y-1))/2,(E+=YR+1e-6)))return E}function computeLabelSizes(f,p,M,S){var L,Y,E,O,R,B,W,G,V,U,q,X,K,J=M.length,Z=[],Q=[],ee=[];for(L=0;Lp){for(M=0;M=V||W<=1||!O.isHorizontal()?O.labelRotation=G:(p=(f=O._getLabelSizes()).widest.width,M=f.highest.height-f.highest.offset,S=Math.min(O.maxWidth,O.chart.width-p),p+6>(L=R.offset?O.maxWidth/W:S/(W-1))&&(L=S/(W-(R.offset?.5:1)),Y=O.maxHeight-getTickMarkLength(R.gridLines)-B.padding-getScaleLabelHeight(R.scaleLabel),E=Math.sqrt(p*p+M*M),U=ce.toDegrees(Math.min(Math.asin(Math.min((f.highest.height+6)/L,1)),Math.asin(Math.min(Y/E,1))-Math.asin(M/E))),U=Math.max(G,Math.min(V,U))),O.labelRotation=U)},afterCalculateTickRotation:function(){ce.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ce.callback(this.options.beforeFit,[this])},fit:function(){var f=this,p=f.minSize={width:0,height:0},M=f.chart,S=f.options,L=S.ticks,Y=S.scaleLabel,E=S.gridLines,O=f._isVisible(),R="bottom"===S.position,B=f.isHorizontal();if(B?p.width=f.maxWidth:O&&(p.width=getTickMarkLength(E)+getScaleLabelHeight(Y)),B?O&&(p.height=getTickMarkLength(E)+getScaleLabelHeight(Y)):p.height=f.maxHeight,L.display&&O){var W=parseTickFontOptions(L),G=f._getLabelSizes(),V=G.first,U=G.last,q=G.widest,X=G.highest,K=.4*W.minor.lineHeight,J=L.padding;if(B){var Z=0!==f.labelRotation,Q=ce.toRadians(f.labelRotation),ee=Math.cos(Q),te=Math.sin(Q),ne=te*q.width+ee*(X.height-(Z?X.offset:0))+(Z?0:K);p.height=Math.min(f.maxHeight,p.height+ne+J);var ie,re,ae=f.getPixelForTick(0)-f.left,oe=f.right-f.getPixelForTick(f.getTicks().length-1);Z?(ie=R?ee*V.width+te*V.offset:te*(V.height-V.offset),re=R?te*(U.height-U.offset):ee*U.width+te*U.offset):(ie=V.width/2,re=U.width/2),f.paddingLeft=Math.max((ie-ae)*f.width/(f.width-ae),0)+3,f.paddingRight=Math.max((re-oe)*f.width/(f.width-oe),0)+3}else{var se=L.mirror?0:q.width+J+K;p.width=Math.min(f.maxWidth,p.width+se),f.paddingTop=V.height/2,f.paddingBottom=U.height/2}}f.handleMargins(),B?(f.width=f._length=M.width-f.margins.left-f.margins.right,f.height=p.height):(f.width=p.width,f.height=f._length=M.height-f.margins.top-f.margins.bottom)},handleMargins:function(){var f=this;f.margins&&(f.margins.left=Math.max(f.paddingLeft,f.margins.left),f.margins.top=Math.max(f.paddingTop,f.margins.top),f.margins.right=Math.max(f.paddingRight,f.margins.right),f.margins.bottom=Math.max(f.paddingBottom,f.margins.bottom))},afterFit:function(){ce.callback(this.options.afterFit,[this])},isHorizontal:function(){var f=this.options.position;return"top"===f||"bottom"===f},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(f){if(Dt(f))return NaN;if(("number"==typeof f||f instanceof Number)&&!isFinite(f))return NaN;if(f)if(this.isHorizontal()){if(void 0!==f.x)return this.getRightValue(f.x)}else if(void 0!==f.y)return this.getRightValue(f.y);return f},_convertTicksToLabels:function(f){var p,M,S,L=this;for(L.ticks=f.map((function(f){return f.value})),L.beforeTickToLabelConversion(),p=L.convertTicksToLabels(f)||L.ticks,L.afterTickToLabelConversion(),M=0,S=f.length;MM-1?null:this.getPixelForDecimal(f*S+(p?S/2:0))},getPixelForDecimal:function(f){return this._reversePixels&&(f=1-f),this._startPixel+f*this._length},getDecimalForPixel:function(f){var p=(f-this._startPixel)/this._length;return this._reversePixels?1-p:p},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var f=this.min,p=this.max;return this.beginAtZero?0:f<0&&p<0?p:f>0&&p>0?f:0},_autoSkip:function(f){var p,M,S,L,Y=this.options.ticks,E=this._length,O=Y.maxTicksLimit||E/this._tickSize()+1,R=Y.major.enabled?function getMajorIndices(f){var p,M,S=[];for(p=0,M=f.length;pO)return function skipMajors(f,p,M){var S,L,Y=0,E=p[0];for(M=Math.ceil(M),S=0;SB)return Y;return Math.max(B,1)}(R,f,0,O),B>0){for(p=0,M=B-1;p1?(G-W)/(B-1):null,skip(f,S,ce.isNullOrUndef(L)?0:W-L,W),skip(f,S,G,ce.isNullOrUndef(L)?f.length:G+L),nonSkipped(f)}return skip(f,S),nonSkipped(f)},_tickSize:function(){var f=this.options.ticks,p=ce.toRadians(this.labelRotation),M=Math.abs(Math.cos(p)),S=Math.abs(Math.sin(p)),L=this._getLabelSizes(),Y=f.autoSkipPadding||0,E=L?L.widest.width+Y:0,O=L?L.highest.height+Y:0;return this.isHorizontal()?O*M>E*S?E/M:O/S:O*S=0&&(E=f),void 0!==Y&&(f=M.indexOf(Y))>=0&&(O=f),p.minIndex=E,p.maxIndex=O,p.min=M[E],p.max=M[O]},buildTicks:function(){var f=this._getLabels(),p=this.minIndex,M=this.maxIndex;this.ticks=0===p&&M===f.length-1?f:f.slice(p,M+1)},getLabelForIndex:function(f,p){var M=this.chart;return M.getDatasetMeta(p).controller._getValueScaleId()===this.id?this.getRightValue(M.data.datasets[p].data[f]):this._getLabels()[f]},_configure:function(){var f=this,p=f.options.offset,M=f.ticks;Yt.prototype._configure.call(f),f.isHorizontal()||(f._reversePixels=!f._reversePixels),M&&(f._startValue=f.minIndex-(p?.5:0),f._valueRange=Math.max(M.length-(p?0:1),1))},getPixelForValue:function(f,p,M){var S,L,Y,E=this;return It(p)||It(M)||(f=E.chart.data.datasets[M].data[p]),It(f)||(S=E.isHorizontal()?f.x:f.y),(void 0!==S||void 0!==f&&isNaN(p))&&(L=E._getLabels(),f=ce.valueOrDefault(S,f),p=-1!==(Y=L.indexOf(f))?Y:p,isNaN(p)&&(p=f)),E.getPixelForDecimal((p-E._startValue)/E._valueRange)},getPixelForTick:function(f){var p=this.ticks;return f<0||f>p.length-1?null:this.getPixelForValue(p[f],f+this.minIndex)},getValueForPixel:function(f){var p=Math.round(this._startValue+this.getDecimalForPixel(f)*this._valueRange);return Math.min(Math.max(p,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),Ot={position:"bottom"};Et._defaults=Ot;var Ht=ce.noop,zt=ce.isNullOrUndef,Nt=Yt.extend({getRightValue:function(f){return"string"==typeof f?+f:Yt.prototype.getRightValue.call(this,f)},handleTickRangeOptions:function(){var f=this,p=f.options.ticks;if(p.beginAtZero){var M=ce.sign(f.min),S=ce.sign(f.max);M<0&&S<0?f.max=0:M>0&&S>0&&(f.min=0)}var L=void 0!==p.min||void 0!==p.suggestedMin,Y=void 0!==p.max||void 0!==p.suggestedMax;void 0!==p.min?f.min=p.min:void 0!==p.suggestedMin&&(null===f.min?f.min=p.suggestedMin:f.min=Math.min(f.min,p.suggestedMin)),void 0!==p.max?f.max=p.max:void 0!==p.suggestedMax&&(null===f.max?f.max=p.suggestedMax:f.max=Math.max(f.max,p.suggestedMax)),L!==Y&&f.min>=f.max&&(L?f.max=f.min+1:f.min=f.max-1),f.min===f.max&&(f.max++,p.beginAtZero||f.min--)},getTickLimit:function(){var f,p=this.options.ticks,M=p.stepSize,S=p.maxTicksLimit;return M?f=Math.ceil(this.max/M)-Math.floor(this.min/M)+1:(f=this._computeTickLimit(),S=S||11),S&&(f=Math.min(S,f)),f},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Ht,buildTicks:function(){var f=this,p=f.options.ticks,M=f.getTickLimit(),S={maxTicks:M=Math.max(2,M),min:p.min,max:p.max,precision:p.precision,stepSize:ce.valueOrDefault(p.fixedStepSize,p.stepSize)},L=f.ticks=function generateTicks(f,p){var M,S,L,Y,E=[],O=f.stepSize,R=O||1,B=f.maxTicks-1,W=f.min,G=f.max,V=f.precision,U=p.min,q=p.max,X=ce.niceNum((q-U)/B/R)*R;if(X<1e-14&&zt(W)&&zt(G))return[U,q];(Y=Math.ceil(q/X)-Math.floor(U/X))>B&&(X=ce.niceNum(Y*X/B/R)*R),O||zt(V)?M=Math.pow(10,ce._decimalPlaces(X)):(M=Math.pow(10,V),X=Math.ceil(X*M)/M),S=Math.floor(U/X)*X,L=Math.ceil(q/X)*X,O&&(!zt(W)&&ce.almostWhole(W/X,X/1e3)&&(S=W),!zt(G)&&ce.almostWhole(G/X,X/1e3)&&(L=G)),Y=(L-S)/X,Y=ce.almostEquals(Y,Math.round(Y),X/1e3)?Math.round(Y):Math.ceil(Y),S=Math.round(S*M)/M,L=Math.round(L*M)/M,E.push(zt(W)?S:W);for(var K=1;Kp.length-1?null:this.getPixelForValue(p[f])}}),Ft=jt;Rt._defaults=Ft;var Bt=ce.valueOrDefault,Wt=ce.math.log10,Gt={position:"left",ticks:{callback:St.formatters.logarithmic}};function nonNegativeOrDefault(f,p){return ce.isFinite(f)&&f>=0?f:p}var Vt=Yt.extend({determineDataLimits:function(){var f,p,M,S,L,Y,E=this,O=E.options,R=E.chart,B=R.data.datasets,W=E.isHorizontal();function IDMatches(f){return W?f.xAxisID===E.id:f.yAxisID===E.id}E.min=Number.POSITIVE_INFINITY,E.max=Number.NEGATIVE_INFINITY,E.minNotZero=Number.POSITIVE_INFINITY;var G=O.stacked;if(void 0===G)for(f=0;f0){var p=ce.min(f),M=ce.max(f);E.min=Math.min(E.min,p),E.max=Math.max(E.max,M)}}))}else for(f=0;f0?f.minNotZero=f.min:f.max<1?f.minNotZero=Math.pow(10,Math.floor(Wt(f.max))):f.minNotZero=1)},buildTicks:function(){var f=this,p=f.options.ticks,M=!f.isHorizontal(),S={min:nonNegativeOrDefault(p.min),max:nonNegativeOrDefault(p.max)},L=f.ticks=function generateTicks$1(f,p){var M,S,L=[],Y=Bt(f.min,Math.pow(10,Math.floor(Wt(p.min)))),E=Math.floor(Wt(p.max)),O=Math.ceil(p.max/Math.pow(10,E));0===Y?(M=Math.floor(Wt(p.minNotZero)),S=Math.floor(p.minNotZero/Math.pow(10,M)),L.push(Y),Y=S*Math.pow(10,M)):(M=Math.floor(Wt(Y)),S=Math.floor(Y/Math.pow(10,M)));var R=M<0?Math.pow(10,Math.abs(M)):1;do{L.push(Y),10==++S&&(S=1,R=++M>=0?1:R),Y=Math.round(S*Math.pow(10,M)*R)/R}while(Mp.length-1?null:this.getPixelForValue(p[f])},_getFirstTickValue:function(f){var p=Math.floor(Wt(f));return Math.floor(f/Math.pow(10,p))*Math.pow(10,p)},_configure:function(){var f=this,p=f.min,M=0;Yt.prototype._configure.call(f),0===p&&(p=f._getFirstTickValue(f.minNotZero),M=Bt(f.options.ticks.fontSize,re.global.defaultFontSize)/f._length),f._startValue=Wt(p),f._valueOffset=M,f._valueRange=(Wt(f.max)-Wt(p))/(1-M)},getPixelForValue:function(f){var p=this,M=0;return(f=+p.getRightValue(f))>p.min&&f>0&&(M=(Wt(f)-p._startValue)/p._valueRange+p._valueOffset),p.getPixelForDecimal(M)},getValueForPixel:function(f){var p=this,M=p.getDecimalForPixel(f);return 0===M&&0===p.min?0:Math.pow(10,p._startValue+(M-p._valueOffset)*p._valueRange)}}),Ut=Gt;Vt._defaults=Ut;var $t=ce.valueOrDefault,qt=ce.valueAtIndexOrDefault,Xt=ce.options.resolve,Kt={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:St.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(f){return f}}};function getTickBackdropHeight(f){var p=f.ticks;return p.display&&f.display?$t(p.fontSize,re.global.defaultFontSize)+2*p.backdropPaddingY:0}function determineLimits(f,p,M,S,L){return f===S||f===L?{start:p-M/2,end:p+M/2}:fL?{start:p-M,end:p}:{start:p,end:p+M}}function getTextAlignForAngle(f){return 0===f||180===f?"center":f<180?"left":"right"}function fillText(f,p,M,S){var L,Y,E=M.y+S/2;if(ce.isArray(p))for(L=0,Y=p.length;L270||f<90)&&(M.y-=p.h)}function numberOrZero(f){return ce.isNumber(f)?f:0}var Jt=Nt.extend({setDimensions:function(){var f=this;f.width=f.maxWidth,f.height=f.maxHeight,f.paddingTop=getTickBackdropHeight(f.options)/2,f.xCenter=Math.floor(f.width/2),f.yCenter=Math.floor((f.height-f.paddingTop)/2),f.drawingArea=Math.min(f.height-f.paddingTop,f.width)/2},determineDataLimits:function(){var f=this,p=f.chart,M=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY;ce.each(p.data.datasets,(function(L,Y){if(p.isDatasetVisible(Y)){var E=p.getDatasetMeta(Y);ce.each(L.data,(function(p,L){var Y=+f.getRightValue(p);isNaN(Y)||E.data[L].hidden||(M=Math.min(Y,M),S=Math.max(Y,S))}))}})),f.min=M===Number.POSITIVE_INFINITY?0:M,f.max=S===Number.NEGATIVE_INFINITY?0:S,f.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/getTickBackdropHeight(this.options))},convertTicksToLabels:function(){var f=this;Nt.prototype.convertTicksToLabels.call(f),f.pointLabels=f.chart.data.labels.map((function(){var p=ce.callback(f.options.pointLabels.callback,arguments,f);return p||0===p?p:""}))},getLabelForIndex:function(f,p){return+this.getRightValue(this.chart.data.datasets[p].data[f])},fit:function(){var f=this.options;f.display&&f.pointLabels.display?function fitWithPointLabels(f){var p,M,S,L=ce.options._parseFont(f.options.pointLabels),Y={l:0,r:f.width,t:0,b:f.height-f.paddingTop},E={};f.ctx.font=L.string,f._pointLabelSizes=[];var O,R,B,W=f.chart.data.labels.length;for(p=0;pY.r&&(Y.r=U.end,E.r=G),q.startY.b&&(Y.b=q.end,E.b=G)}f.setReductions(f.drawingArea,Y,E)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(f,p,M){var S=this,L=p.l/Math.sin(M.l),Y=Math.max(p.r-S.width,0)/Math.sin(M.r),E=-p.t/Math.cos(M.t),O=-Math.max(p.b-(S.height-S.paddingTop),0)/Math.cos(M.b);L=numberOrZero(L),Y=numberOrZero(Y),E=numberOrZero(E),O=numberOrZero(O),S.drawingArea=Math.min(Math.floor(f-(L+Y)/2),Math.floor(f-(E+O)/2)),S.setCenterPoint(L,Y,E,O)},setCenterPoint:function(f,p,M,S){var L=this,Y=L.width-p-L.drawingArea,E=f+L.drawingArea,O=M+L.drawingArea,R=L.height-L.paddingTop-S-L.drawingArea;L.xCenter=Math.floor((E+Y)/2+L.left),L.yCenter=Math.floor((O+R)/2+L.top+L.paddingTop)},getIndexAngle:function(f){var p=this.chart,M=(f*(360/p.data.labels.length)+((p.options||{}).startAngle||0))%360;return(M<0?M+360:M)*Math.PI*2/360},getDistanceFromCenterForValue:function(f){var p=this;if(ce.isNullOrUndef(f))return NaN;var M=p.drawingArea/(p.max-p.min);return p.options.ticks.reverse?(p.max-f)*M:(f-p.min)*M},getPointPosition:function(f,p){var M=this.getIndexAngle(f)-Math.PI/2;return{x:Math.cos(M)*p+this.xCenter,y:Math.sin(M)*p+this.yCenter}},getPointPositionForValue:function(f,p){return this.getPointPosition(f,this.getDistanceFromCenterForValue(p))},getBasePosition:function(f){var p=this.min,M=this.max;return this.getPointPositionForValue(f||0,this.beginAtZero?0:p<0&&M<0?M:p>0&&M>0?p:0)},_drawGrid:function(){var f,p,M,S=this,L=S.ctx,Y=S.options,E=Y.gridLines,O=Y.angleLines,R=$t(O.lineWidth,E.lineWidth),B=$t(O.color,E.color);if(Y.pointLabels.display&&function drawPointLabels(f){var p=f.ctx,M=f.options,S=M.pointLabels,L=getTickBackdropHeight(M),Y=f.getDistanceFromCenterForValue(M.ticks.reverse?f.min:f.max),E=ce.options._parseFont(S);p.save(),p.font=E.string,p.textBaseline="middle";for(var O=f.chart.data.labels.length-1;O>=0;O--){var R=0===O?L/2:0,B=f.getPointPosition(O,Y+R+5),W=qt(S.fontColor,O,re.global.defaultFontColor);p.fillStyle=W;var G=f.getIndexAngle(O),V=ce.toDegrees(G);p.textAlign=getTextAlignForAngle(V),adjustPointPositionForLabelHeight(V,f._pointLabelSizes[O],B),fillText(p,f.pointLabels[O],B,E.lineHeight)}p.restore()}(S),E.display&&ce.each(S.ticks,(function(f,M){0!==M&&(p=S.getDistanceFromCenterForValue(S.ticksAsNumbers[M]),function drawRadiusLine(f,p,M,S){var L,Y=f.ctx,E=p.circular,O=f.chart.data.labels.length,R=qt(p.color,S-1),B=qt(p.lineWidth,S-1);if((E||O)&&R&&B){if(Y.save(),Y.strokeStyle=R,Y.lineWidth=B,Y.setLineDash&&(Y.setLineDash(p.borderDash||[]),Y.lineDashOffset=p.borderDashOffset||0),Y.beginPath(),E)Y.arc(f.xCenter,f.yCenter,M,0,2*Math.PI);else{L=f.getPointPosition(0,M),Y.moveTo(L.x,L.y);for(var W=1;W=0;f--)p=S.getDistanceFromCenterForValue(Y.ticks.reverse?S.min:S.max),M=S.getPointPosition(f,p),L.beginPath(),L.moveTo(S.xCenter,S.yCenter),L.lineTo(M.x,M.y),L.stroke();L.restore()}},_drawLabels:function(){var f=this,p=f.ctx,M=f.options.ticks;if(M.display){var S,L,Y=f.getIndexAngle(0),E=ce.options._parseFont(M),O=$t(M.fontColor,re.global.defaultFontColor);p.save(),p.font=E.string,p.translate(f.xCenter,f.yCenter),p.rotate(Y),p.textAlign="center",p.textBaseline="middle",ce.each(f.ticks,(function(Y,R){(0!==R||M.reverse)&&(S=f.getDistanceFromCenterForValue(f.ticksAsNumbers[R]),M.showLabelBackdrop&&(L=p.measureText(Y).width,p.fillStyle=M.backdropColor,p.fillRect(-L/2-M.backdropPaddingX,-S-E.size/2-M.backdropPaddingY,L+2*M.backdropPaddingX,E.size+2*M.backdropPaddingY)),p.fillStyle=O,p.fillText(Y,0,-S))})),p.restore()}},_drawTitle:ce.noop}),Zt=Kt;Jt._defaults=Zt;var Qt=ce._deprecated,en=ce.options.resolve,tn=ce.valueOrDefault,nn=Number.MIN_SAFE_INTEGER||-9007199254740991,rn=Number.MAX_SAFE_INTEGER||9007199254740991,an={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},sn=Object.keys(an);function sorter(f,p){return f-p}function getMin(f){return ce.valueOrDefault(f.time.min,f.ticks.min)}function getMax(f){return ce.valueOrDefault(f.time.max,f.ticks.max)}function interpolate$1(f,p,M,S){var L=function lookup(f,p,M){for(var S,L,Y,E=0,O=f.length-1;E>=0&&E<=O;){if(L=f[(S=E+O>>1)-1]||null,Y=f[S],!L)return{lo:null,hi:Y};if(Y[p]M))return{lo:L,hi:Y};O=S-1}}return{lo:Y,hi:null}}(f,p,M),Y=L.lo?L.hi?L.lo:f[f.length-2]:f[0],E=L.lo?L.hi?L.hi:f[f.length-1]:f[1],O=E[p]-Y[p],R=O?(M-Y[p])/O:0,B=(E[S]-Y[S])*R;return Y[S]+B}function toTimestamp(f,p){var M=f._adapter,S=f.options.time,L=S.parser,Y=L||S.format,E=p;return"function"==typeof L&&(E=L(E)),ce.isFinite(E)||(E="string"==typeof Y?M.parse(E,Y):M.parse(E)),null!==E?+E:(L||"function"!=typeof Y||(E=Y(p),ce.isFinite(E)||(E=M.parse(E))),E)}function parse(f,p){if(ce.isNullOrUndef(p))return null;var M=f.options.time,S=toTimestamp(f,f.getRightValue(p));return null===S||M.round&&(S=+f._adapter.startOf(S,M.round)),S}function determineUnitForAutoTicks(f,p,M,S){var L,Y,E,O=sn.length;for(L=sn.indexOf(f);L=0&&(p[Y].major=!0);return p}(f,Y,E,M):Y}var ln=Yt.extend({initialize:function(){this.mergeTicksOptions(),Yt.prototype.initialize.call(this)},update:function(){var f=this,p=f.options,M=p.time||(p.time={}),S=f._adapter=new Mt._date(p.adapters.date);return Qt("time scale",M.format,"time.format","time.parser"),Qt("time scale",M.min,"time.min","ticks.min"),Qt("time scale",M.max,"time.max","ticks.max"),ce.mergeIf(M.displayFormats,S.formats()),Yt.prototype.update.apply(f,arguments)},getRightValue:function(f){return f&&void 0!==f.t&&(f=f.t),Yt.prototype.getRightValue.call(this,f)},determineDataLimits:function(){var f,p,M,S,L,Y,E,O=this,R=O.chart,B=O._adapter,W=O.options,G=W.time.unit||"day",V=rn,U=nn,q=[],X=[],K=[],J=O._getLabels();for(f=0,M=J.length;f1?function arrayUnique(f){var p,M,S,L={},Y=[];for(p=0,M=f.length;p1e5*B)throw p+" and "+M+" are too far apart with stepSize of "+B+" "+R;for(L=G;L=L&&M<=Y&&W.push(M);return S.min=L,S.max=Y,S._unit=R.unit||(O.autoSkip?determineUnitForAutoTicks(R.minUnit,S.min,S.max,G):function determineUnitForFormatting(f,p,M,S,L){var Y,E;for(Y=sn.length-1;Y>=sn.indexOf(M);Y--)if(E=sn[Y],an[E].common&&f._adapter.diff(L,S,E)>=p-1)return E;return sn[M?sn.indexOf(M):0]}(S,W.length,R.minUnit,S.min,S.max)),S._majorUnit=O.major.enabled&&"year"!==S._unit?function determineMajorUnit(f){for(var p=sn.indexOf(f)+1,M=sn.length;pp&&O=0&&f0?O:1}}),cn={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};ln._defaults=cn;var dn={category:Et,linear:Rt,logarithmic:Vt,radialLinear:Jt,time:ln},un={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Mt._date.override("function"==typeof f?{_id:"moment",formats:function(){return un},parse:function(p,M){return"string"==typeof p&&"string"==typeof M?p=f(p,M):p instanceof f||(p=f(p)),p.isValid()?p.valueOf():null},format:function(p,M){return f(p).format(M)},add:function(p,M,S){return f(p).add(M,S).valueOf()},diff:function(p,M,S){return f(p).diff(f(M),S)},startOf:function(p,M,S){return p=f(p),"isoWeek"===M?p.isoWeekday(S).valueOf():p.startOf(M).valueOf()},endOf:function(p,M){return f(p).endOf(M).valueOf()},_create:function(p){return f(p)}}:{}),re._set("global",{plugins:{filler:{propagate:!0}}});var hn={dataset:function(f){var p=f.fill,M=f.chart,S=M.getDatasetMeta(p),L=S&&M.isDatasetVisible(p)&&S.dataset._children||[],Y=L.length||0;return Y?function(f,p){return p=M)&&S;switch(Y){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return Y;default:return!1}}function computeBoundary(f){return(f.el._scale||{}).getPointPositionForValue?function computeCircularBoundary(f){var p,M,S,L,Y,E=f.el._scale,O=E.options,R=E.chart.data.labels.length,B=f.fill,W=[];if(!R)return null;for(p=O.ticks.reverse?E.max:E.min,M=O.ticks.reverse?E.min:E.max,S=E.getPointPositionForValue(0,p),L=0;L0;--Y)ce.canvas.lineTo(f,M[Y],M[Y-1],!0);else for(E=M[0].cx,O=M[0].cy,R=Math.sqrt(Math.pow(M[0].x-E,2)+Math.pow(M[0].y-O,2)),Y=L-1;Y>0;--Y)f.arc(E,O,R,M[Y].angle,M[Y-1].angle,!0)}}function doFill(f,p,M,S,L,Y){var E,O,R,B,W,G,V,U,q=p.length,X=S.spanGaps,K=[],J=[],Z=0,Q=0;for(f.beginPath(),E=0,O=q;E=0;--M)(p=R[M].$filler)&&p.visible&&(L=(S=p.el)._view,Y=S._children||[],E=p.mapper,O=L.backgroundColor||re.global.defaultColor,E&&O&&Y.length&&(ce.canvas.clipArea(B,f.chartArea),doFill(B,Y,E,L,O,S._loop),ce.canvas.unclipArea(B)))}},mn=ce.rtl.getRtlAdapter,gn=ce.noop,bn=ce.valueOrDefault;function getBoxWidth(f,p){return f.usePointStyle&&f.boxWidth>p?p:f.boxWidth}re._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(f,p){var M=p.datasetIndex,S=this.chart,L=S.getDatasetMeta(M);L.hidden=null===L.hidden?!S.data.datasets[M].hidden:null,S.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(f){var p=f.data.datasets,M=f.options.legend||{},S=M.labels&&M.labels.usePointStyle;return f._getSortedDatasetMetas().map((function(M){var L=M.controller.getStyle(S?0:void 0);return{text:p[M.index].label,fillStyle:L.backgroundColor,hidden:!f.isDatasetVisible(M.index),lineCap:L.borderCapStyle,lineDash:L.borderDash,lineDashOffset:L.borderDashOffset,lineJoin:L.borderJoinStyle,lineWidth:L.borderWidth,strokeStyle:L.borderColor,pointStyle:L.pointStyle,rotation:L.rotation,datasetIndex:M.index}}),this)}}},legendCallback:function(f){var p,M,S,L=document.createElement("ul"),Y=f.data.datasets;for(L.setAttribute("class",f.id+"-legend"),p=0,M=Y.length;pR.width)&&(G+=E+M.padding,W[W.length-(p>0?0:1)]=0),O[p]={left:0,top:0,width:S,height:E},W[W.length-1]+=S+M.padding})),R.height+=G}else{var V=M.padding,U=f.columnWidths=[],q=f.columnHeights=[],X=M.padding,K=0,J=0;ce.each(f.legendItems,(function(f,p){var S=getBoxWidth(M,E)+E/2+L.measureText(f.text).width;p>0&&J+E+2*V>R.height&&(X+=K+M.padding,U.push(K),q.push(J),K=0,J=0),K=Math.max(K,S),J+=E+V,O[p]={left:0,top:0,width:S,height:E}})),X+=K,U.push(K),q.push(J),R.width+=X}f.width=R.width,f.height=R.height}else f.width=R.width=f.height=R.height=0},afterFit:gn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var f=this,p=f.options,M=p.labels,S=re.global,L=S.defaultColor,Y=S.elements.line,E=f.height,O=f.columnHeights,R=f.width,B=f.lineWidths;if(p.display){var W,G=mn(p.rtl,f.left,f.minSize.width),V=f.ctx,U=bn(M.fontColor,S.defaultFontColor),q=ce.options._parseFont(M),X=q.size;V.textAlign=G.textAlign("left"),V.textBaseline="middle",V.lineWidth=.5,V.strokeStyle=U,V.fillStyle=U,V.font=q.string;var K=getBoxWidth(M,X),J=f.legendHitBoxes,alignmentOffset=function(f,S){switch(p.align){case"start":return M.padding;case"end":return f-S;default:return(f-S+M.padding)/2}},Z=f.isHorizontal();W=Z?{x:f.left+alignmentOffset(R,B[0]),y:f.top+M.padding,line:0}:{x:f.left+M.padding,y:f.top+alignmentOffset(E,O[0]),line:0},ce.rtl.overrideTextDirection(f.ctx,p.textDirection);var Q=X+M.padding;ce.each(f.legendItems,(function(p,S){var U=V.measureText(p.text).width,q=K+X/2+U,ee=W.x,te=W.y;G.setWidth(f.minSize.width),Z?S>0&&ee+q+M.padding>f.left+f.minSize.width&&(te=W.y+=Q,W.line++,ee=W.x=f.left+alignmentOffset(R,B[W.line])):S>0&&te+Q>f.top+f.minSize.height&&(ee=W.x=ee+f.columnWidths[W.line]+M.padding,W.line++,te=W.y=f.top+alignmentOffset(E,O[W.line]));var ne=G.x(ee);!function(f,p,S){if(!(isNaN(K)||K<=0)){V.save();var E=bn(S.lineWidth,Y.borderWidth);if(V.fillStyle=bn(S.fillStyle,L),V.lineCap=bn(S.lineCap,Y.borderCapStyle),V.lineDashOffset=bn(S.lineDashOffset,Y.borderDashOffset),V.lineJoin=bn(S.lineJoin,Y.borderJoinStyle),V.lineWidth=E,V.strokeStyle=bn(S.strokeStyle,L),V.setLineDash&&V.setLineDash(bn(S.lineDash,Y.borderDash)),M&&M.usePointStyle){var O=K*Math.SQRT2/2,R=G.xPlus(f,K/2),B=p+X/2;ce.canvas.drawPoint(V,S.pointStyle,O,R,B,S.rotation)}else V.fillRect(G.leftForLtr(f,K),p,K,X),0!==E&&V.strokeRect(G.leftForLtr(f,K),p,K,X);V.restore()}}(ne,te,p),J[S].left=G.leftForLtr(ne,J[S].width),J[S].top=te,function(f,p,M,S){var L=X/2,Y=G.xPlus(f,K+L),E=p+L;V.fillText(M.text,Y,E),M.hidden&&(V.beginPath(),V.lineWidth=2,V.moveTo(Y,E),V.lineTo(G.xPlus(Y,S),E),V.stroke())}(ne,te,p,U),Z?W.x+=q+M.padding:W.y+=Q})),ce.rtl.restoreTextDirection(f.ctx,p.textDirection)}},_getLegendItemAt:function(f,p){var M,S,L,Y=this;if(f>=Y.left&&f<=Y.right&&p>=Y.top&&p<=Y.bottom)for(L=Y.legendHitBoxes,M=0;M=(S=L[M]).left&&f<=S.left+S.width&&p>=S.top&&p<=S.top+S.height)return Y.legendItems[M];return null},handleEvent:function(f){var p,M=this,S=M.options,L="mouseup"===f.type?"click":f.type;if("mousemove"===L){if(!S.onHover&&!S.onLeave)return}else{if("click"!==L)return;if(!S.onClick)return}p=M._getLegendItemAt(f.x,f.y),"click"===L?p&&S.onClick&&S.onClick.call(M,f.native,p):(S.onLeave&&p!==M._hoveredItem&&(M._hoveredItem&&S.onLeave.call(M,f.native,M._hoveredItem),M._hoveredItem=p),S.onHover&&p&&S.onHover.call(M,f.native,p))}});function createNewLegendAndAttach(f,p){var M=new vn({ctx:f.ctx,options:p,chart:f});st.configure(f,M,p),st.addBox(f,M),f.legend=M}var _n={id:"legend",_element:vn,beforeInit:function(f){var p=f.options.legend;p&&createNewLegendAndAttach(f,p)},beforeUpdate:function(f){var p=f.options.legend,M=f.legend;p?(ce.mergeIf(p,re.global.legend),M?(st.configure(f,M,p),M.options=p):createNewLegendAndAttach(f,p)):M&&(st.removeBox(f,M),delete f.legend)},afterEvent:function(f,p){var M=f.legend;M&&M.handleEvent(p)}},yn=ce.noop;re._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var wn=me.extend({initialize:function(f){ce.extend(this,f),this.legendHitBoxes=[]},beforeUpdate:yn,update:function(f,p,M){var S=this;return S.beforeUpdate(),S.maxWidth=f,S.maxHeight=p,S.margins=M,S.beforeSetDimensions(),S.setDimensions(),S.afterSetDimensions(),S.beforeBuildLabels(),S.buildLabels(),S.afterBuildLabels(),S.beforeFit(),S.fit(),S.afterFit(),S.afterUpdate(),S.minSize},afterUpdate:yn,beforeSetDimensions:yn,setDimensions:function(){var f=this;f.isHorizontal()?(f.width=f.maxWidth,f.left=0,f.right=f.width):(f.height=f.maxHeight,f.top=0,f.bottom=f.height),f.paddingLeft=0,f.paddingTop=0,f.paddingRight=0,f.paddingBottom=0,f.minSize={width:0,height:0}},afterSetDimensions:yn,beforeBuildLabels:yn,buildLabels:yn,afterBuildLabels:yn,beforeFit:yn,fit:function(){var f,p=this,M=p.options,S=p.minSize={},L=p.isHorizontal();M.display?(f=(ce.isArray(M.text)?M.text.length:1)*ce.options._parseFont(M).lineHeight+2*M.padding,p.width=S.width=L?p.maxWidth:f,p.height=S.height=L?f:p.maxHeight):p.width=S.width=p.height=S.height=0},afterFit:yn,isHorizontal:function(){var f=this.options.position;return"top"===f||"bottom"===f},draw:function(){var f=this,p=f.ctx,M=f.options;if(M.display){var S,L,Y,E=ce.options._parseFont(M),O=E.lineHeight,R=O/2+M.padding,B=0,W=f.top,G=f.left,V=f.bottom,U=f.right;p.fillStyle=ce.valueOrDefault(M.fontColor,re.global.defaultFontColor),p.font=E.string,f.isHorizontal()?(L=G+(U-G)/2,Y=W+R,S=U-G):(L="left"===M.position?G+R:U-R,Y=W+(V-W)/2,S=V-W,B=Math.PI*("left"===M.position?-.5:.5)),p.save(),p.translate(L,Y),p.rotate(B),p.textAlign="center",p.textBaseline="middle";var q=M.text;if(ce.isArray(q))for(var X=0,K=0;K=0;S--){var L=f[S];if(p(L))return L}},ce.isNumber=function(f){return!isNaN(parseFloat(f))&&isFinite(f)},ce.almostEquals=function(f,p,M){return Math.abs(f-p)=f},ce.max=function(f){return f.reduce((function(f,p){return isNaN(p)?f:Math.max(f,p)}),Number.NEGATIVE_INFINITY)},ce.min=function(f){return f.reduce((function(f,p){return isNaN(p)?f:Math.min(f,p)}),Number.POSITIVE_INFINITY)},ce.sign=Math.sign?function(f){return Math.sign(f)}:function(f){return 0==(f=+f)||isNaN(f)?f:f>0?1:-1},ce.toRadians=function(f){return f*(Math.PI/180)},ce.toDegrees=function(f){return f*(180/Math.PI)},ce._decimalPlaces=function(f){if(ce.isFinite(f)){for(var p=1,M=0;Math.round(f*p)/p!==f;)p*=10,M++;return M}},ce.getAngleFromPoint=function(f,p){var M=p.x-f.x,S=p.y-f.y,L=Math.sqrt(M*M+S*S),Y=Math.atan2(S,M);return Y<-.5*Math.PI&&(Y+=2*Math.PI),{angle:Y,distance:L}},ce.distanceBetweenPoints=function(f,p){return Math.sqrt(Math.pow(p.x-f.x,2)+Math.pow(p.y-f.y,2))},ce.aliasPixel=function(f){return f%2==0?0:.5},ce._alignPixel=function(f,p,M){var S=f.currentDevicePixelRatio,L=M/2;return Math.round((p-L)*S)/S+L},ce.splineCurve=function(f,p,M,S){var L=f.skip?p:f,Y=p,E=M.skip?p:M,O=Math.sqrt(Math.pow(Y.x-L.x,2)+Math.pow(Y.y-L.y,2)),R=Math.sqrt(Math.pow(E.x-Y.x,2)+Math.pow(E.y-Y.y,2)),B=O/(O+R),W=R/(O+R),G=S*(B=isNaN(B)?0:B),V=S*(W=isNaN(W)?0:W);return{previous:{x:Y.x-G*(E.x-L.x),y:Y.y-G*(E.y-L.y)},next:{x:Y.x+V*(E.x-L.x),y:Y.y+V*(E.y-L.y)}}},ce.EPSILON=Number.EPSILON||1e-14,ce.splineCurveMonotone=function(f){var p,M,S,L,Y,E,O,R,B,W=(f||[]).map((function(f){return{model:f._model,deltaK:0,mK:0}})),G=W.length;for(p=0;p0?W[p-1]:null,(L=p0?W[p-1]:null,L=p=f.length-1?f[0]:f[p+1]:p>=f.length-1?f[f.length-1]:f[p+1]},ce.previousItem=function(f,p,M){return M?p<=0?f[f.length-1]:f[p-1]:p<=0?f[0]:f[p-1]},ce.niceNum=function(f,p){var M=Math.floor(ce.log10(f)),S=f/Math.pow(10,M);return(p?S<1.5?1:S<3?2:S<7?5:10:S<=1?1:S<=2?2:S<=5?5:10)*Math.pow(10,M)},ce.requestAnimFrame="undefined"==typeof window?function(f){f()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(f){return window.setTimeout(f,1e3/60)},ce.getRelativePosition=function(f,p){var M,S,L=f.originalEvent||f,Y=f.target||f.srcElement,E=Y.getBoundingClientRect(),O=L.touches;O&&O.length>0?(M=O[0].clientX,S=O[0].clientY):(M=L.clientX,S=L.clientY);var R=parseFloat(ce.getStyle(Y,"padding-left")),B=parseFloat(ce.getStyle(Y,"padding-top")),W=parseFloat(ce.getStyle(Y,"padding-right")),G=parseFloat(ce.getStyle(Y,"padding-bottom")),V=E.right-E.left-R-W,U=E.bottom-E.top-B-G;return{x:M=Math.round((M-E.left-R)/V*Y.width/p.currentDevicePixelRatio),y:S=Math.round((S-E.top-B)/U*Y.height/p.currentDevicePixelRatio)}},ce.getConstraintWidth=function(f){return getConstraintDimension(f,"max-width","clientWidth")},ce.getConstraintHeight=function(f){return getConstraintDimension(f,"max-height","clientHeight")},ce._calculatePadding=function(f,p,M){return(p=ce.getStyle(f,p)).indexOf("%")>-1?M*parseInt(p,10)/100:parseInt(p,10)},ce._getParentNode=function(f){var p=f.parentNode;return p&&"[object ShadowRoot]"===p.toString()&&(p=p.host),p},ce.getMaximumWidth=function(f){var p=ce._getParentNode(f);if(!p)return f.clientWidth;var M=p.clientWidth,S=M-ce._calculatePadding(p,"padding-left",M)-ce._calculatePadding(p,"padding-right",M),L=ce.getConstraintWidth(f);return isNaN(L)?S:Math.min(S,L)},ce.getMaximumHeight=function(f){var p=ce._getParentNode(f);if(!p)return f.clientHeight;var M=p.clientHeight,S=M-ce._calculatePadding(p,"padding-top",M)-ce._calculatePadding(p,"padding-bottom",M),L=ce.getConstraintHeight(f);return isNaN(L)?S:Math.min(S,L)},ce.getStyle=function(f,p){return f.currentStyle?f.currentStyle[p]:document.defaultView.getComputedStyle(f,null).getPropertyValue(p)},ce.retinaScale=function(f,p){var M=f.currentDevicePixelRatio=p||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==M){var S=f.canvas,L=f.height,Y=f.width;S.height=L*M,S.width=Y*M,f.ctx.scale(M,M),S.style.height||S.style.width||(S.style.height=L+"px",S.style.width=Y+"px")}},ce.fontString=function(f,p,M){return p+" "+f+"px "+M},ce.longestText=function(f,p,M,S){var L=(S=S||{}).data=S.data||{},Y=S.garbageCollect=S.garbageCollect||[];S.font!==p&&(L=S.data={},Y=S.garbageCollect=[],S.font=p),f.font=p;var E,O,R,B,W,G=0,V=M.length;for(E=0;EM.length){for(E=0;ES&&(S=Y),S},ce.numberOfLabelLines=function(f){var p=1;return ce.each(f,(function(f){ce.isArray(f)&&f.length>p&&(p=f.length)})),p},ce.color=W?function(f){return f instanceof CanvasGradient&&(f=re.global.defaultColor),W(f)}:function(f){return console.error("Color.js not found!"),f},ce.getHoverColor=function(f){return f instanceof CanvasPattern||f instanceof CanvasGradient?f:ce.color(f).saturate(.5).darken(.1).rgbString()}}(),Tt._adapters=Mt,Tt.Animation=be,Tt.animationService=ve,Tt.controllers=rt,Tt.DatasetController=we,Tt.defaults=re,Tt.Element=me,Tt.elements=Ye,Tt.Interaction=at,Tt.layouts=st,Tt.platform=pt,Tt.plugins=mt,Tt.Scale=Yt,Tt.scaleService=gt,Tt.Ticks=St,Tt.Tooltip=xt,Tt.helpers.each(dn,(function(f,p){Tt.scaleService.registerScaleType(p,f,f._defaults)})),xn)xn.hasOwnProperty(Sn)&&Tt.plugins.register(xn[Sn]);Tt.platform.initialize();var Ln=Tt;return"undefined"!=typeof window&&(window.Chart=Tt),Tt.Chart=Tt,Tt.Legend=xn.legend._element,Tt.Title=xn.title._element,Tt.pluginService=Tt.plugins,Tt.PluginBase=Tt.Element.extend({}),Tt.canvasHelpers=Tt.helpers.canvas,Tt.layoutService=Tt.layouts,Tt.LinearScaleBase=Nt,Tt.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(f){Tt[f]=function(p,M){return new Tt(p,Tt.helpers.merge(M||{},{type:f.charAt(0).toLowerCase()+f.slice(1)}))}})),Ln}(function(){try{return M(0)}catch(f){}}())},function(f,p){var M={utf8:{stringToBytes:function(f){return M.bin.stringToBytes(unescape(encodeURIComponent(f)))},bytesToString:function(f){return decodeURIComponent(escape(M.bin.bytesToString(f)))}},bin:{stringToBytes:function(f){for(var p=[],M=0;M=0?p:parseInt(f,10)}return f},log:function log(f){if(f=L.lookupLevel(f),"undefined"!=typeof console&&L.lookupLevel(L.level)<=f){var p=L.methodMap[f];console[p]||(p="log");for(var M=arguments.length,S=Array(M>1?M-1:0),Y=1;Y1&&(L-=1)),[360*L,100*Y,100*B]},L.rgb.hwb=function(f){var p=f[0],M=f[1],S=f[2];return[L.rgb.hsl(f)[0],1/255*Math.min(p,Math.min(M,S))*100,100*(S=1-1/255*Math.max(p,Math.max(M,S)))]},L.rgb.cmyk=function(f){var p,M=f[0]/255,S=f[1]/255,L=f[2]/255;return[100*((1-M-(p=Math.min(1-M,1-S,1-L)))/(1-p)||0),100*((1-S-p)/(1-p)||0),100*((1-L-p)/(1-p)||0),100*p]},L.rgb.keyword=function(f){var S=M[f];if(S)return S;var L,Y,E,O=1/0;for(var R in p)if(p.hasOwnProperty(R)){var B=p[R],W=(Y=f,E=B,Math.pow(Y[0]-E[0],2)+Math.pow(Y[1]-E[1],2)+Math.pow(Y[2]-E[2],2));W.04045?Math.pow((p+.055)/1.055,2.4):p/12.92)+.3576*(M=M>.04045?Math.pow((M+.055)/1.055,2.4):M/12.92)+.1805*(S=S>.04045?Math.pow((S+.055)/1.055,2.4):S/12.92)),100*(.2126*p+.7152*M+.0722*S),100*(.0193*p+.1192*M+.9505*S)]},L.rgb.lab=function(f){var p=L.rgb.xyz(f),M=p[0],S=p[1],Y=p[2];return S/=100,Y/=108.883,M=(M/=95.047)>.008856?Math.pow(M,1/3):7.787*M+16/116,[116*(S=S>.008856?Math.pow(S,1/3):7.787*S+16/116)-16,500*(M-S),200*(S-(Y=Y>.008856?Math.pow(Y,1/3):7.787*Y+16/116))]},L.hsl.rgb=function(f){var p,M,S,L,Y,E=f[0]/360,O=f[1]/100,R=f[2]/100;if(0===O)return[Y=255*R,Y,Y];p=2*R-(M=R<.5?R*(1+O):R+O-R*O),L=[0,0,0];for(var B=0;B<3;B++)(S=E+1/3*-(B-1))<0&&S++,S>1&&S--,Y=6*S<1?p+6*(M-p)*S:2*S<1?M:3*S<2?p+(M-p)*(2/3-S)*6:p,L[B]=255*Y;return L},L.hsl.hsv=function(f){var p=f[0],M=f[1]/100,S=f[2]/100,L=M,Y=Math.max(S,.01);return M*=(S*=2)<=1?S:2-S,L*=Y<=1?Y:2-Y,[p,100*(0===S?2*L/(Y+L):2*M/(S+M)),(S+M)/2*100]},L.hsv.rgb=function(f){var p=f[0]/60,M=f[1]/100,S=f[2]/100,L=Math.floor(p)%6,Y=p-Math.floor(p),E=255*S*(1-M),O=255*S*(1-M*Y),R=255*S*(1-M*(1-Y));switch(S*=255,L){case 0:return[S,R,E];case 1:return[O,S,E];case 2:return[E,S,R];case 3:return[E,O,S];case 4:return[R,E,S];case 5:return[S,E,O]}},L.hsv.hsl=function(f){var p,M,S,L=f[0],Y=f[1]/100,E=f[2]/100,O=Math.max(E,.01);return S=(2-Y)*E,M=Y*O,[L,100*(M=(M/=(p=(2-Y)*O)<=1?p:2-p)||0),100*(S/=2)]},L.hwb.rgb=function(f){var p,M,S,L,Y,E,O,R=f[0]/360,B=f[1]/100,W=f[2]/100,G=B+W;switch(G>1&&(B/=G,W/=G),S=6*R-(p=Math.floor(6*R)),0!=(1&p)&&(S=1-S),L=B+S*((M=1-W)-B),p){default:case 6:case 0:Y=M,E=L,O=B;break;case 1:Y=L,E=M,O=B;break;case 2:Y=B,E=M,O=L;break;case 3:Y=B,E=L,O=M;break;case 4:Y=L,E=B,O=M;break;case 5:Y=M,E=B,O=L}return[255*Y,255*E,255*O]},L.cmyk.rgb=function(f){var p=f[0]/100,M=f[1]/100,S=f[2]/100,L=f[3]/100;return[255*(1-Math.min(1,p*(1-L)+L)),255*(1-Math.min(1,M*(1-L)+L)),255*(1-Math.min(1,S*(1-L)+L))]},L.xyz.rgb=function(f){var p,M,S,L=f[0]/100,Y=f[1]/100,E=f[2]/100;return M=-.9689*L+1.8758*Y+.0415*E,S=.0557*L+-.204*Y+1.057*E,p=(p=3.2406*L+-1.5372*Y+-.4986*E)>.0031308?1.055*Math.pow(p,1/2.4)-.055:12.92*p,M=M>.0031308?1.055*Math.pow(M,1/2.4)-.055:12.92*M,S=S>.0031308?1.055*Math.pow(S,1/2.4)-.055:12.92*S,[255*(p=Math.min(Math.max(0,p),1)),255*(M=Math.min(Math.max(0,M),1)),255*(S=Math.min(Math.max(0,S),1))]},L.xyz.lab=function(f){var p=f[0],M=f[1],S=f[2];return M/=100,S/=108.883,p=(p/=95.047)>.008856?Math.pow(p,1/3):7.787*p+16/116,[116*(M=M>.008856?Math.pow(M,1/3):7.787*M+16/116)-16,500*(p-M),200*(M-(S=S>.008856?Math.pow(S,1/3):7.787*S+16/116))]},L.lab.xyz=function(f){var p,M,S,L=f[0];p=f[1]/500+(M=(L+16)/116),S=M-f[2]/200;var Y=Math.pow(M,3),E=Math.pow(p,3),O=Math.pow(S,3);return M=Y>.008856?Y:(M-16/116)/7.787,p=E>.008856?E:(p-16/116)/7.787,S=O>.008856?O:(S-16/116)/7.787,[p*=95.047,M*=100,S*=108.883]},L.lab.lch=function(f){var p,M=f[0],S=f[1],L=f[2];return(p=360*Math.atan2(L,S)/2/Math.PI)<0&&(p+=360),[M,Math.sqrt(S*S+L*L),p]},L.lch.lab=function(f){var p,M=f[0],S=f[1];return p=f[2]/360*2*Math.PI,[M,S*Math.cos(p),S*Math.sin(p)]},L.rgb.ansi16=function(f){var p=f[0],M=f[1],S=f[2],Y=1 in arguments?arguments[1]:L.rgb.hsv(f)[2];if(0===(Y=Math.round(Y/50)))return 30;var E=30+(Math.round(S/255)<<2|Math.round(M/255)<<1|Math.round(p/255));return 2===Y&&(E+=60),E},L.hsv.ansi16=function(f){return L.rgb.ansi16(L.hsv.rgb(f),f[2])},L.rgb.ansi256=function(f){var p=f[0],M=f[1],S=f[2];return p===M&&M===S?p<8?16:p>248?231:Math.round((p-8)/247*24)+232:16+36*Math.round(p/255*5)+6*Math.round(M/255*5)+Math.round(S/255*5)},L.ansi16.rgb=function(f){var p=f%10;if(0===p||7===p)return f>50&&(p+=3.5),[p=p/10.5*255,p,p];var M=.5*(1+~~(f>50));return[(1&p)*M*255,(p>>1&1)*M*255,(p>>2&1)*M*255]},L.ansi256.rgb=function(f){if(f>=232){var p=10*(f-232)+8;return[p,p,p]}var M;return f-=16,[Math.floor(f/36)/5*255,Math.floor((M=f%36)/6)/5*255,M%6/5*255]},L.rgb.hex=function(f){var p=(((255&Math.round(f[0]))<<16)+((255&Math.round(f[1]))<<8)+(255&Math.round(f[2]))).toString(16).toUpperCase();return"000000".substring(p.length)+p},L.hex.rgb=function(f){var p=f.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!p)return[0,0,0];var M=p[0];3===p[0].length&&(M=M.split("").map((function(f){return f+f})).join(""));var S=parseInt(M,16);return[S>>16&255,S>>8&255,255&S]},L.rgb.hcg=function(f){var p,M=f[0]/255,S=f[1]/255,L=f[2]/255,Y=Math.max(Math.max(M,S),L),E=Math.min(Math.min(M,S),L),O=Y-E;return p=O<=0?0:Y===M?(S-L)/O%6:Y===S?2+(L-M)/O:4+(M-S)/O+4,p/=6,[360*(p%=1),100*O,100*(O<1?E/(1-O):0)]},L.hsl.hcg=function(f){var p=f[1]/100,M=f[2]/100,S=1,L=0;return(S=M<.5?2*p*M:2*p*(1-M))<1&&(L=(M-.5*S)/(1-S)),[f[0],100*S,100*L]},L.hsv.hcg=function(f){var p=f[1]/100,M=f[2]/100,S=p*M,L=0;return S<1&&(L=(M-S)/(1-S)),[f[0],100*S,100*L]},L.hcg.rgb=function(f){var p=f[0]/360,M=f[1]/100,S=f[2]/100;if(0===M)return[255*S,255*S,255*S];var L,Y=[0,0,0],E=p%1*6,O=E%1,R=1-O;switch(Math.floor(E)){case 0:Y[0]=1,Y[1]=O,Y[2]=0;break;case 1:Y[0]=R,Y[1]=1,Y[2]=0;break;case 2:Y[0]=0,Y[1]=1,Y[2]=O;break;case 3:Y[0]=0,Y[1]=R,Y[2]=1;break;case 4:Y[0]=O,Y[1]=0,Y[2]=1;break;default:Y[0]=1,Y[1]=0,Y[2]=R}return L=(1-M)*S,[255*(M*Y[0]+L),255*(M*Y[1]+L),255*(M*Y[2]+L)]},L.hcg.hsv=function(f){var p=f[1]/100,M=p+f[2]/100*(1-p),S=0;return M>0&&(S=p/M),[f[0],100*S,100*M]},L.hcg.hsl=function(f){var p=f[1]/100,M=f[2]/100*(1-p)+.5*p,S=0;return M>0&&M<.5?S=p/(2*M):M>=.5&&M<1&&(S=p/(2*(1-M))),[f[0],100*S,100*M]},L.hcg.hwb=function(f){var p=f[1]/100,M=p+f[2]/100*(1-p);return[f[0],100*(M-p),100*(1-M)]},L.hwb.hcg=function(f){var p=f[1]/100,M=1-f[2]/100,S=M-p,L=0;return S<1&&(L=(M-S)/(1-S)),[f[0],100*S,100*L]},L.apple.rgb=function(f){return[f[0]/65535*255,f[1]/65535*255,f[2]/65535*255]},L.rgb.apple=function(f){return[f[0]/255*65535,f[1]/255*65535,f[2]/255*65535]},L.gray.rgb=function(f){return[f[0]/100*255,f[0]/100*255,f[0]/100*255]},L.gray.hsl=L.gray.hsv=function(f){return[0,0,f[0]]},L.gray.hwb=function(f){return[0,100,f[0]]},L.gray.cmyk=function(f){return[0,0,0,f[0]]},L.gray.lab=function(f){return[f[0],0,0]},L.gray.hex=function(f){var p=255&Math.round(f[0]/100*255),M=((p<<16)+(p<<8)+p).toString(16).toUpperCase();return"000000".substring(M.length)+M},L.rgb.gray=function(f){return[(f[0]+f[1]+f[2])/3/255*100]}}));function deriveBFS(f){var p=function buildGraph(){for(var f={},p=Object.keys(M),S=p.length,L=0;L1&&(p=Array.prototype.slice.call(arguments));var M=f(p);if("object"==typeof M)for(var S=M.length,L=0;L1&&(p=Array.prototype.slice.call(arguments)),f(p))};return"conversion"in f&&(wrappedFn.conversion=f.conversion),wrappedFn}(L)}))}));var L=S,Y={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},E={getRgba:getRgba,getHsla:getHsla,getRgb:function getRgb(f){var p=getRgba(f);return p&&p.slice(0,3)},getHsl:function getHsl(f){var p=getHsla(f);return p&&p.slice(0,3)},getHwb:getHwb,getAlpha:function getAlpha(f){var p=getRgba(f);return p||(p=getHsla(f))||(p=getHwb(f))?p[3]:void 0},hexString:function hexString(f,p){return p=void 0!==p&&3===f.length?p:f[3],"#"+hexDouble(f[0])+hexDouble(f[1])+hexDouble(f[2])+(p>=0&&p<1?hexDouble(Math.round(255*p)):"")},rgbString:function rgbString(f,p){return p<1||f[3]&&f[3]<1?rgbaString(f,p):"rgb("+f[0]+", "+f[1]+", "+f[2]+")"},rgbaString:rgbaString,percentString:function percentString(f,p){if(p<1||f[3]&&f[3]<1)return percentaString(f,p);var M=Math.round(f[0]/255*100),S=Math.round(f[1]/255*100),L=Math.round(f[2]/255*100);return"rgb("+M+"%, "+S+"%, "+L+"%)"},percentaString:percentaString,hslString:function hslString(f,p){return p<1||f[3]&&f[3]<1?hslaString(f,p):"hsl("+f[0]+", "+f[1]+"%, "+f[2]+"%)"},hslaString:hslaString,hwbString:function hwbString(f,p){return void 0===p&&(p=void 0!==f[3]?f[3]:1),"hwb("+f[0]+", "+f[1]+"%, "+f[2]+"%"+(void 0!==p&&1!==p?", "+p:"")+")"},keyword:function keyword(f){return O[f.slice(0,3)]}};function getRgba(f){if(f){var p=[0,0,0],M=1,S=f.match(/^#([a-fA-F0-9]{3,4})$/i),L="";if(S){L=(S=S[1])[3];for(var E=0;EM?(p+.05)/(M+.05):(M+.05)/(p+.05)},level:function(f){var p=this.contrast(f);return p>=7.1?"AAA":p>=4.5?"AA":""},dark:function(){var f=this.values.rgb;return(299*f[0]+587*f[1]+114*f[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var f=[],p=0;p<3;p++)f[p]=255-this.values.rgb[p];return this.setValues("rgb",f),this},lighten:function(f){var p=this.values.hsl;return p[2]+=p[2]*f,this.setValues("hsl",p),this},darken:function(f){var p=this.values.hsl;return p[2]-=p[2]*f,this.setValues("hsl",p),this},saturate:function(f){var p=this.values.hsl;return p[1]+=p[1]*f,this.setValues("hsl",p),this},desaturate:function(f){var p=this.values.hsl;return p[1]-=p[1]*f,this.setValues("hsl",p),this},whiten:function(f){var p=this.values.hwb;return p[1]+=p[1]*f,this.setValues("hwb",p),this},blacken:function(f){var p=this.values.hwb;return p[2]+=p[2]*f,this.setValues("hwb",p),this},greyscale:function(){var f=this.values.rgb,p=.3*f[0]+.59*f[1]+.11*f[2];return this.setValues("rgb",[p,p,p]),this},clearer:function(f){var p=this.values.alpha;return this.setValues("alpha",p-p*f),this},opaquer:function(f){var p=this.values.alpha;return this.setValues("alpha",p+p*f),this},rotate:function(f){var p=this.values.hsl,M=(p[0]+f)%360;return p[0]=M<0?360+M:M,this.setValues("hsl",p),this},mix:function(f,p){var M=f,S=void 0===p?.5:p,L=2*S-1,Y=this.alpha()-M.alpha(),E=((L*Y==-1?L:(L+Y)/(1+L*Y))+1)/2,O=1-E;return this.rgb(E*this.red()+O*M.red(),E*this.green()+O*M.green(),E*this.blue()+O*M.blue()).alpha(this.alpha()*S+M.alpha()*(1-S))},toJSON:function(){return this.rgb()},clone:function(){var f,p,M=new Color,S=this.values,L=M.values;for(var Y in S)S.hasOwnProperty(Y)&&(f=S[Y],"[object Array]"===(p={}.toString.call(f))?L[Y]=f.slice(0):"[object Number]"===p?L[Y]=f:console.error("unexpected color value:",f));return M}},Color.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Color.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Color.prototype.getValues=function(f){for(var p=this.values,M={},S=0;S=0;L--)p.call(M,f[L],L);else for(L=0;L=1?f:-(Math.sqrt(1-f*f)-1)},easeOutCirc:function(f){return Math.sqrt(1-(f-=1)*f)},easeInOutCirc:function(f){return(f/=.5)<1?-.5*(Math.sqrt(1-f*f)-1):.5*(Math.sqrt(1-(f-=2)*f)+1)},easeInElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:1===f?1:(M||(M=.3),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),-S*Math.pow(2,10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M))},easeOutElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:1===f?1:(M||(M=.3),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),S*Math.pow(2,-10*f)*Math.sin((f-p)*(2*Math.PI)/M)+1)},easeInOutElastic:function(f){var p=1.70158,M=0,S=1;return 0===f?0:2==(f/=.5)?1:(M||(M=.45),S<1?(S=1,p=M/4):p=M/(2*Math.PI)*Math.asin(1/S),f<1?S*Math.pow(2,10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M)*-.5:S*Math.pow(2,-10*(f-=1))*Math.sin((f-p)*(2*Math.PI)/M)*.5+1)},easeInBack:function(f){var p=1.70158;return f*f*((p+1)*f-p)},easeOutBack:function(f){var p=1.70158;return(f-=1)*f*((p+1)*f+p)+1},easeInOutBack:function(f){var p=1.70158;return(f/=.5)<1?f*f*((1+(p*=1.525))*f-p)*.5:.5*((f-=2)*f*((1+(p*=1.525))*f+p)+2)},easeInBounce:function(f){return 1-U.easeOutBounce(1-f)},easeOutBounce:function(f){return f<1/2.75?7.5625*f*f:f<2/2.75?7.5625*(f-=1.5/2.75)*f+.75:f<2.5/2.75?7.5625*(f-=2.25/2.75)*f+.9375:7.5625*(f-=2.625/2.75)*f+.984375},easeInOutBounce:function(f){return f<.5?.5*U.easeInBounce(2*f):.5*U.easeOutBounce(2*f-1)+.5}},q={effects:U};V.easingEffects=U;var X=Math.PI,K=X/180,J=2*X,Z=X/2,Q=X/4,ee=2*X/3,te={clear:function(f){f.ctx.clearRect(0,0,f.width,f.height)},roundedRect:function(f,p,M,S,L,Y){if(Y){var E=Math.min(Y,L/2,S/2),O=p+E,R=M+E,B=p+S-E,W=M+L-E;f.moveTo(p,R),Op.left-1e-6&&f.xp.top-1e-6&&f.y0&&this.requestAnimationFrame()},advance:function(){for(var f,p,M,S,L=this.animations,Y=0;Y=M?(ce.callback(f.onAnimationComplete,[f],p),p.animating=!1,L.splice(Y,1)):++Y}},_e=ce.options.resolve,ye=["push","pop","shift","splice","unshift"];function unlistenArrayEvents(f,p){var M=f._chartjs;if(M){var S=M.listeners,L=S.indexOf(p);-1!==L&&S.splice(L,1),S.length>0||(ye.forEach((function(p){delete f[p]})),delete f._chartjs)}}var DatasetController=function(f,p){this.initialize(f,p)};ce.extend(DatasetController.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(f,p){var M=this;M.chart=f,M.index=p,M.linkScales(),M.addElements(),M._type=M.getMeta().type},updateIndex:function(f){this.index=f},linkScales:function(){var f=this.getMeta(),p=this.chart,M=p.scales,S=this.getDataset(),L=p.options.scales;null!==f.xAxisID&&f.xAxisID in M&&!S.xAxisID||(f.xAxisID=S.xAxisID||L.xAxes[0].id),null!==f.yAxisID&&f.yAxisID in M&&!S.yAxisID||(f.yAxisID=S.yAxisID||L.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(f){return this.chart.scales[f]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&unlistenArrayEvents(this._data,this)},createMetaDataset:function(){var f=this.datasetElementType;return f&&new f({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(f){var p=this.dataElementType;return p&&new p({_chart:this.chart,_datasetIndex:this.index,_index:f})},addElements:function(){var f,p,M=this.getMeta(),S=this.getDataset().data||[],L=M.data;for(f=0,p=S.length;fM&&this.insertElements(M,S-M)},insertElements:function(f,p){for(var M=0;ML?(Y=L/p.innerRadius,f.arc(E,O,p.innerRadius-L,S+Y,M-Y,!0)):f.arc(E,O,L,S+Math.PI/2,M-Math.PI/2),f.closePath(),f.clip()}function drawBorder(f,p,M){var S="inner"===p.borderAlign;S?(f.lineWidth=2*p.borderWidth,f.lineJoin="round"):(f.lineWidth=p.borderWidth,f.lineJoin="bevel"),M.fullCircles&&function drawFullCircleBorders(f,p,M,S){var L,Y=M.endAngle;for(S&&(M.endAngle=M.startAngle+xe,clipArc(f,M),M.endAngle=Y,M.endAngle===M.startAngle&&M.fullCircles&&(M.endAngle+=xe,M.fullCircles--)),f.beginPath(),f.arc(M.x,M.y,M.innerRadius,M.startAngle+xe,M.startAngle,!0),L=0;LO;)L-=xe;for(;L=E&&L<=O,B=Y>=M.innerRadius&&Y<=M.outerRadius;return R&&B}return!1},getCenterPoint:function(){var f=this._view,p=(f.startAngle+f.endAngle)/2,M=(f.innerRadius+f.outerRadius)/2;return{x:f.x+Math.cos(p)*M,y:f.y+Math.sin(p)*M}},getArea:function(){var f=this._view;return Math.PI*((f.endAngle-f.startAngle)/(2*Math.PI))*(Math.pow(f.outerRadius,2)-Math.pow(f.innerRadius,2))},tooltipPosition:function(){var f=this._view,p=f.startAngle+(f.endAngle-f.startAngle)/2,M=(f.outerRadius-f.innerRadius)/2+f.innerRadius;return{x:f.x+Math.cos(p)*M,y:f.y+Math.sin(p)*M}},draw:function(){var f,p=this._chart.ctx,M=this._view,S="inner"===M.borderAlign?.33:0,L={x:M.x,y:M.y,innerRadius:M.innerRadius,outerRadius:Math.max(M.outerRadius-S,0),pixelMargin:S,startAngle:M.startAngle,endAngle:M.endAngle,fullCircles:Math.floor(M.circumference/xe)};if(p.save(),p.fillStyle=M.backgroundColor,p.strokeStyle=M.borderColor,L.fullCircles){for(L.endAngle=L.startAngle+xe,p.beginPath(),p.arc(L.x,L.y,L.outerRadius,L.startAngle,L.endAngle),p.arc(L.x,L.y,L.innerRadius,L.endAngle,L.startAngle,!0),p.closePath(),f=0;ff.x&&(p=swap(p,"left","right")):f.baseM?M:S,r:R.right||L<0?0:L>p?p:L,b:R.bottom||Y<0?0:Y>M?M:Y,l:R.left||E<0?0:E>p?p:E}}function inRange(f,p,M){var S=null===p,L=null===M,Y=!(!f||S&&L)&&getBarBounds(f);return Y&&(S||p>=Y.left&&p<=Y.right)&&(L||M>=Y.top&&M<=Y.bottom)}re._set("global",{elements:{rectangle:{backgroundColor:Ae,borderColor:Ae,borderSkipped:"bottom",borderWidth:0}}});var Pe=me.extend({_type:"rectangle",draw:function(){var f=this._chart.ctx,p=this._view,M=function boundingRects(f){var p=getBarBounds(f),M=p.right-p.left,S=p.bottom-p.top,L=parseBorderWidth(f,M/2,S/2);return{outer:{x:p.left,y:p.top,w:M,h:S},inner:{x:p.left+L.l,y:p.top+L.t,w:M-L.l-L.r,h:S-L.t-L.b}}}(p),S=M.outer,L=M.inner;f.fillStyle=p.backgroundColor,f.fillRect(S.x,S.y,S.w,S.h),S.w===L.w&&S.h===L.h||(f.save(),f.beginPath(),f.rect(S.x,S.y,S.w,S.h),f.clip(),f.fillStyle=p.borderColor,f.rect(L.x,L.y,L.w,L.h),f.fill("evenodd"),f.restore())},height:function(){var f=this._view;return f.base-f.y},inRange:function(f,p){return inRange(this._view,f,p)},inLabelRange:function(f,p){var M=this._view;return isVertical(M)?inRange(M,f,null):inRange(M,null,p)},inXRange:function(f){return inRange(this._view,f,null)},inYRange:function(f){return inRange(this._view,null,f)},getCenterPoint:function(){var f,p,M=this._view;return isVertical(M)?(f=M.x,p=(M.y+M.base)/2):(f=(M.x+M.base)/2,p=M.y),{x:f,y:p}},getArea:function(){var f=this._view;return isVertical(f)?f.width*Math.abs(f.y-f.base):f.height*Math.abs(f.x-f.base)},tooltipPosition:function(){var f=this._view;return{x:f.x,y:f.y}}}),Ye={},Ie=ke,Ee=Se,Oe=Ce,He=Pe;Ye.Arc=Ie,Ye.Line=Ee,Ye.Point=Oe,Ye.Rectangle=He;var ze=ce._deprecated,Ne=ce.valueOrDefault;function computeFitCategoryTraits(f,p,M){var S,L,Y=M.barThickness,E=p.stackCount,O=p.pixels[f],R=ce.isNullOrUndef(Y)?function computeMinSampleSize(f,p){var M,S,L,Y,E=f._length;for(L=1,Y=p.length;L0?Math.min(E,Math.abs(S-M)):E,M=S;return E}(p.scale,p.pixels):-1;return ce.isNullOrUndef(Y)?(S=R*M.categoryPercentage,L=M.barPercentage):(S=Y*E,L=1),{chunk:S/E,ratio:L,start:O-S/2}}re._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),re._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Re=we.extend({dataElementType:Ye.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var f,p,M=this;we.prototype.initialize.apply(M,arguments),(f=M.getMeta()).stack=M.getDataset().stack,f.bar=!0,p=M._getIndexScale().options,ze("bar chart",p.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),ze("bar chart",p.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),ze("bar chart",p.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),ze("bar chart",M._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),ze("bar chart",p.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(f){var p,M,S=this.getMeta().data;for(this._ruler=this.getRuler(),p=0,M=S.length;p=0&&X.min>=0?X.min:X.max,ee=void 0===X.start?X.end:X.max>=0&&X.min>=0?X.max-X.min:X.min-X.max,te=q.length;if(J||void 0===J&&void 0!==Z)for(S=0;S=0&&B.max>=0?B.max:B.min,(X.min<0&&Y<0||X.max>=0&&Y>0)&&(Q+=Y));return E=G.getPixelForValue(Q),R=(O=G.getPixelForValue(Q+ee))-E,void 0!==K&&Math.abs(R)=0&&!V||ee<0&&V?E-K:E+K),{size:R,base:E,head:O,center:O+R/2}},calculateBarIndexPixels:function(f,p,M,S){var L="flex"===S.barThickness?function computeFlexCategoryTraits(f,p,M){var S,L=p.pixels,Y=L[f],E=f>0?L[f-1]:null,O=f=Ge?-Ve:Z<-Ge?Ve:0)+K,ee=Math.cos(Z),te=Math.sin(Z),ne=Math.cos(Q),ie=Math.sin(Q),re=Z<=0&&Q>=0||Q>=Ve,ae=Z<=Ue&&Q>=Ue||Q>=Ve+Ue,oe=Z<=-Ue&&Q>=-Ue||Q>=Ge+Ue,se=Z===-Ge||Q>=Ge?-1:Math.min(ee,ee*X,ne,ne*X),le=oe?-1:Math.min(te,te*X,ie,ie*X),ce=re?1:Math.max(ee,ee*X,ne,ne*X),de=ae?1:Math.max(te,te*X,ie,ie*X);B=(ce-se)/2,W=(de-le)/2,G=-(ce+se)/2,V=-(de+le)/2}for(S=0,L=q.length;S0&&!isNaN(f)?Ve*(Math.abs(f)/p):0},getMaxBorderWidth:function(f){var p,M,S,L,Y,E,O,R,B=0,W=this.chart;if(!f)for(p=0,M=W.data.datasets.length;p(B=O>B?O:B)?R:B);return B},setHoverStyle:function(f){var p=f._model,M=f._options,S=ce.getHoverColor;f.$previousStyle={backgroundColor:p.backgroundColor,borderColor:p.borderColor,borderWidth:p.borderWidth},p.backgroundColor=We(M.hoverBackgroundColor,S(M.backgroundColor)),p.borderColor=We(M.hoverBorderColor,S(M.borderColor)),p.borderWidth=We(M.hoverBorderWidth,M.borderWidth)},_getRingWeightOffset:function(f){for(var p=0,M=0;M0&&Je(R[f-1]._model,O)&&(M.controlPointPreviousX=capControlPoint(M.controlPointPreviousX,O.left,O.right),M.controlPointPreviousY=capControlPoint(M.controlPointPreviousY,O.top,O.bottom)),f0&&(Y=f.getDatasetMeta(Y[0]._datasetIndex).data),Y},"x-axis":function(f,p){return indexMode(f,p,{intersect:!1})},point:function(f,p){return getIntersectItems(f,getRelativePosition(p,f))},nearest:function(f,p,M){var S=getRelativePosition(p,f);M.axis=M.axis||"xy";var L=getDistanceMetricForAxis(M.axis);return getNearestItems(f,S,M.intersect,L)},x:function(f,p,M){var S=getRelativePosition(p,f),L=[],Y=!1;return parseVisibleItems(f,(function(f){f.inXRange(S.x)&&L.push(f),f.inRange(S.x,S.y)&&(Y=!0)})),M.intersect&&!Y&&(L=[]),L},y:function(f,p,M){var S=getRelativePosition(p,f),L=[],Y=!1;return parseVisibleItems(f,(function(f){f.inYRange(S.y)&&L.push(f),f.inRange(S.x,S.y)&&(Y=!0)})),M.intersect&&!Y&&(L=[]),L}}},ot=ce.extend;function filterByPosition(f,p){return ce.where(f,(function(f){return f.pos===p}))}function sortByWeight(f,p){return f.sort((function(f,M){var S=p?M:f,L=p?f:M;return S.weight===L.weight?S.index-L.index:S.weight-L.weight}))}function getCombinedMax(f,p,M,S){return Math.max(f[M],p[M])+Math.max(f[S],p[S])}function updateDims(f,p,M){var S,L,Y=M.box,E=f.maxPadding;if(M.size&&(f[M.pos]-=M.size),M.size=M.horizontal?Y.height:Y.width,f[M.pos]+=M.size,Y.getPadding){var O=Y.getPadding();E.top=Math.max(E.top,O.top),E.left=Math.max(E.left,O.left),E.bottom=Math.max(E.bottom,O.bottom),E.right=Math.max(E.right,O.right)}if(S=p.outerWidth-getCombinedMax(E,f,"left","right"),L=p.outerHeight-getCombinedMax(E,f,"top","bottom"),S!==f.w||L!==f.h){f.w=S,f.h=L;var R=M.horizontal?[S,f.w]:[L,f.h];return!(R[0]===R[1]||isNaN(R[0])&&isNaN(R[1]))}}function getMargins(f,p){var M=p.maxPadding;function marginForPositions(f){var S={left:0,top:0,right:0,bottom:0};return f.forEach((function(f){S[f]=Math.max(p[f],M[f])})),S}return marginForPositions(f?["left","right"]:["top","bottom"])}function fitBoxes(f,p,M){var S,L,Y,E,O,R,B=[];for(S=0,L=f.length;S div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n"})),ct=["animationstart","webkitAnimationStart"],dt={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function readUsedSize(f,p){var M=ce.getStyle(f,p),S=M&&M.match(/^(\d+)(\.\d+)?px$/);return S?Number(S[1]):void 0}var ut=!!function(){var f=!1;try{var p=Object.defineProperty({},"passive",{get:function(){f=!0}});window.addEventListener("e",null,p)}catch(f){}return f}()&&{passive:!0};function addListener(f,p,M){f.addEventListener(p,M,ut)}function removeListener(f,p,M){f.removeEventListener(p,M,ut)}function createEvent(f,p,M,S,L){return{type:f,chart:p,native:L||null,x:void 0!==M?M:null,y:void 0!==S?S:null}}function createDiv(f){var p=document.createElement("div");return p.className=f||"",p}function addResizeListener(f,p,M){var S=f.$chartjs||(f.$chartjs={}),L=S.resizer=function createResizer(f){var p=createDiv("chartjs-size-monitor"),M=createDiv("chartjs-size-monitor-expand"),S=createDiv("chartjs-size-monitor-shrink");M.appendChild(createDiv()),S.appendChild(createDiv()),p.appendChild(M),p.appendChild(S),p._reset=function(){M.scrollLeft=1e6,M.scrollTop=1e6,S.scrollLeft=1e6,S.scrollTop=1e6};var onScroll=function(){p._reset(),f()};return addListener(M,"scroll",onScroll.bind(M,"expand")),addListener(S,"scroll",onScroll.bind(S,"shrink")),p}(function throttled(f,p){var M=!1,S=[];return function(){S=Array.prototype.slice.call(arguments),p=p||this,M||(M=!0,ce.requestAnimFrame.call(window,(function(){M=!1,f.apply(p,S)})))}}((function(){if(S.resizer){var L=M.options.maintainAspectRatio&&f.parentNode,Y=L?L.clientWidth:0;p(createEvent("resize",M)),L&&L.clientWidth0){var Y=f[0];Y.label?M=Y.label:Y.xLabel?M=Y.xLabel:L>0&&Y.index-1?f.split("\n"):f}function getBaseModel(f){var p=re.global;return{xPadding:f.xPadding,yPadding:f.yPadding,xAlign:f.xAlign,yAlign:f.yAlign,rtl:f.rtl,textDirection:f.textDirection,bodyFontColor:f.bodyFontColor,_bodyFontFamily:bt(f.bodyFontFamily,p.defaultFontFamily),_bodyFontStyle:bt(f.bodyFontStyle,p.defaultFontStyle),_bodyAlign:f.bodyAlign,bodyFontSize:bt(f.bodyFontSize,p.defaultFontSize),bodySpacing:f.bodySpacing,titleFontColor:f.titleFontColor,_titleFontFamily:bt(f.titleFontFamily,p.defaultFontFamily),_titleFontStyle:bt(f.titleFontStyle,p.defaultFontStyle),titleFontSize:bt(f.titleFontSize,p.defaultFontSize),_titleAlign:f.titleAlign,titleSpacing:f.titleSpacing,titleMarginBottom:f.titleMarginBottom,footerFontColor:f.footerFontColor,_footerFontFamily:bt(f.footerFontFamily,p.defaultFontFamily),_footerFontStyle:bt(f.footerFontStyle,p.defaultFontStyle),footerFontSize:bt(f.footerFontSize,p.defaultFontSize),_footerAlign:f.footerAlign,footerSpacing:f.footerSpacing,footerMarginTop:f.footerMarginTop,caretSize:f.caretSize,cornerRadius:f.cornerRadius,backgroundColor:f.backgroundColor,opacity:0,legendColorBackground:f.multiKeyBackground,displayColors:f.displayColors,borderColor:f.borderColor,borderWidth:f.borderWidth}}function getAlignedX(f,p){return"center"===p?f.x+f.width/2:"right"===p?f.x+f.width-f.xPadding:f.x+f.xPadding}function getBeforeAfterBodyLines(f){return pushOrConcat([],splitNewlines(f))}var yt=me.extend({initialize:function(){this._model=getBaseModel(this._options),this._lastActive=[]},getTitle:function(){var f=this,p=f._options,M=p.callbacks,S=M.beforeTitle.apply(f,arguments),L=M.title.apply(f,arguments),Y=M.afterTitle.apply(f,arguments),E=[];return E=pushOrConcat(E,splitNewlines(S)),E=pushOrConcat(E,splitNewlines(L)),E=pushOrConcat(E,splitNewlines(Y))},getBeforeBody:function(){return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(f,p){var M=this,S=M._options.callbacks,L=[];return ce.each(f,(function(f){var Y={before:[],lines:[],after:[]};pushOrConcat(Y.before,splitNewlines(S.beforeLabel.call(M,f,p))),pushOrConcat(Y.lines,S.label.call(M,f,p)),pushOrConcat(Y.after,splitNewlines(S.afterLabel.call(M,f,p))),L.push(Y)})),L},getAfterBody:function(){return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var f=this,p=f._options.callbacks,M=p.beforeFooter.apply(f,arguments),S=p.footer.apply(f,arguments),L=p.afterFooter.apply(f,arguments),Y=[];return Y=pushOrConcat(Y,splitNewlines(M)),Y=pushOrConcat(Y,splitNewlines(S)),Y=pushOrConcat(Y,splitNewlines(L))},update:function(f){var p,M,S,L,Y,E,O,R,B,W,G=this,V=G._options,U=G._model,q=G._model=getBaseModel(V),X=G._active,K=G._data,J={xAlign:U.xAlign,yAlign:U.yAlign},Z={x:U.x,y:U.y},Q={width:U.width,height:U.height},ee={x:U.caretX,y:U.caretY};if(X.length){q.opacity=1;var te=[],ne=[];ee=_t[V.position].call(G,X,G._eventPosition);var ie=[];for(p=0,M=X.length;pS.width&&(L=S.width-p.width),L<0&&(L=0)),"top"===W?Y+=G:Y-="bottom"===W?p.height+G:p.height/2,"center"===W?"left"===B?L+=G:"right"===B&&(L-=G):"left"===B?L-=V:"right"===B&&(L+=V),{x:L,y:Y}}(q,Q,J=function determineAlignment(f,p){var M,S,L,Y,E,O=f._model,R=f._chart,B=f._chart.chartArea,W="center",G="center";O.yR.height-p.height&&(G="bottom");var V=(B.left+B.right)/2,U=(B.top+B.bottom)/2;"center"===G?(M=function(f){return f<=V},S=function(f){return f>V}):(M=function(f){return f<=p.width/2},S=function(f){return f>=R.width-p.width/2}),L=function(f){return f+p.width+O.caretSize+O.caretPadding>R.width},Y=function(f){return f-p.width-O.caretSize-O.caretPadding<0},E=function(f){return f<=U?"top":"bottom"},M(O.x)?(W="left",L(O.x)&&(W="center",G=E(O.y))):S(O.x)&&(W="right",Y(O.x)&&(W="center",G=E(O.y)));var q=f._options;return{xAlign:q.xAlign?q.xAlign:W,yAlign:q.yAlign?q.yAlign:G}}(this,Q),G._chart)}else q.opacity=0;return q.xAlign=J.xAlign,q.yAlign=J.yAlign,q.x=Z.x,q.y=Z.y,q.width=Q.width,q.height=Q.height,q.caretX=ee.x,q.caretY=ee.y,G._model=q,f&&V.custom&&V.custom.call(G,q),G},drawCaret:function(f,p){var M=this._chart.ctx,S=this._view,L=this.getCaretPosition(f,p,S);M.lineTo(L.x1,L.y1),M.lineTo(L.x2,L.y2),M.lineTo(L.x3,L.y3)},getCaretPosition:function(f,p,M){var S,L,Y,E,O,R,B=M.caretSize,W=M.cornerRadius,G=M.xAlign,V=M.yAlign,U=f.x,q=f.y,X=p.width,K=p.height;if("center"===V)O=q+K/2,"left"===G?(L=(S=U)-B,Y=S,E=O+B,R=O-B):(L=(S=U+X)+B,Y=S,E=O-B,R=O+B);else if("left"===G?(S=(L=U+W+B)-B,Y=L+B):"right"===G?(S=(L=U+X-W-B)-B,Y=L+B):(S=(L=M.caretX)-B,Y=L+B),"top"===V)O=(E=q)-B,R=E;else{O=(E=q+K)+B,R=E;var J=Y;Y=S,S=J}return{x1:S,x2:L,x3:Y,y1:E,y2:O,y3:R}},drawTitle:function(f,p,M){var S,L,Y,E=p.title,O=E.length;if(O){var R=vt(p.rtl,p.x,p.width);for(f.x=getAlignedX(p,p._titleAlign),M.textAlign=R.textAlign(p._titleAlign),M.textBaseline="middle",S=p.titleFontSize,L=p.titleSpacing,M.fillStyle=p.titleFontColor,M.font=ce.fontString(S,p._titleFontStyle,p._titleFontFamily),Y=0;Y0&&M.stroke()},draw:function(){var f=this._chart.ctx,p=this._view;if(0!==p.opacity){var M={width:p.width,height:p.height},S={x:p.x,y:p.y},L=Math.abs(p.opacity<.001)?0:p.opacity,Y=p.title.length||p.beforeBody.length||p.body.length||p.afterBody.length||p.footer.length;this._options.enabled&&Y&&(f.save(),f.globalAlpha=L,this.drawBackground(S,p,f,M),S.y+=p.yPadding,ce.rtl.overrideTextDirection(f,p.textDirection),this.drawTitle(S,p,f),this.drawBody(S,p,f),this.drawFooter(S,p,f),ce.rtl.restoreTextDirection(f,p.textDirection),f.restore())}},handleEvent:function(f){var p,M=this,S=M._options;return M._lastActive=M._lastActive||[],"mouseout"===f.type?M._active=[]:(M._active=M._chart.getElementsAtEventForMode(f,S.mode,S),S.reverse&&M._active.reverse()),(p=!ce.arrayEquals(M._active,M._lastActive))&&(M._lastActive=M._active,(S.enabled||S.custom)&&(M._eventPosition={x:f.x,y:f.y},M.update(!0),M.pivot())),p}}),wt=_t,xt=yt;xt.positioners=wt;var kt=ce.valueOrDefault;function mergeScaleConfig(){return ce.merge(Object.create(null),[].slice.call(arguments),{merger:function(f,p,M,S){if("xAxes"===f||"yAxes"===f){var L,Y,E,O=M[f].length;for(p[f]||(p[f]=[]),L=0;L=p[f].length&&p[f].push({}),!p[f][L].type||E.type&&E.type!==p[f][L].type?ce.merge(p[f][L],[gt.getScaleDefaults(Y),E]):ce.merge(p[f][L],E)}else ce._merger(f,p,M,S)}})}function mergeConfig(){return ce.merge(Object.create(null),[].slice.call(arguments),{merger:function(f,p,M,S){var L=p[f]||Object.create(null),Y=M[f];"scales"===f?p[f]=mergeScaleConfig(L,Y):"scale"===f?p[f]=ce.merge(L,[gt.getScaleDefaults(Y.type),Y]):ce._merger(f,p,M,S)}})}function updateConfig(f){var p=f.options;ce.each(f.scales,(function(p){st.removeBox(f,p)})),p=mergeConfig(re.global,re[f.config.type],p),f.options=f.config.options=p,f.ensureScalesHaveIDs(),f.buildOrUpdateScales(),f.tooltip._options=p.tooltips,f.tooltip.initialize()}function nextAvailableScaleId(f,p,M){var S,hasId=function(f){return f.id===S};do{S=p+M++}while(ce.findIndex(f,hasId)>=0);return S}function positionIsHorizontal(f){return"top"===f||"bottom"===f}function compare2Level(f,p){return function(M,S){return M[f]===S[f]?M[p]-S[p]:M[f]-S[f]}}re._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Chart=function(f,p){return this.construct(f,p),this};ce.extend(Chart.prototype,{construct:function(f,p){var M=this;p=function initConfig(f){var p=(f=f||Object.create(null)).data=f.data||{};return p.datasets=p.datasets||[],p.labels=p.labels||[],f.options=mergeConfig(re.global,re[f.type],f.options||{}),f}(p);var S=pt.acquireContext(f,p),L=S&&S.canvas,Y=L&&L.height,E=L&&L.width;M.id=ce.uid(),M.ctx=S,M.canvas=L,M.config=p,M.width=E,M.height=Y,M.aspectRatio=Y?E/Y:null,M.options=p.options,M._bufferedRender=!1,M._layers=[],M.chart=M,M.controller=M,Chart.instances[M.id]=M,Object.defineProperty(M,"data",{get:function(){return M.config.data},set:function(f){M.config.data=f}}),S&&L?(M.initialize(),M.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var f=this;return mt.notify(f,"beforeInit"),ce.retinaScale(f,f.options.devicePixelRatio),f.bindEvents(),f.options.responsive&&f.resize(!0),f.initToolTip(),mt.notify(f,"afterInit"),f},clear:function(){return ce.canvas.clear(this),this},stop:function(){return ve.cancelAnimation(this),this},resize:function(f){var p=this,M=p.options,S=p.canvas,L=M.maintainAspectRatio&&p.aspectRatio||null,Y=Math.max(0,Math.floor(ce.getMaximumWidth(S))),E=Math.max(0,Math.floor(L?Y/L:ce.getMaximumHeight(S)));if((p.width!==Y||p.height!==E)&&(S.width=p.width=Y,S.height=p.height=E,S.style.width=Y+"px",S.style.height=E+"px",ce.retinaScale(p,M.devicePixelRatio),!f)){var O={width:Y,height:E};mt.notify(p,"resize",[O]),M.onResize&&M.onResize(p,O),p.stop(),p.update({duration:M.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var f=this.options,p=f.scales||{},M=f.scale;ce.each(p.xAxes,(function(f,M){f.id||(f.id=nextAvailableScaleId(p.xAxes,"x-axis-",M))})),ce.each(p.yAxes,(function(f,M){f.id||(f.id=nextAvailableScaleId(p.yAxes,"y-axis-",M))})),M&&(M.id=M.id||"scale")},buildOrUpdateScales:function(){var f=this,p=f.options,M=f.scales||{},S=[],L=Object.keys(M).reduce((function(f,p){return f[p]=!1,f}),{});p.scales&&(S=S.concat((p.scales.xAxes||[]).map((function(f){return{options:f,dtype:"category",dposition:"bottom"}})),(p.scales.yAxes||[]).map((function(f){return{options:f,dtype:"linear",dposition:"left"}})))),p.scale&&S.push({options:p.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ce.each(S,(function(p){var S=p.options,Y=S.id,E=kt(S.type,p.dtype);positionIsHorizontal(S.position)!==positionIsHorizontal(p.dposition)&&(S.position=p.dposition),L[Y]=!0;var O=null;if(Y in M&&M[Y].type===E)(O=M[Y]).options=S,O.ctx=f.ctx,O.chart=f;else{var R=gt.getScaleConstructor(E);if(!R)return;O=new R({id:Y,type:E,options:S,ctx:f.ctx,chart:f}),M[O.id]=O}O.mergeTicksOptions(),p.isDefault&&(f.scale=O)})),ce.each(L,(function(f,p){f||delete M[p]})),f.scales=M,gt.addScalesToLayout(this)},buildOrUpdateControllers:function(){var f,p,M=this,S=[],L=M.data.datasets;for(f=0,p=L.length;f=0;--M)this.drawDataset(p[M],f);mt.notify(this,"afterDatasetsDraw",[f])}},drawDataset:function(f,p){var M={meta:f,index:f.index,easingValue:p};!1!==mt.notify(this,"beforeDatasetDraw",[M])&&(f.controller.draw(p),mt.notify(this,"afterDatasetDraw",[M]))},_drawTooltip:function(f){var p=this.tooltip,M={tooltip:p,easingValue:f};!1!==mt.notify(this,"beforeTooltipDraw",[M])&&(p.draw(),mt.notify(this,"afterTooltipDraw",[M]))},getElementAtEvent:function(f){return at.modes.single(this,f)},getElementsAtEvent:function(f){return at.modes.label(this,f,{intersect:!0})},getElementsAtXAxis:function(f){return at.modes["x-axis"](this,f,{intersect:!0})},getElementsAtEventForMode:function(f,p,M){var S=at.modes[p];return"function"==typeof S?S(this,f,M):[]},getDatasetAtEvent:function(f){return at.modes.dataset(this,f,{intersect:!0})},getDatasetMeta:function(f){var p=this.data.datasets[f];p._meta||(p._meta={});var M=p._meta[this.id];return M||(M=p._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:p.order||0,index:f}),M},getVisibleDatasetCount:function(){for(var f=0,p=0,M=this.data.datasets.length;p3?M[2]-M[1]:M[1]-M[0];Math.abs(S)>1&&f!==Math.floor(f)&&(S=f-Math.floor(f));var L=ce.log10(Math.abs(S)),Y="";if(0!==f)if(Math.max(Math.abs(M[0]),Math.abs(M[M.length-1]))<1e-4){var E=ce.log10(Math.abs(f)),O=Math.floor(E)-Math.floor(L);O=Math.max(Math.min(O,20),0),Y=f.toExponential(O)}else{var R=-1*Math.floor(L);R=Math.max(Math.min(R,20),0),Y=f.toFixed(R)}else Y="0";return Y},logarithmic:function(f,p,M){var S=f/Math.pow(10,Math.floor(ce.log10(f)));return 0===f?"0":1===S||2===S||5===S||0===p||p===M.length-1?f.toExponential():""}}},Lt=ce.isArray,Dt=ce.isNullOrUndef,Ct=ce.valueOrDefault,At=ce.valueAtIndexOrDefault;function getPixelForGridLine(f,p,M){var S,L=f.getTicks().length,Y=Math.min(p,L-1),E=f.getPixelForTick(Y),O=f._startPixel,R=f._endPixel;if(!(M&&(S=1===L?Math.max(E-O,R-E):0===p?(f.getPixelForTick(1)-E)/2:(E-f.getPixelForTick(Y-1))/2,(E+=YR+1e-6)))return E}function computeLabelSizes(f,p,M,S){var L,Y,E,O,R,B,W,G,V,U,q,X,K,J=M.length,Z=[],Q=[],ee=[],te=0,ne=0;for(L=0;Lp){for(M=0;M=V||W<=1||!O.isHorizontal()?O.labelRotation=G:(p=(f=O._getLabelSizes()).widest.width,M=f.highest.height-f.highest.offset,S=Math.min(O.maxWidth,O.chart.width-p),p+6>(L=R.offset?O.maxWidth/W:S/(W-1))&&(L=S/(W-(R.offset?.5:1)),Y=O.maxHeight-getTickMarkLength(R.gridLines)-B.padding-getScaleLabelHeight(R.scaleLabel),E=Math.sqrt(p*p+M*M),U=ce.toDegrees(Math.min(Math.asin(Math.min((f.highest.height+6)/L,1)),Math.asin(Math.min(Y/E,1))-Math.asin(M/E))),U=Math.max(G,Math.min(V,U))),O.labelRotation=U)},afterCalculateTickRotation:function(){ce.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ce.callback(this.options.beforeFit,[this])},fit:function(){var f=this,p=f.minSize={width:0,height:0},M=f.chart,S=f.options,L=S.ticks,Y=S.scaleLabel,E=S.gridLines,O=f._isVisible(),R="bottom"===S.position,B=f.isHorizontal();if(B?p.width=f.maxWidth:O&&(p.width=getTickMarkLength(E)+getScaleLabelHeight(Y)),B?O&&(p.height=getTickMarkLength(E)+getScaleLabelHeight(Y)):p.height=f.maxHeight,L.display&&O){var W=parseTickFontOptions(L),G=f._getLabelSizes(),V=G.first,U=G.last,q=G.widest,X=G.highest,K=.4*W.minor.lineHeight,J=L.padding;if(B){var Z=0!==f.labelRotation,Q=ce.toRadians(f.labelRotation),ee=Math.cos(Q),te=Math.sin(Q),ne=te*q.width+ee*(X.height-(Z?X.offset:0))+(Z?0:K);p.height=Math.min(f.maxHeight,p.height+ne+J);var ie,re,ae=f.getPixelForTick(0)-f.left,oe=f.right-f.getPixelForTick(f.getTicks().length-1);Z?(ie=R?ee*V.width+te*V.offset:te*(V.height-V.offset),re=R?te*(U.height-U.offset):ee*U.width+te*U.offset):(ie=V.width/2,re=U.width/2),f.paddingLeft=Math.max((ie-ae)*f.width/(f.width-ae),0)+3,f.paddingRight=Math.max((re-oe)*f.width/(f.width-oe),0)+3}else{var se=L.mirror?0:q.width+J+K;p.width=Math.min(f.maxWidth,p.width+se),f.paddingTop=V.height/2,f.paddingBottom=U.height/2}}f.handleMargins(),B?(f.width=f._length=M.width-f.margins.left-f.margins.right,f.height=p.height):(f.width=p.width,f.height=f._length=M.height-f.margins.top-f.margins.bottom)},handleMargins:function(){var f=this;f.margins&&(f.margins.left=Math.max(f.paddingLeft,f.margins.left),f.margins.top=Math.max(f.paddingTop,f.margins.top),f.margins.right=Math.max(f.paddingRight,f.margins.right),f.margins.bottom=Math.max(f.paddingBottom,f.margins.bottom))},afterFit:function(){ce.callback(this.options.afterFit,[this])},isHorizontal:function(){var f=this.options.position;return"top"===f||"bottom"===f},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(f){if(Dt(f))return NaN;if(("number"==typeof f||f instanceof Number)&&!isFinite(f))return NaN;if(f)if(this.isHorizontal()){if(void 0!==f.x)return this.getRightValue(f.x)}else if(void 0!==f.y)return this.getRightValue(f.y);return f},_convertTicksToLabels:function(f){var p,M,S,L=this;for(L.ticks=f.map((function(f){return f.value})),L.beforeTickToLabelConversion(),p=L.convertTicksToLabels(f)||L.ticks,L.afterTickToLabelConversion(),M=0,S=f.length;MM-1?null:this.getPixelForDecimal(f*S+(p?S/2:0))},getPixelForDecimal:function(f){return this._reversePixels&&(f=1-f),this._startPixel+f*this._length},getDecimalForPixel:function(f){var p=(f-this._startPixel)/this._length;return this._reversePixels?1-p:p},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var f=this.min,p=this.max;return this.beginAtZero?0:f<0&&p<0?p:f>0&&p>0?f:0},_autoSkip:function(f){var p,M,S,L,Y=this.options.ticks,E=this._length,O=Y.maxTicksLimit||E/this._tickSize()+1,R=Y.major.enabled?function getMajorIndices(f){var p,M,S=[];for(p=0,M=f.length;pO)return function skipMajors(f,p,M){var S,L,Y=0,E=p[0];for(M=Math.ceil(M),S=0;SB)return Y;return Math.max(B,1)}(R,f,0,O),B>0){for(p=0,M=B-1;p1?(G-W)/(B-1):null,skip(f,S,ce.isNullOrUndef(L)?0:W-L,W),skip(f,S,G,ce.isNullOrUndef(L)?f.length:G+L),nonSkipped(f)}return skip(f,S),nonSkipped(f)},_tickSize:function(){var f=this.options.ticks,p=ce.toRadians(this.labelRotation),M=Math.abs(Math.cos(p)),S=Math.abs(Math.sin(p)),L=this._getLabelSizes(),Y=f.autoSkipPadding||0,E=L?L.widest.width+Y:0,O=L?L.highest.height+Y:0;return this.isHorizontal()?O*M>E*S?E/M:O/S:O*S=0&&(E=f),void 0!==Y&&(f=M.indexOf(Y))>=0&&(O=f),p.minIndex=E,p.maxIndex=O,p.min=M[E],p.max=M[O]},buildTicks:function(){var f=this._getLabels(),p=this.minIndex,M=this.maxIndex;this.ticks=0===p&&M===f.length-1?f:f.slice(p,M+1)},getLabelForIndex:function(f,p){var M=this.chart;return M.getDatasetMeta(p).controller._getValueScaleId()===this.id?this.getRightValue(M.data.datasets[p].data[f]):this._getLabels()[f]},_configure:function(){var f=this,p=f.options.offset,M=f.ticks;Yt.prototype._configure.call(f),f.isHorizontal()||(f._reversePixels=!f._reversePixels),M&&(f._startValue=f.minIndex-(p?.5:0),f._valueRange=Math.max(M.length-(p?0:1),1))},getPixelForValue:function(f,p,M){var S,L,Y,E=this;return It(p)||It(M)||(f=E.chart.data.datasets[M].data[p]),It(f)||(S=E.isHorizontal()?f.x:f.y),(void 0!==S||void 0!==f&&isNaN(p))&&(L=E._getLabels(),f=ce.valueOrDefault(S,f),p=-1!==(Y=L.indexOf(f))?Y:p,isNaN(p)&&(p=f)),E.getPixelForDecimal((p-E._startValue)/E._valueRange)},getPixelForTick:function(f){var p=this.ticks;return f<0||f>p.length-1?null:this.getPixelForValue(p[f],f+this.minIndex)},getValueForPixel:function(f){var p=Math.round(this._startValue+this.getDecimalForPixel(f)*this._valueRange);return Math.min(Math.max(p,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),Ot={position:"bottom"};Et._defaults=Ot;var Ht=ce.noop,zt=ce.isNullOrUndef,Nt=Yt.extend({getRightValue:function(f){return"string"==typeof f?+f:Yt.prototype.getRightValue.call(this,f)},handleTickRangeOptions:function(){var f=this,p=f.options.ticks;if(p.beginAtZero){var M=ce.sign(f.min),S=ce.sign(f.max);M<0&&S<0?f.max=0:M>0&&S>0&&(f.min=0)}var L=void 0!==p.min||void 0!==p.suggestedMin,Y=void 0!==p.max||void 0!==p.suggestedMax;void 0!==p.min?f.min=p.min:void 0!==p.suggestedMin&&(null===f.min?f.min=p.suggestedMin:f.min=Math.min(f.min,p.suggestedMin)),void 0!==p.max?f.max=p.max:void 0!==p.suggestedMax&&(null===f.max?f.max=p.suggestedMax:f.max=Math.max(f.max,p.suggestedMax)),L!==Y&&f.min>=f.max&&(L?f.max=f.min+1:f.min=f.max-1),f.min===f.max&&(f.max++,p.beginAtZero||f.min--)},getTickLimit:function(){var f,p=this.options.ticks,M=p.stepSize,S=p.maxTicksLimit;return M?f=Math.ceil(this.max/M)-Math.floor(this.min/M)+1:(f=this._computeTickLimit(),S=S||11),S&&(f=Math.min(S,f)),f},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Ht,buildTicks:function(){var f=this,p=f.options.ticks,M=f.getTickLimit(),S={maxTicks:M=Math.max(2,M),min:p.min,max:p.max,precision:p.precision,stepSize:ce.valueOrDefault(p.fixedStepSize,p.stepSize)},L=f.ticks=function generateTicks(f,p){var M,S,L,Y,E=[],O=f.stepSize,R=O||1,B=f.maxTicks-1,W=f.min,G=f.max,V=f.precision,U=p.min,q=p.max,X=ce.niceNum((q-U)/B/R)*R;if(X<1e-14&&zt(W)&&zt(G))return[U,q];(Y=Math.ceil(q/X)-Math.floor(U/X))>B&&(X=ce.niceNum(Y*X/B/R)*R),O||zt(V)?M=Math.pow(10,ce._decimalPlaces(X)):(M=Math.pow(10,V),X=Math.ceil(X*M)/M),S=Math.floor(U/X)*X,L=Math.ceil(q/X)*X,O&&(!zt(W)&&ce.almostWhole(W/X,X/1e3)&&(S=W),!zt(G)&&ce.almostWhole(G/X,X/1e3)&&(L=G)),Y=(L-S)/X,Y=ce.almostEquals(Y,Math.round(Y),X/1e3)?Math.round(Y):Math.ceil(Y),S=Math.round(S*M)/M,L=Math.round(L*M)/M,E.push(zt(W)?S:W);for(var K=1;Kp.length-1?null:this.getPixelForValue(p[f])}}),Ft=Rt;jt._defaults=Ft;var Bt=ce.valueOrDefault,Wt=ce.math.log10,Gt={position:"left",ticks:{callback:St.formatters.logarithmic}};function nonNegativeOrDefault(f,p){return ce.isFinite(f)&&f>=0?f:p}var Vt=Yt.extend({determineDataLimits:function(){var f,p,M,S,L,Y,E=this,O=E.options,R=E.chart,B=R.data.datasets,W=E.isHorizontal();function IDMatches(f){return W?f.xAxisID===E.id:f.yAxisID===E.id}E.min=Number.POSITIVE_INFINITY,E.max=Number.NEGATIVE_INFINITY,E.minNotZero=Number.POSITIVE_INFINITY;var G=O.stacked;if(void 0===G)for(f=0;f0){var p=ce.min(f),M=ce.max(f);E.min=Math.min(E.min,p),E.max=Math.max(E.max,M)}}))}else for(f=0;f0?f.minNotZero=f.min:f.max<1?f.minNotZero=Math.pow(10,Math.floor(Wt(f.max))):f.minNotZero=1)},buildTicks:function(){var f=this,p=f.options.ticks,M=!f.isHorizontal(),S={min:nonNegativeOrDefault(p.min),max:nonNegativeOrDefault(p.max)},L=f.ticks=function generateTicks$1(f,p){var M,S,L=[],Y=Bt(f.min,Math.pow(10,Math.floor(Wt(p.min)))),E=Math.floor(Wt(p.max)),O=Math.ceil(p.max/Math.pow(10,E));0===Y?(M=Math.floor(Wt(p.minNotZero)),S=Math.floor(p.minNotZero/Math.pow(10,M)),L.push(Y),Y=S*Math.pow(10,M)):(M=Math.floor(Wt(Y)),S=Math.floor(Y/Math.pow(10,M)));var R=M<0?Math.pow(10,Math.abs(M)):1;do{L.push(Y),10==++S&&(S=1,R=++M>=0?1:R),Y=Math.round(S*Math.pow(10,M)*R)/R}while(Mp.length-1?null:this.getPixelForValue(p[f])},_getFirstTickValue:function(f){var p=Math.floor(Wt(f));return Math.floor(f/Math.pow(10,p))*Math.pow(10,p)},_configure:function(){var f=this,p=f.min,M=0;Yt.prototype._configure.call(f),0===p&&(p=f._getFirstTickValue(f.minNotZero),M=Bt(f.options.ticks.fontSize,re.global.defaultFontSize)/f._length),f._startValue=Wt(p),f._valueOffset=M,f._valueRange=(Wt(f.max)-Wt(p))/(1-M)},getPixelForValue:function(f){var p=this,M=0;return(f=+p.getRightValue(f))>p.min&&f>0&&(M=(Wt(f)-p._startValue)/p._valueRange+p._valueOffset),p.getPixelForDecimal(M)},getValueForPixel:function(f){var p=this,M=p.getDecimalForPixel(f);return 0===M&&0===p.min?0:Math.pow(10,p._startValue+(M-p._valueOffset)*p._valueRange)}}),Ut=Gt;Vt._defaults=Ut;var $t=ce.valueOrDefault,qt=ce.valueAtIndexOrDefault,Xt=ce.options.resolve,Kt={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:St.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(f){return f}}};function getTickBackdropHeight(f){var p=f.ticks;return p.display&&f.display?$t(p.fontSize,re.global.defaultFontSize)+2*p.backdropPaddingY:0}function determineLimits(f,p,M,S,L){return f===S||f===L?{start:p-M/2,end:p+M/2}:fL?{start:p-M,end:p}:{start:p,end:p+M}}function getTextAlignForAngle(f){return 0===f||180===f?"center":f<180?"left":"right"}function fillText(f,p,M,S){var L,Y,E=M.y+S/2;if(ce.isArray(p))for(L=0,Y=p.length;L270||f<90)&&(M.y-=p.h)}function numberOrZero(f){return ce.isNumber(f)?f:0}var Jt=Nt.extend({setDimensions:function(){var f=this;f.width=f.maxWidth,f.height=f.maxHeight,f.paddingTop=getTickBackdropHeight(f.options)/2,f.xCenter=Math.floor(f.width/2),f.yCenter=Math.floor((f.height-f.paddingTop)/2),f.drawingArea=Math.min(f.height-f.paddingTop,f.width)/2},determineDataLimits:function(){var f=this,p=f.chart,M=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY;ce.each(p.data.datasets,(function(L,Y){if(p.isDatasetVisible(Y)){var E=p.getDatasetMeta(Y);ce.each(L.data,(function(p,L){var Y=+f.getRightValue(p);isNaN(Y)||E.data[L].hidden||(M=Math.min(Y,M),S=Math.max(Y,S))}))}})),f.min=M===Number.POSITIVE_INFINITY?0:M,f.max=S===Number.NEGATIVE_INFINITY?0:S,f.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/getTickBackdropHeight(this.options))},convertTicksToLabels:function(){var f=this;Nt.prototype.convertTicksToLabels.call(f),f.pointLabels=f.chart.data.labels.map((function(){var p=ce.callback(f.options.pointLabels.callback,arguments,f);return p||0===p?p:""}))},getLabelForIndex:function(f,p){return+this.getRightValue(this.chart.data.datasets[p].data[f])},fit:function(){var f=this.options;f.display&&f.pointLabels.display?function fitWithPointLabels(f){var p,M,S,L=ce.options._parseFont(f.options.pointLabels),Y={l:0,r:f.width,t:0,b:f.height-f.paddingTop},E={};f.ctx.font=L.string,f._pointLabelSizes=[];var O,R,B,W=f.chart.data.labels.length;for(p=0;pY.r&&(Y.r=U.end,E.r=G),q.startY.b&&(Y.b=q.end,E.b=G)}f.setReductions(f.drawingArea,Y,E)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(f,p,M){var S=this,L=p.l/Math.sin(M.l),Y=Math.max(p.r-S.width,0)/Math.sin(M.r),E=-p.t/Math.cos(M.t),O=-Math.max(p.b-(S.height-S.paddingTop),0)/Math.cos(M.b);L=numberOrZero(L),Y=numberOrZero(Y),E=numberOrZero(E),O=numberOrZero(O),S.drawingArea=Math.min(Math.floor(f-(L+Y)/2),Math.floor(f-(E+O)/2)),S.setCenterPoint(L,Y,E,O)},setCenterPoint:function(f,p,M,S){var L=this,Y=L.width-p-L.drawingArea,E=f+L.drawingArea,O=M+L.drawingArea,R=L.height-L.paddingTop-S-L.drawingArea;L.xCenter=Math.floor((E+Y)/2+L.left),L.yCenter=Math.floor((O+R)/2+L.top+L.paddingTop)},getIndexAngle:function(f){var p=this.chart,M=(f*(360/p.data.labels.length)+((p.options||{}).startAngle||0))%360;return(M<0?M+360:M)*Math.PI*2/360},getDistanceFromCenterForValue:function(f){var p=this;if(ce.isNullOrUndef(f))return NaN;var M=p.drawingArea/(p.max-p.min);return p.options.ticks.reverse?(p.max-f)*M:(f-p.min)*M},getPointPosition:function(f,p){var M=this.getIndexAngle(f)-Math.PI/2;return{x:Math.cos(M)*p+this.xCenter,y:Math.sin(M)*p+this.yCenter}},getPointPositionForValue:function(f,p){return this.getPointPosition(f,this.getDistanceFromCenterForValue(p))},getBasePosition:function(f){var p=this.min,M=this.max;return this.getPointPositionForValue(f||0,this.beginAtZero?0:p<0&&M<0?M:p>0&&M>0?p:0)},_drawGrid:function(){var f,p,M,S=this,L=S.ctx,Y=S.options,E=Y.gridLines,O=Y.angleLines,R=$t(O.lineWidth,E.lineWidth),B=$t(O.color,E.color);if(Y.pointLabels.display&&function drawPointLabels(f){var p=f.ctx,M=f.options,S=M.pointLabels,L=getTickBackdropHeight(M),Y=f.getDistanceFromCenterForValue(M.ticks.reverse?f.min:f.max),E=ce.options._parseFont(S);p.save(),p.font=E.string,p.textBaseline="middle";for(var O=f.chart.data.labels.length-1;O>=0;O--){var R=0===O?L/2:0,B=f.getPointPosition(O,Y+R+5),W=qt(S.fontColor,O,re.global.defaultFontColor);p.fillStyle=W;var G=f.getIndexAngle(O),V=ce.toDegrees(G);p.textAlign=getTextAlignForAngle(V),adjustPointPositionForLabelHeight(V,f._pointLabelSizes[O],B),fillText(p,f.pointLabels[O],B,E.lineHeight)}p.restore()}(S),E.display&&ce.each(S.ticks,(function(f,M){0!==M&&(p=S.getDistanceFromCenterForValue(S.ticksAsNumbers[M]),function drawRadiusLine(f,p,M,S){var L,Y=f.ctx,E=p.circular,O=f.chart.data.labels.length,R=qt(p.color,S-1),B=qt(p.lineWidth,S-1);if((E||O)&&R&&B){if(Y.save(),Y.strokeStyle=R,Y.lineWidth=B,Y.setLineDash&&(Y.setLineDash(p.borderDash||[]),Y.lineDashOffset=p.borderDashOffset||0),Y.beginPath(),E)Y.arc(f.xCenter,f.yCenter,M,0,2*Math.PI);else{L=f.getPointPosition(0,M),Y.moveTo(L.x,L.y);for(var W=1;W=0;f--)p=S.getDistanceFromCenterForValue(Y.ticks.reverse?S.min:S.max),M=S.getPointPosition(f,p),L.beginPath(),L.moveTo(S.xCenter,S.yCenter),L.lineTo(M.x,M.y),L.stroke();L.restore()}},_drawLabels:function(){var f=this,p=f.ctx,M=f.options.ticks;if(M.display){var S,L,Y=f.getIndexAngle(0),E=ce.options._parseFont(M),O=$t(M.fontColor,re.global.defaultFontColor);p.save(),p.font=E.string,p.translate(f.xCenter,f.yCenter),p.rotate(Y),p.textAlign="center",p.textBaseline="middle",ce.each(f.ticks,(function(Y,R){(0!==R||M.reverse)&&(S=f.getDistanceFromCenterForValue(f.ticksAsNumbers[R]),M.showLabelBackdrop&&(L=p.measureText(Y).width,p.fillStyle=M.backdropColor,p.fillRect(-L/2-M.backdropPaddingX,-S-E.size/2-M.backdropPaddingY,L+2*M.backdropPaddingX,E.size+2*M.backdropPaddingY)),p.fillStyle=O,p.fillText(Y,0,-S))})),p.restore()}},_drawTitle:ce.noop}),Zt=Kt;Jt._defaults=Zt;var Qt=ce._deprecated,en=ce.options.resolve,tn=ce.valueOrDefault,nn=Number.MIN_SAFE_INTEGER||-9007199254740991,rn=Number.MAX_SAFE_INTEGER||9007199254740991,an={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},sn=Object.keys(an);function sorter(f,p){return f-p}function getMin(f){return ce.valueOrDefault(f.time.min,f.ticks.min)}function getMax(f){return ce.valueOrDefault(f.time.max,f.ticks.max)}function interpolate$1(f,p,M,S){var L=function lookup(f,p,M){for(var S,L,Y,E=0,O=f.length-1;E>=0&&E<=O;){if(L=f[(S=E+O>>1)-1]||null,Y=f[S],!L)return{lo:null,hi:Y};if(Y[p]M))return{lo:L,hi:Y};O=S-1}}return{lo:Y,hi:null}}(f,p,M),Y=L.lo?L.hi?L.lo:f[f.length-2]:f[0],E=L.lo?L.hi?L.hi:f[f.length-1]:f[1],O=E[p]-Y[p],R=O?(M-Y[p])/O:0,B=(E[S]-Y[S])*R;return Y[S]+B}function toTimestamp(f,p){var M=f._adapter,S=f.options.time,L=S.parser,Y=L||S.format,E=p;return"function"==typeof L&&(E=L(E)),ce.isFinite(E)||(E="string"==typeof Y?M.parse(E,Y):M.parse(E)),null!==E?+E:(L||"function"!=typeof Y||(E=Y(p),ce.isFinite(E)||(E=M.parse(E))),E)}function parse(f,p){if(ce.isNullOrUndef(p))return null;var M=f.options.time,S=toTimestamp(f,f.getRightValue(p));return null===S||M.round&&(S=+f._adapter.startOf(S,M.round)),S}function determineUnitForAutoTicks(f,p,M,S){var L,Y,E,O=sn.length;for(L=sn.indexOf(f);L=0&&(p[Y].major=!0);return p}(f,Y,E,M):Y}var ln=Yt.extend({initialize:function(){this.mergeTicksOptions(),Yt.prototype.initialize.call(this)},update:function(){var f=this,p=f.options,M=p.time||(p.time={}),S=f._adapter=new Mt._date(p.adapters.date);return Qt("time scale",M.format,"time.format","time.parser"),Qt("time scale",M.min,"time.min","ticks.min"),Qt("time scale",M.max,"time.max","ticks.max"),ce.mergeIf(M.displayFormats,S.formats()),Yt.prototype.update.apply(f,arguments)},getRightValue:function(f){return f&&void 0!==f.t&&(f=f.t),Yt.prototype.getRightValue.call(this,f)},determineDataLimits:function(){var f,p,M,S,L,Y,E,O=this,R=O.chart,B=O._adapter,W=O.options,G=W.time.unit||"day",V=rn,U=nn,q=[],X=[],K=[],J=O._getLabels();for(f=0,M=J.length;f1?function arrayUnique(f){var p,M,S,L={},Y=[];for(p=0,M=f.length;p1e5*B)throw p+" and "+M+" are too far apart with stepSize of "+B+" "+R;for(L=G;L=L&&M<=Y&&W.push(M);return S.min=L,S.max=Y,S._unit=R.unit||(O.autoSkip?determineUnitForAutoTicks(R.minUnit,S.min,S.max,G):function determineUnitForFormatting(f,p,M,S,L){var Y,E;for(Y=sn.length-1;Y>=sn.indexOf(M);Y--)if(E=sn[Y],an[E].common&&f._adapter.diff(L,S,E)>=p-1)return E;return sn[M?sn.indexOf(M):0]}(S,W.length,R.minUnit,S.min,S.max)),S._majorUnit=O.major.enabled&&"year"!==S._unit?function determineMajorUnit(f){for(var p=sn.indexOf(f)+1,M=sn.length;pp&&O=0&&f0?O:1}}),cn={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};ln._defaults=cn;var dn={category:Et,linear:jt,logarithmic:Vt,radialLinear:Jt,time:ln},un={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Mt._date.override("function"==typeof f?{_id:"moment",formats:function(){return un},parse:function(p,M){return"string"==typeof p&&"string"==typeof M?p=f(p,M):p instanceof f||(p=f(p)),p.isValid()?p.valueOf():null},format:function(p,M){return f(p).format(M)},add:function(p,M,S){return f(p).add(M,S).valueOf()},diff:function(p,M,S){return f(p).diff(f(M),S)},startOf:function(p,M,S){return p=f(p),"isoWeek"===M?p.isoWeekday(S).valueOf():p.startOf(M).valueOf()},endOf:function(p,M){return f(p).endOf(M).valueOf()},_create:function(p){return f(p)}}:{}),re._set("global",{plugins:{filler:{propagate:!0}}});var hn={dataset:function(f){var p=f.fill,M=f.chart,S=M.getDatasetMeta(p),L=S&&M.isDatasetVisible(p)&&S.dataset._children||[],Y=L.length||0;return Y?function(f,p){return p=M)&&S;switch(Y){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return Y;default:return!1}}function computeBoundary(f){return(f.el._scale||{}).getPointPositionForValue?function computeCircularBoundary(f){var p,M,S,L,Y,E=f.el._scale,O=E.options,R=E.chart.data.labels.length,B=f.fill,W=[];if(!R)return null;for(p=O.ticks.reverse?E.max:E.min,M=O.ticks.reverse?E.min:E.max,S=E.getPointPositionForValue(0,p),L=0;L0;--Y)ce.canvas.lineTo(f,M[Y],M[Y-1],!0);else for(E=M[0].cx,O=M[0].cy,R=Math.sqrt(Math.pow(M[0].x-E,2)+Math.pow(M[0].y-O,2)),Y=L-1;Y>0;--Y)f.arc(E,O,R,M[Y].angle,M[Y-1].angle,!0)}}function doFill(f,p,M,S,L,Y){var E,O,R,B,W,G,V,U,q=p.length,X=S.spanGaps,K=[],J=[],Z=0,Q=0;for(f.beginPath(),E=0,O=q;E=0;--M)(p=R[M].$filler)&&p.visible&&(L=(S=p.el)._view,Y=S._children||[],E=p.mapper,O=L.backgroundColor||re.global.defaultColor,E&&O&&Y.length&&(ce.canvas.clipArea(B,f.chartArea),doFill(B,Y,E,L,O,S._loop),ce.canvas.unclipArea(B)))}},mn=ce.rtl.getRtlAdapter,gn=ce.noop,bn=ce.valueOrDefault;function getBoxWidth(f,p){return f.usePointStyle&&f.boxWidth>p?p:f.boxWidth}re._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(f,p){var M=p.datasetIndex,S=this.chart,L=S.getDatasetMeta(M);L.hidden=null===L.hidden?!S.data.datasets[M].hidden:null,S.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(f){var p=f.data.datasets,M=f.options.legend||{},S=M.labels&&M.labels.usePointStyle;return f._getSortedDatasetMetas().map((function(M){var L=M.controller.getStyle(S?0:void 0);return{text:p[M.index].label,fillStyle:L.backgroundColor,hidden:!f.isDatasetVisible(M.index),lineCap:L.borderCapStyle,lineDash:L.borderDash,lineDashOffset:L.borderDashOffset,lineJoin:L.borderJoinStyle,lineWidth:L.borderWidth,strokeStyle:L.borderColor,pointStyle:L.pointStyle,rotation:L.rotation,datasetIndex:M.index}}),this)}}},legendCallback:function(f){var p,M,S,L=document.createElement("ul"),Y=f.data.datasets;for(L.setAttribute("class",f.id+"-legend"),p=0,M=Y.length;pR.width)&&(G+=E+M.padding,W[W.length-(p>0?0:1)]=0),O[p]={left:0,top:0,width:S,height:E},W[W.length-1]+=S+M.padding})),R.height+=G}else{var V=M.padding,U=f.columnWidths=[],q=f.columnHeights=[],X=M.padding,K=0,J=0;ce.each(f.legendItems,(function(f,p){var S=getBoxWidth(M,E)+E/2+L.measureText(f.text).width;p>0&&J+E+2*V>R.height&&(X+=K+M.padding,U.push(K),q.push(J),K=0,J=0),K=Math.max(K,S),J+=E+V,O[p]={left:0,top:0,width:S,height:E}})),X+=K,U.push(K),q.push(J),R.width+=X}f.width=R.width,f.height=R.height}else f.width=R.width=f.height=R.height=0},afterFit:gn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var f=this,p=f.options,M=p.labels,S=re.global,L=S.defaultColor,Y=S.elements.line,E=f.height,O=f.columnHeights,R=f.width,B=f.lineWidths;if(p.display){var W,G=mn(p.rtl,f.left,f.minSize.width),V=f.ctx,U=bn(M.fontColor,S.defaultFontColor),q=ce.options._parseFont(M),X=q.size;V.textAlign=G.textAlign("left"),V.textBaseline="middle",V.lineWidth=.5,V.strokeStyle=U,V.fillStyle=U,V.font=q.string;var K=getBoxWidth(M,X),J=f.legendHitBoxes,alignmentOffset=function(f,S){switch(p.align){case"start":return M.padding;case"end":return f-S;default:return(f-S+M.padding)/2}},Z=f.isHorizontal();W=Z?{x:f.left+alignmentOffset(R,B[0]),y:f.top+M.padding,line:0}:{x:f.left+M.padding,y:f.top+alignmentOffset(E,O[0]),line:0},ce.rtl.overrideTextDirection(f.ctx,p.textDirection);var Q=X+M.padding;ce.each(f.legendItems,(function(p,S){var U=V.measureText(p.text).width,q=K+X/2+U,ee=W.x,te=W.y;G.setWidth(f.minSize.width),Z?S>0&&ee+q+M.padding>f.left+f.minSize.width&&(te=W.y+=Q,W.line++,ee=W.x=f.left+alignmentOffset(R,B[W.line])):S>0&&te+Q>f.top+f.minSize.height&&(ee=W.x=ee+f.columnWidths[W.line]+M.padding,W.line++,te=W.y=f.top+alignmentOffset(E,O[W.line]));var ne=G.x(ee);!function(f,p,S){if(!(isNaN(K)||K<=0)){V.save();var E=bn(S.lineWidth,Y.borderWidth);if(V.fillStyle=bn(S.fillStyle,L),V.lineCap=bn(S.lineCap,Y.borderCapStyle),V.lineDashOffset=bn(S.lineDashOffset,Y.borderDashOffset),V.lineJoin=bn(S.lineJoin,Y.borderJoinStyle),V.lineWidth=E,V.strokeStyle=bn(S.strokeStyle,L),V.setLineDash&&V.setLineDash(bn(S.lineDash,Y.borderDash)),M&&M.usePointStyle){var O=K*Math.SQRT2/2,R=G.xPlus(f,K/2),B=p+X/2;ce.canvas.drawPoint(V,S.pointStyle,O,R,B,S.rotation)}else V.fillRect(G.leftForLtr(f,K),p,K,X),0!==E&&V.strokeRect(G.leftForLtr(f,K),p,K,X);V.restore()}}(ne,te,p),J[S].left=G.leftForLtr(ne,J[S].width),J[S].top=te,function(f,p,M,S){var L=X/2,Y=G.xPlus(f,K+L),E=p+L;V.fillText(M.text,Y,E),M.hidden&&(V.beginPath(),V.lineWidth=2,V.moveTo(Y,E),V.lineTo(G.xPlus(Y,S),E),V.stroke())}(ne,te,p,U),Z?W.x+=q+M.padding:W.y+=Q})),ce.rtl.restoreTextDirection(f.ctx,p.textDirection)}},_getLegendItemAt:function(f,p){var M,S,L,Y=this;if(f>=Y.left&&f<=Y.right&&p>=Y.top&&p<=Y.bottom)for(L=Y.legendHitBoxes,M=0;M=(S=L[M]).left&&f<=S.left+S.width&&p>=S.top&&p<=S.top+S.height)return Y.legendItems[M];return null},handleEvent:function(f){var p,M=this,S=M.options,L="mouseup"===f.type?"click":f.type;if("mousemove"===L){if(!S.onHover&&!S.onLeave)return}else{if("click"!==L)return;if(!S.onClick)return}p=M._getLegendItemAt(f.x,f.y),"click"===L?p&&S.onClick&&S.onClick.call(M,f.native,p):(S.onLeave&&p!==M._hoveredItem&&(M._hoveredItem&&S.onLeave.call(M,f.native,M._hoveredItem),M._hoveredItem=p),S.onHover&&p&&S.onHover.call(M,f.native,p))}});function createNewLegendAndAttach(f,p){var M=new vn({ctx:f.ctx,options:p,chart:f});st.configure(f,M,p),st.addBox(f,M),f.legend=M}var _n={id:"legend",_element:vn,beforeInit:function(f){var p=f.options.legend;p&&createNewLegendAndAttach(f,p)},beforeUpdate:function(f){var p=f.options.legend,M=f.legend;p?(ce.mergeIf(p,re.global.legend),M?(st.configure(f,M,p),M.options=p):createNewLegendAndAttach(f,p)):M&&(st.removeBox(f,M),delete f.legend)},afterEvent:function(f,p){var M=f.legend;M&&M.handleEvent(p)}},yn=ce.noop;re._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var wn=me.extend({initialize:function(f){ce.extend(this,f),this.legendHitBoxes=[]},beforeUpdate:yn,update:function(f,p,M){var S=this;return S.beforeUpdate(),S.maxWidth=f,S.maxHeight=p,S.margins=M,S.beforeSetDimensions(),S.setDimensions(),S.afterSetDimensions(),S.beforeBuildLabels(),S.buildLabels(),S.afterBuildLabels(),S.beforeFit(),S.fit(),S.afterFit(),S.afterUpdate(),S.minSize},afterUpdate:yn,beforeSetDimensions:yn,setDimensions:function(){var f=this;f.isHorizontal()?(f.width=f.maxWidth,f.left=0,f.right=f.width):(f.height=f.maxHeight,f.top=0,f.bottom=f.height),f.paddingLeft=0,f.paddingTop=0,f.paddingRight=0,f.paddingBottom=0,f.minSize={width:0,height:0}},afterSetDimensions:yn,beforeBuildLabels:yn,buildLabels:yn,afterBuildLabels:yn,beforeFit:yn,fit:function(){var f,p=this,M=p.options,S=p.minSize={},L=p.isHorizontal();M.display?(f=(ce.isArray(M.text)?M.text.length:1)*ce.options._parseFont(M).lineHeight+2*M.padding,p.width=S.width=L?p.maxWidth:f,p.height=S.height=L?f:p.maxHeight):p.width=S.width=p.height=S.height=0},afterFit:yn,isHorizontal:function(){var f=this.options.position;return"top"===f||"bottom"===f},draw:function(){var f=this,p=f.ctx,M=f.options;if(M.display){var S,L,Y,E=ce.options._parseFont(M),O=E.lineHeight,R=O/2+M.padding,B=0,W=f.top,G=f.left,V=f.bottom,U=f.right;p.fillStyle=ce.valueOrDefault(M.fontColor,re.global.defaultFontColor),p.font=E.string,f.isHorizontal()?(L=G+(U-G)/2,Y=W+R,S=U-G):(L="left"===M.position?G+R:U-R,Y=W+(V-W)/2,S=V-W,B=Math.PI*("left"===M.position?-.5:.5)),p.save(),p.translate(L,Y),p.rotate(B),p.textAlign="center",p.textBaseline="middle";var q=M.text;if(ce.isArray(q))for(var X=0,K=0;K=0;S--){var L=f[S];if(p(L))return L}},ce.isNumber=function(f){return!isNaN(parseFloat(f))&&isFinite(f)},ce.almostEquals=function(f,p,M){return Math.abs(f-p)=f},ce.max=function(f){return f.reduce((function(f,p){return isNaN(p)?f:Math.max(f,p)}),Number.NEGATIVE_INFINITY)},ce.min=function(f){return f.reduce((function(f,p){return isNaN(p)?f:Math.min(f,p)}),Number.POSITIVE_INFINITY)},ce.sign=Math.sign?function(f){return Math.sign(f)}:function(f){return 0==(f=+f)||isNaN(f)?f:f>0?1:-1},ce.toRadians=function(f){return f*(Math.PI/180)},ce.toDegrees=function(f){return f*(180/Math.PI)},ce._decimalPlaces=function(f){if(ce.isFinite(f)){for(var p=1,M=0;Math.round(f*p)/p!==f;)p*=10,M++;return M}},ce.getAngleFromPoint=function(f,p){var M=p.x-f.x,S=p.y-f.y,L=Math.sqrt(M*M+S*S),Y=Math.atan2(S,M);return Y<-.5*Math.PI&&(Y+=2*Math.PI),{angle:Y,distance:L}},ce.distanceBetweenPoints=function(f,p){return Math.sqrt(Math.pow(p.x-f.x,2)+Math.pow(p.y-f.y,2))},ce.aliasPixel=function(f){return f%2==0?0:.5},ce._alignPixel=function(f,p,M){var S=f.currentDevicePixelRatio,L=M/2;return Math.round((p-L)*S)/S+L},ce.splineCurve=function(f,p,M,S){var L=f.skip?p:f,Y=p,E=M.skip?p:M,O=Math.sqrt(Math.pow(Y.x-L.x,2)+Math.pow(Y.y-L.y,2)),R=Math.sqrt(Math.pow(E.x-Y.x,2)+Math.pow(E.y-Y.y,2)),B=O/(O+R),W=R/(O+R),G=S*(B=isNaN(B)?0:B),V=S*(W=isNaN(W)?0:W);return{previous:{x:Y.x-G*(E.x-L.x),y:Y.y-G*(E.y-L.y)},next:{x:Y.x+V*(E.x-L.x),y:Y.y+V*(E.y-L.y)}}},ce.EPSILON=Number.EPSILON||1e-14,ce.splineCurveMonotone=function(f){var p,M,S,L,Y,E,O,R,B,W=(f||[]).map((function(f){return{model:f._model,deltaK:0,mK:0}})),G=W.length;for(p=0;p0?W[p-1]:null,(L=p0?W[p-1]:null,L=p=f.length-1?f[0]:f[p+1]:p>=f.length-1?f[f.length-1]:f[p+1]},ce.previousItem=function(f,p,M){return M?p<=0?f[f.length-1]:f[p-1]:p<=0?f[0]:f[p-1]},ce.niceNum=function(f,p){var M=Math.floor(ce.log10(f)),S=f/Math.pow(10,M);return(p?S<1.5?1:S<3?2:S<7?5:10:S<=1?1:S<=2?2:S<=5?5:10)*Math.pow(10,M)},ce.requestAnimFrame="undefined"==typeof window?function(f){f()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(f){return window.setTimeout(f,1e3/60)},ce.getRelativePosition=function(f,p){var M,S,L=f.originalEvent||f,Y=f.target||f.srcElement,E=Y.getBoundingClientRect(),O=L.touches;O&&O.length>0?(M=O[0].clientX,S=O[0].clientY):(M=L.clientX,S=L.clientY);var R=parseFloat(ce.getStyle(Y,"padding-left")),B=parseFloat(ce.getStyle(Y,"padding-top")),W=parseFloat(ce.getStyle(Y,"padding-right")),G=parseFloat(ce.getStyle(Y,"padding-bottom")),V=E.right-E.left-R-W,U=E.bottom-E.top-B-G;return{x:M=Math.round((M-E.left-R)/V*Y.width/p.currentDevicePixelRatio),y:S=Math.round((S-E.top-B)/U*Y.height/p.currentDevicePixelRatio)}},ce.getConstraintWidth=function(f){return getConstraintDimension(f,"max-width","clientWidth")},ce.getConstraintHeight=function(f){return getConstraintDimension(f,"max-height","clientHeight")},ce._calculatePadding=function(f,p,M){return(p=ce.getStyle(f,p)).indexOf("%")>-1?M*parseInt(p,10)/100:parseInt(p,10)},ce._getParentNode=function(f){var p=f.parentNode;return p&&"[object ShadowRoot]"===p.toString()&&(p=p.host),p},ce.getMaximumWidth=function(f){var p=ce._getParentNode(f);if(!p)return f.clientWidth;var M=p.clientWidth,S=M-ce._calculatePadding(p,"padding-left",M)-ce._calculatePadding(p,"padding-right",M),L=ce.getConstraintWidth(f);return isNaN(L)?S:Math.min(S,L)},ce.getMaximumHeight=function(f){var p=ce._getParentNode(f);if(!p)return f.clientHeight;var M=p.clientHeight,S=M-ce._calculatePadding(p,"padding-top",M)-ce._calculatePadding(p,"padding-bottom",M),L=ce.getConstraintHeight(f);return isNaN(L)?S:Math.min(S,L)},ce.getStyle=function(f,p){return f.currentStyle?f.currentStyle[p]:document.defaultView.getComputedStyle(f,null).getPropertyValue(p)},ce.retinaScale=function(f,p){var M=f.currentDevicePixelRatio=p||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==M){var S=f.canvas,L=f.height,Y=f.width;S.height=L*M,S.width=Y*M,f.ctx.scale(M,M),S.style.height||S.style.width||(S.style.height=L+"px",S.style.width=Y+"px")}},ce.fontString=function(f,p,M){return p+" "+f+"px "+M},ce.longestText=function(f,p,M,S){var L=(S=S||{}).data=S.data||{},Y=S.garbageCollect=S.garbageCollect||[];S.font!==p&&(L=S.data={},Y=S.garbageCollect=[],S.font=p),f.font=p;var E,O,R,B,W,G=0,V=M.length;for(E=0;EM.length){for(E=0;ES&&(S=Y),S},ce.numberOfLabelLines=function(f){var p=1;return ce.each(f,(function(f){ce.isArray(f)&&f.length>p&&(p=f.length)})),p},ce.color=B?function(f){return f instanceof CanvasGradient&&(f=re.global.defaultColor),B(f)}:function(f){return console.error("Color.js not found!"),f},ce.getHoverColor=function(f){return f instanceof CanvasPattern||f instanceof CanvasGradient?f:ce.color(f).saturate(.5).darken(.1).rgbString()}}(),Tt._adapters=Mt,Tt.Animation=be,Tt.animationService=ve,Tt.controllers=rt,Tt.DatasetController=we,Tt.defaults=re,Tt.Element=me,Tt.elements=Ye,Tt.Interaction=at,Tt.layouts=st,Tt.platform=pt,Tt.plugins=mt,Tt.Scale=Yt,Tt.scaleService=gt,Tt.Ticks=St,Tt.Tooltip=xt,Tt.helpers.each(dn,(function(f,p){Tt.scaleService.registerScaleType(p,f,f._defaults)})),xn)xn.hasOwnProperty(Sn)&&Tt.plugins.register(xn[Sn]);Tt.platform.initialize();var Ln=Tt;return"undefined"!=typeof window&&(window.Chart=Tt),Tt.Chart=Tt,Tt.Legend=xn.legend._element,Tt.Title=xn.title._element,Tt.pluginService=Tt.plugins,Tt.PluginBase=Tt.Element.extend({}),Tt.canvasHelpers=Tt.helpers.canvas,Tt.layoutService=Tt.layouts,Tt.LinearScaleBase=Nt,Tt.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(f){Tt[f]=function(p,M){return new Tt(p,Tt.helpers.merge(M||{},{type:f.charAt(0).toLowerCase()+f.slice(1)}))}})),Ln}(function(){try{return M(0)}catch(f){}}())},function(f,p){var M={utf8:{stringToBytes:function(f){return M.bin.stringToBytes(unescape(encodeURIComponent(f)))},bytesToString:function(f){return decodeURIComponent(escape(M.bin.bytesToString(f)))}},bin:{stringToBytes:function(f){for(var p=[],M=0;M=0?p:parseInt(f,10)}return f},log:function log(f){if(f=L.lookupLevel(f),"undefined"!=typeof console&&L.lookupLevel(L.level)<=f){var p=L.methodMap[f];console[p]||(p="log");for(var M=arguments.length,S=Array(M>1?M-1:0),Y=1;Y\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",Y=L.console&&(L.console.warn||L.console.log);return Y&&Y.call(L.console,S,M),f.apply(this,arguments)}}R="function"!=typeof Object.assign?function assign(f){if(null==f)throw new TypeError("Cannot convert undefined or null to object");for(var p=Object(f),M=1;M-1}function splitStr(f){return f.trim().split(/\s+/g)}function inArray(f,p,M){if(f.indexOf&&!M)return f.indexOf(p);for(var S=0;SM[p]})):S.sort()),S}function prefixed(f,p){for(var M,S,L=p[0].toUpperCase()+p.slice(1),Y=0;Y1&&!M.firstMultiple?M.firstMultiple=simpleCloneInputData(p):1===L&&(M.firstMultiple=!1);var Y=M.firstInput,E=M.firstMultiple,O=E?E.center:Y.center,R=p.center=getCenter(S);p.timeStamp=U(),p.deltaTime=p.timeStamp-Y.timeStamp,p.angle=getAngle(O,R),p.distance=getDistance(O,R),function computeDeltaXY(f,p){var M=p.center,S=f.offsetDelta||{},L=f.prevDelta||{},Y=f.prevInput||{};1!==p.eventType&&4!==Y.eventType||(L=f.prevDelta={x:Y.deltaX||0,y:Y.deltaY||0},S=f.offsetDelta={x:M.x,y:M.y});p.deltaX=L.x+(M.x-S.x),p.deltaY=L.y+(M.y-S.y)}(M,p),p.offsetDirection=getDirection(p.deltaX,p.deltaY);var B=getVelocity(p.deltaTime,p.deltaX,p.deltaY);p.overallVelocityX=B.x,p.overallVelocityY=B.y,p.overallVelocity=V(B.x)>V(B.y)?B.x:B.y,p.scale=E?function getScale(f,p){return getDistance(p[0],p[1],te)/getDistance(f[0],f[1],te)}(E.pointers,S):1,p.rotation=E?function getRotation(f,p){return getAngle(p[1],p[0],te)+getAngle(f[1],f[0],te)}(E.pointers,S):0,p.maxPointers=M.prevInput?p.pointers.length>M.prevInput.maxPointers?p.pointers.length:M.prevInput.maxPointers:p.pointers.length,function computeIntervalInputData(f,p){var M,S,L,Y,E=f.lastInterval||p,O=p.timeStamp-E.timeStamp;if(8!=p.eventType&&(O>25||void 0===E.velocity)){var R=p.deltaX-E.deltaX,B=p.deltaY-E.deltaY,W=getVelocity(O,R,B);S=W.x,L=W.y,M=V(W.x)>V(W.y)?W.x:W.y,Y=getDirection(R,B),f.lastInterval=p}else M=E.velocity,S=E.velocityX,L=E.velocityY,Y=E.direction;p.velocity=M,p.velocityX=S,p.velocityY=L,p.direction=Y}(M,p);var W=f.element;hasParent(p.srcEvent.target,W)&&(W=p.srcEvent.target);p.target=W}(f,M),f.emit("hammer.input",M),f.recognize(M),f.session.prevInput=M}function simpleCloneInputData(f){for(var p=[],M=0;M=V(p)?f<0?2:4:p<0?8:16}function getDistance(f,p,M){M||(M=ee);var S=p[M[0]]-f[M[0]],L=p[M[1]]-f[M[1]];return Math.sqrt(S*S+L*L)}function getAngle(f,p,M){M||(M=ee);var S=p[M[0]]-f[M[0]],L=p[M[1]]-f[M[1]];return 180*Math.atan2(L,S)/Math.PI}Input.prototype={handler:function(){},init:function(){this.evEl&&addEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&addEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&addEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&removeEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&removeEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&removeEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)}};var ne={mousedown:1,mousemove:2,mouseup:4};function MouseInput(){this.evEl="mousedown",this.evWin="mousemove mouseup",this.pressed=!1,Input.apply(this,arguments)}inherit(MouseInput,Input,{handler:function MEhandler(f){var p=ne[f.type];1&p&&0===f.button&&(this.pressed=!0),2&p&&1!==f.which&&(p=4),this.pressed&&(4&p&&(this.pressed=!1),this.callback(this.manager,p,{pointers:[f],changedPointers:[f],pointerType:"mouse",srcEvent:f}))}});var ie={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},re={2:"touch",3:"pen",4:"mouse",5:"kinect"},ae="pointerdown",oe="pointermove pointerup pointercancel";function PointerEventInput(){this.evEl=ae,this.evWin=oe,Input.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}L.MSPointerEvent&&!L.PointerEvent&&(ae="MSPointerDown",oe="MSPointerMove MSPointerUp MSPointerCancel"),inherit(PointerEventInput,Input,{handler:function PEhandler(f){var p=this.store,M=!1,S=f.type.toLowerCase().replace("ms",""),L=ie[S],Y=re[f.pointerType]||f.pointerType,E="touch"==Y,O=inArray(p,f.pointerId,"pointerId");1&L&&(0===f.button||E)?O<0&&(p.push(f),O=p.length-1):12&L&&(M=!0),O<0||(p[O]=f,this.callback(this.manager,L,{pointers:p,changedPointers:[f],pointerType:Y,srcEvent:f}),M&&p.splice(O,1))}});var se={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function SingleTouchInput(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,Input.apply(this,arguments)}function normalizeSingleTouches(f,p){var M=toArray(f.touches),S=toArray(f.changedTouches);return 12&p&&(M=uniqueArray(M.concat(S),"identifier",!0)),[M,S]}inherit(SingleTouchInput,Input,{handler:function TEhandler(f){var p=se[f.type];if(1===p&&(this.started=!0),this.started){var M=normalizeSingleTouches.call(this,f,p);12&p&&M[0].length-M[1].length==0&&(this.started=!1),this.callback(this.manager,p,{pointers:M[0],changedPointers:M[1],pointerType:"touch",srcEvent:f})}}});var le={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function TouchInput(){this.evTarget="touchstart touchmove touchend touchcancel",this.targetIds={},Input.apply(this,arguments)}function getTouches(f,p){var M=toArray(f.touches),S=this.targetIds;if(3&p&&1===M.length)return S[M[0].identifier]=!0,[M,M];var L,Y,E=toArray(f.changedTouches),O=[],R=this.target;if(Y=M.filter((function(f){return hasParent(f.target,R)})),1===p)for(L=0;L-1&&S.splice(f,1)}),2500)}}function isSyntheticEvent(f){for(var p=f.srcEvent.clientX,M=f.srcEvent.clientY,S=0;S-1&&this.requireFail.splice(p,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(f){return!!this.simultaneous[f.id]},emit:function(f){var p=this,M=this.state;function emit(M){p.manager.emit(M,f)}M<8&&emit(p.options.event+stateStr(M)),emit(p.options.event),f.additionalEvent&&emit(f.additionalEvent),M>=8&&emit(p.options.event+stateStr(M))},tryEmit:function(f){if(this.canEmit())return this.emit(f);this.state=32},canEmit:function(){for(var f=0;fp.threshold&&L&p.direction},attrTest:function(f){return AttrRecognizer.prototype.attrTest.call(this,f)&&(2&this.state||!(2&this.state)&&this.directionTest(f))},emit:function(f){this.pX=f.deltaX,this.pY=f.deltaY;var p=directionStr(f.direction);p&&(f.additionalEvent=this.options.event+p),this._super.emit.call(this,f)}}),inherit(PinchRecognizer,AttrRecognizer,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return["none"]},attrTest:function(f){return this._super.attrTest.call(this,f)&&(Math.abs(f.scale-1)>this.options.threshold||2&this.state)},emit:function(f){if(1!==f.scale){var p=f.scale<1?"in":"out";f.additionalEvent=this.options.event+p}this._super.emit.call(this,f)}}),inherit(PressRecognizer,Recognizer,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(f){var p=this.options,M=f.pointers.length===p.pointers,S=f.distancep.time;if(this._input=f,!S||!M||12&f.eventType&&!L)this.reset();else if(1&f.eventType)this.reset(),this._timer=setTimeoutContext((function(){this.state=8,this.tryEmit()}),p.time,this);else if(4&f.eventType)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(f){8===this.state&&(f&&4&f.eventType?this.manager.emit(this.options.event+"up",f):(this._input.timeStamp=U(),this.manager.emit(this.options.event,this._input)))}}),inherit(RotateRecognizer,AttrRecognizer,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return["none"]},attrTest:function(f){return this._super.attrTest.call(this,f)&&(Math.abs(f.rotation)>this.options.threshold||2&this.state)}}),inherit(SwipeRecognizer,AttrRecognizer,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return PanRecognizer.prototype.getTouchAction.call(this)},attrTest:function(f){var p,M=this.options.direction;return 30&M?p=f.overallVelocity:6&M?p=f.overallVelocityX:24&M&&(p=f.overallVelocityY),this._super.attrTest.call(this,f)&&M&f.offsetDirection&&f.distance>this.options.threshold&&f.maxPointers==this.options.pointers&&V(p)>this.options.velocity&&4&f.eventType},emit:function(f){var p=directionStr(f.offsetDirection);p&&this.manager.emit(this.options.event+p,f),this.manager.emit(this.options.event,f)}}),inherit(TapRecognizer,Recognizer,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return["manipulation"]},process:function(f){var p=this.options,M=f.pointers.length===p.pointers,S=f.distance\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",Y=L.console&&(L.console.warn||L.console.log);return Y&&Y.call(L.console,S,M),f.apply(this,arguments)}}R="function"!=typeof Object.assign?function assign(f){if(null==f)throw new TypeError("Cannot convert undefined or null to object");for(var p=Object(f),M=1;M-1}function splitStr(f){return f.trim().split(/\s+/g)}function inArray(f,p,M){if(f.indexOf&&!M)return f.indexOf(p);for(var S=0;SM[p]})):S.sort()),S}function prefixed(f,p){for(var M,S,L=p[0].toUpperCase()+p.slice(1),Y=0;Y1&&!M.firstMultiple?M.firstMultiple=simpleCloneInputData(p):1===L&&(M.firstMultiple=!1);var Y=M.firstInput,E=M.firstMultiple,O=E?E.center:Y.center,R=p.center=getCenter(S);p.timeStamp=U(),p.deltaTime=p.timeStamp-Y.timeStamp,p.angle=getAngle(O,R),p.distance=getDistance(O,R),function computeDeltaXY(f,p){var M=p.center,S=f.offsetDelta||{},L=f.prevDelta||{},Y=f.prevInput||{};1!==p.eventType&&4!==Y.eventType||(L=f.prevDelta={x:Y.deltaX||0,y:Y.deltaY||0},S=f.offsetDelta={x:M.x,y:M.y});p.deltaX=L.x+(M.x-S.x),p.deltaY=L.y+(M.y-S.y)}(M,p),p.offsetDirection=getDirection(p.deltaX,p.deltaY);var B=getVelocity(p.deltaTime,p.deltaX,p.deltaY);p.overallVelocityX=B.x,p.overallVelocityY=B.y,p.overallVelocity=V(B.x)>V(B.y)?B.x:B.y,p.scale=E?function getScale(f,p){return getDistance(p[0],p[1],te)/getDistance(f[0],f[1],te)}(E.pointers,S):1,p.rotation=E?function getRotation(f,p){return getAngle(p[1],p[0],te)+getAngle(f[1],f[0],te)}(E.pointers,S):0,p.maxPointers=M.prevInput?p.pointers.length>M.prevInput.maxPointers?p.pointers.length:M.prevInput.maxPointers:p.pointers.length,function computeIntervalInputData(f,p){var M,S,L,Y,E=f.lastInterval||p,O=p.timeStamp-E.timeStamp;if(8!=p.eventType&&(O>25||void 0===E.velocity)){var R=p.deltaX-E.deltaX,B=p.deltaY-E.deltaY,W=getVelocity(O,R,B);S=W.x,L=W.y,M=V(W.x)>V(W.y)?W.x:W.y,Y=getDirection(R,B),f.lastInterval=p}else M=E.velocity,S=E.velocityX,L=E.velocityY,Y=E.direction;p.velocity=M,p.velocityX=S,p.velocityY=L,p.direction=Y}(M,p);var W=f.element;hasParent(p.srcEvent.target,W)&&(W=p.srcEvent.target);p.target=W}(f,M),f.emit("hammer.input",M),f.recognize(M),f.session.prevInput=M}function simpleCloneInputData(f){for(var p=[],M=0;M=V(p)?f<0?2:4:p<0?8:16}function getDistance(f,p,M){M||(M=ee);var S=p[M[0]]-f[M[0]],L=p[M[1]]-f[M[1]];return Math.sqrt(S*S+L*L)}function getAngle(f,p,M){M||(M=ee);var S=p[M[0]]-f[M[0]],L=p[M[1]]-f[M[1]];return 180*Math.atan2(L,S)/Math.PI}Input.prototype={handler:function(){},init:function(){this.evEl&&addEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&addEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&addEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&removeEventListeners(this.element,this.evEl,this.domHandler),this.evTarget&&removeEventListeners(this.target,this.evTarget,this.domHandler),this.evWin&&removeEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)}};var ne={mousedown:1,mousemove:2,mouseup:4};function MouseInput(){this.evEl="mousedown",this.evWin="mousemove mouseup",this.pressed=!1,Input.apply(this,arguments)}inherit(MouseInput,Input,{handler:function MEhandler(f){var p=ne[f.type];1&p&&0===f.button&&(this.pressed=!0),2&p&&1!==f.which&&(p=4),this.pressed&&(4&p&&(this.pressed=!1),this.callback(this.manager,p,{pointers:[f],changedPointers:[f],pointerType:"mouse",srcEvent:f}))}});var ie={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},re={2:"touch",3:"pen",4:"mouse",5:"kinect"},ae="pointerdown",oe="pointermove pointerup pointercancel";function PointerEventInput(){this.evEl=ae,this.evWin=oe,Input.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}L.MSPointerEvent&&!L.PointerEvent&&(ae="MSPointerDown",oe="MSPointerMove MSPointerUp MSPointerCancel"),inherit(PointerEventInput,Input,{handler:function PEhandler(f){var p=this.store,M=!1,S=f.type.toLowerCase().replace("ms",""),L=ie[S],Y=re[f.pointerType]||f.pointerType,E="touch"==Y,O=inArray(p,f.pointerId,"pointerId");1&L&&(0===f.button||E)?O<0&&(p.push(f),O=p.length-1):12&L&&(M=!0),O<0||(p[O]=f,this.callback(this.manager,L,{pointers:p,changedPointers:[f],pointerType:Y,srcEvent:f}),M&&p.splice(O,1))}});var se={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function SingleTouchInput(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,Input.apply(this,arguments)}function normalizeSingleTouches(f,p){var M=toArray(f.touches),S=toArray(f.changedTouches);return 12&p&&(M=uniqueArray(M.concat(S),"identifier",!0)),[M,S]}inherit(SingleTouchInput,Input,{handler:function TEhandler(f){var p=se[f.type];if(1===p&&(this.started=!0),this.started){var M=normalizeSingleTouches.call(this,f,p);12&p&&M[0].length-M[1].length==0&&(this.started=!1),this.callback(this.manager,p,{pointers:M[0],changedPointers:M[1],pointerType:"touch",srcEvent:f})}}});var le={touchstart:1,touchmove:2,touchend:4,touchcancel:8};function TouchInput(){this.evTarget="touchstart touchmove touchend touchcancel",this.targetIds={},Input.apply(this,arguments)}function getTouches(f,p){var M=toArray(f.touches),S=this.targetIds;if(3&p&&1===M.length)return S[M[0].identifier]=!0,[M,M];var L,Y,E=toArray(f.changedTouches),O=[],R=this.target;if(Y=M.filter((function(f){return hasParent(f.target,R)})),1===p)for(L=0;L-1&&S.splice(f,1)}),2500)}}function isSyntheticEvent(f){for(var p=f.srcEvent.clientX,M=f.srcEvent.clientY,S=0;S-1&&this.requireFail.splice(p,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(f){return!!this.simultaneous[f.id]},emit:function(f){var p=this,M=this.state;function emit(M){p.manager.emit(M,f)}M<8&&emit(p.options.event+stateStr(M)),emit(p.options.event),f.additionalEvent&&emit(f.additionalEvent),M>=8&&emit(p.options.event+stateStr(M))},tryEmit:function(f){if(this.canEmit())return this.emit(f);this.state=32},canEmit:function(){for(var f=0;fp.threshold&&L&p.direction},attrTest:function(f){return AttrRecognizer.prototype.attrTest.call(this,f)&&(2&this.state||!(2&this.state)&&this.directionTest(f))},emit:function(f){this.pX=f.deltaX,this.pY=f.deltaY;var p=directionStr(f.direction);p&&(f.additionalEvent=this.options.event+p),this._super.emit.call(this,f)}}),inherit(PinchRecognizer,AttrRecognizer,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return["none"]},attrTest:function(f){return this._super.attrTest.call(this,f)&&(Math.abs(f.scale-1)>this.options.threshold||2&this.state)},emit:function(f){if(1!==f.scale){var p=f.scale<1?"in":"out";f.additionalEvent=this.options.event+p}this._super.emit.call(this,f)}}),inherit(PressRecognizer,Recognizer,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(f){var p=this.options,M=f.pointers.length===p.pointers,S=f.distancep.time;if(this._input=f,!S||!M||12&f.eventType&&!L)this.reset();else if(1&f.eventType)this.reset(),this._timer=setTimeoutContext((function(){this.state=8,this.tryEmit()}),p.time,this);else if(4&f.eventType)return 8;return 32},reset:function(){clearTimeout(this._timer)},emit:function(f){8===this.state&&(f&&4&f.eventType?this.manager.emit(this.options.event+"up",f):(this._input.timeStamp=U(),this.manager.emit(this.options.event,this._input)))}}),inherit(RotateRecognizer,AttrRecognizer,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return["none"]},attrTest:function(f){return this._super.attrTest.call(this,f)&&(Math.abs(f.rotation)>this.options.threshold||2&this.state)}}),inherit(SwipeRecognizer,AttrRecognizer,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return PanRecognizer.prototype.getTouchAction.call(this)},attrTest:function(f){var p,M=this.options.direction;return 30&M?p=f.overallVelocity:6&M?p=f.overallVelocityX:24&M&&(p=f.overallVelocityY),this._super.attrTest.call(this,f)&&M&f.offsetDirection&&f.distance>this.options.threshold&&f.maxPointers==this.options.pointers&&V(p)>this.options.velocity&&4&f.eventType},emit:function(f){var p=directionStr(f.offsetDirection);p&&this.manager.emit(this.options.event+p,f),this.manager.emit(this.options.event,f)}}),inherit(TapRecognizer,Recognizer,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return["manipulation"]},process:function(f){var p=this.options,M=f.pointers.length===p.pointers,S=f.distance0&&p-1 in f)}jQuery.fn=jQuery.prototype={jquery:"3.5.1",constructor:jQuery,length:0,toArray:function(){return O.call(this)},get:function(f){return null==f?O.call(this):f<0?this[f+this.length]:this[f]},pushStack:function(f){var p=jQuery.merge(this.constructor(),f);return p.prevObject=this,p},each:function(f){return jQuery.each(this,f)},map:function(f){return this.pushStack(jQuery.map(this,(function(p,M){return f.call(p,M,p)})))},slice:function(){return this.pushStack(O.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(jQuery.grep(this,(function(f,p){return(p+1)%2})))},odd:function(){return this.pushStack(jQuery.grep(this,(function(f,p){return p%2})))},eq:function(f){var p=this.length,M=+f+(f<0?p:0);return this.pushStack(M>=0&&M0&&p-1 in f)}jQuery.fn=jQuery.prototype={jquery:"3.6.0",constructor:jQuery,length:0,toArray:function(){return O.call(this)},get:function(f){return null==f?O.call(this):f<0?this[f+this.length]:this[f]},pushStack:function(f){var p=jQuery.merge(this.constructor(),f);return p.prevObject=this,p},each:function(f){return jQuery.each(this,f)},map:function(f){return this.pushStack(jQuery.map(this,(function(p,M){return f.call(p,M,p)})))},slice:function(){return this.pushStack(O.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(jQuery.grep(this,(function(f,p){return(p+1)%2})))},odd:function(){return this.pushStack(jQuery.grep(this,(function(f,p){return p%2})))},eq:function(f){var p=this.length,M=+f+(f<0?p:0);return this.pushStack(M>=0&&M+~]|"+me+")"+me+"*"),ke=new RegExp(me+"|>"),Te=new RegExp(ve),Me=new RegExp("^"+ge+"$"),Se={ID:new RegExp("^#("+ge+")"),CLASS:new RegExp("^\\.("+ge+")"),TAG:new RegExp("^("+ge+"|[*])"),ATTR:new RegExp("^"+be),PSEUDO:new RegExp("^"+ve),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+me+"*(even|odd|(([+-]|)(\\d*)n|)"+me+"*(?:([+-]|)"+me+"*(\\d+)|))"+me+"*\\)|)","i"),bool:new RegExp("^(?:"+pe+")$","i"),needsContext:new RegExp("^"+me+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+me+"*((?:-\\d)?\\d*)"+me+"*\\)|)(?=[^-]|$)","i")},Le=/HTML$/i,De=/^(?:input|select|textarea|button)$/i,Ce=/^h\d$/i,Ae=/^[^{]+\{\s*\[native \w/,Pe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Ye=/[+~]/,Ie=new RegExp("\\\\[\\da-fA-F]{1,6}"+me+"?|\\\\([^\\r\\n\\f])","g"),funescape=function(f,p){var M="0x"+f.slice(1)-65536;return p||(M<0?String.fromCharCode(M+65536):String.fromCharCode(M>>10|55296,1023&M|56320))},Ee=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(f,p){return p?"\0"===f?"�":f.slice(0,-1)+"\\"+f.charCodeAt(f.length-1).toString(16)+" ":"\\"+f},unloadHandler=function(){V()},Oe=addCombinator((function(f){return!0===f.disabled&&"fieldset"===f.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{he.apply(ce=fe.call(te.childNodes),te.childNodes),ce[te.childNodes.length].nodeType}catch(f){he={apply:ce.length?function(f,p){ue.apply(f,fe.call(p))}:function(f,p){for(var M=f.length,S=0;f[M++]=p[S++];);f.length=M-1}}}function Sizzle(f,p,S,L){var Y,O,B,W,G,q,J,Z=p&&p.ownerDocument,te=p?p.nodeType:9;if(S=S||[],"string"!=typeof f||!f||1!==te&&9!==te&&11!==te)return S;if(!L&&(V(p),p=p||U,X)){if(11!==te&&(G=Pe.exec(f)))if(Y=G[1]){if(9===te){if(!(B=p.getElementById(Y)))return S;if(B.id===Y)return S.push(B),S}else if(Z&&(B=Z.getElementById(Y))&&Q(p,B)&&B.id===Y)return S.push(B),S}else{if(G[2])return he.apply(S,p.getElementsByTagName(f)),S;if((Y=G[3])&&M.getElementsByClassName&&p.getElementsByClassName)return he.apply(S,p.getElementsByClassName(Y)),S}if(M.qsa&&!se[f+" "]&&(!K||!K.test(f))&&(1!==te||"object"!==p.nodeName.toLowerCase())){if(J=f,Z=p,1===te&&(ke.test(f)||xe.test(f))){for((Z=Ye.test(f)&&testContext(p.parentNode)||p)===p&&M.scope||((W=p.getAttribute("id"))?W=W.replace(Ee,fcssescape):p.setAttribute("id",W=ee)),O=(q=E(f)).length;O--;)q[O]=(W?"#"+W:":scope")+" "+toSelector(q[O]);J=q.join(",")}try{return he.apply(S,Z.querySelectorAll(J)),S}catch(p){se(f,!0)}finally{W===ee&&p.removeAttribute("id")}}}return R(f.replace(ye,"$1"),p,S,L)}function createCache(){var f=[];return function cache(p,M){return f.push(p+" ")>S.cacheLength&&delete cache[f.shift()],cache[p+" "]=M}}function markFunction(f){return f[ee]=!0,f}function assert(f){var p=U.createElement("fieldset");try{return!!f(p)}catch(f){return!1}finally{p.parentNode&&p.parentNode.removeChild(p),p=null}}function addHandle(f,p){for(var M=f.split("|"),L=M.length;L--;)S.attrHandle[M[L]]=p}function siblingCheck(f,p){var M=p&&f,S=M&&1===f.nodeType&&1===p.nodeType&&f.sourceIndex-p.sourceIndex;if(S)return S;if(M)for(;M=M.nextSibling;)if(M===p)return-1;return f?1:-1}function createInputPseudo(f){return function(p){return"input"===p.nodeName.toLowerCase()&&p.type===f}}function createButtonPseudo(f){return function(p){var M=p.nodeName.toLowerCase();return("input"===M||"button"===M)&&p.type===f}}function createDisabledPseudo(f){return function(p){return"form"in p?p.parentNode&&!1===p.disabled?"label"in p?"label"in p.parentNode?p.parentNode.disabled===f:p.disabled===f:p.isDisabled===f||p.isDisabled!==!f&&Oe(p)===f:p.disabled===f:"label"in p&&p.disabled===f}}function createPositionalPseudo(f){return markFunction((function(p){return p=+p,markFunction((function(M,S){for(var L,Y=f([],M.length,p),E=Y.length;E--;)M[L=Y[E]]&&(M[L]=!(S[L]=M[L]))}))}))}function testContext(f){return f&&void 0!==f.getElementsByTagName&&f}for(p in M=Sizzle.support={},Y=Sizzle.isXML=function(f){var p=f.namespaceURI,M=(f.ownerDocument||f).documentElement;return!Le.test(p||M&&M.nodeName||"HTML")},V=Sizzle.setDocument=function(f){var p,L,E=f?f.ownerDocument||f:te;return E!=U&&9===E.nodeType&&E.documentElement?(q=(U=E).documentElement,X=!Y(U),te!=U&&(L=U.defaultView)&&L.top!==L&&(L.addEventListener?L.addEventListener("unload",unloadHandler,!1):L.attachEvent&&L.attachEvent("onunload",unloadHandler)),M.scope=assert((function(f){return q.appendChild(f).appendChild(U.createElement("div")),void 0!==f.querySelectorAll&&!f.querySelectorAll(":scope fieldset div").length})),M.attributes=assert((function(f){return f.className="i",!f.getAttribute("className")})),M.getElementsByTagName=assert((function(f){return f.appendChild(U.createComment("")),!f.getElementsByTagName("*").length})),M.getElementsByClassName=Ae.test(U.getElementsByClassName),M.getById=assert((function(f){return q.appendChild(f).id=ee,!U.getElementsByName||!U.getElementsByName(ee).length})),M.getById?(S.filter.ID=function(f){var p=f.replace(Ie,funescape);return function(f){return f.getAttribute("id")===p}},S.find.ID=function(f,p){if(void 0!==p.getElementById&&X){var M=p.getElementById(f);return M?[M]:[]}}):(S.filter.ID=function(f){var p=f.replace(Ie,funescape);return function(f){var M=void 0!==f.getAttributeNode&&f.getAttributeNode("id");return M&&M.value===p}},S.find.ID=function(f,p){if(void 0!==p.getElementById&&X){var M,S,L,Y=p.getElementById(f);if(Y){if((M=Y.getAttributeNode("id"))&&M.value===f)return[Y];for(L=p.getElementsByName(f),S=0;Y=L[S++];)if((M=Y.getAttributeNode("id"))&&M.value===f)return[Y]}return[]}}),S.find.TAG=M.getElementsByTagName?function(f,p){return void 0!==p.getElementsByTagName?p.getElementsByTagName(f):M.qsa?p.querySelectorAll(f):void 0}:function(f,p){var M,S=[],L=0,Y=p.getElementsByTagName(f);if("*"===f){for(;M=Y[L++];)1===M.nodeType&&S.push(M);return S}return Y},S.find.CLASS=M.getElementsByClassName&&function(f,p){if(void 0!==p.getElementsByClassName&&X)return p.getElementsByClassName(f)},J=[],K=[],(M.qsa=Ae.test(U.querySelectorAll))&&(assert((function(f){var p;q.appendChild(f).innerHTML="",f.querySelectorAll("[msallowcapture^='']").length&&K.push("[*^$]="+me+"*(?:''|\"\")"),f.querySelectorAll("[selected]").length||K.push("\\["+me+"*(?:value|"+pe+")"),f.querySelectorAll("[id~="+ee+"-]").length||K.push("~="),(p=U.createElement("input")).setAttribute("name",""),f.appendChild(p),f.querySelectorAll("[name='']").length||K.push("\\["+me+"*name"+me+"*="+me+"*(?:''|\"\")"),f.querySelectorAll(":checked").length||K.push(":checked"),f.querySelectorAll("a#"+ee+"+*").length||K.push(".#.+[+~]"),f.querySelectorAll("\\\f"),K.push("[\\r\\n\\f]")})),assert((function(f){f.innerHTML="";var p=U.createElement("input");p.setAttribute("type","hidden"),f.appendChild(p).setAttribute("name","D"),f.querySelectorAll("[name=d]").length&&K.push("name"+me+"*[*^$|!~]?="),2!==f.querySelectorAll(":enabled").length&&K.push(":enabled",":disabled"),q.appendChild(f).disabled=!0,2!==f.querySelectorAll(":disabled").length&&K.push(":enabled",":disabled"),f.querySelectorAll("*,:x"),K.push(",.*:")}))),(M.matchesSelector=Ae.test(Z=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&assert((function(f){M.disconnectedMatch=Z.call(f,"*"),Z.call(f,"[s!='']:x"),J.push("!=",ve)})),K=K.length&&new RegExp(K.join("|")),J=J.length&&new RegExp(J.join("|")),p=Ae.test(q.compareDocumentPosition),Q=p||Ae.test(q.contains)?function(f,p){var M=9===f.nodeType?f.documentElement:f,S=p&&p.parentNode;return f===S||!(!S||1!==S.nodeType||!(M.contains?M.contains(S):f.compareDocumentPosition&&16&f.compareDocumentPosition(S)))}:function(f,p){if(p)for(;p=p.parentNode;)if(p===f)return!0;return!1},sortOrder=p?function(f,p){if(f===p)return G=!0,0;var S=!f.compareDocumentPosition-!p.compareDocumentPosition;return S||(1&(S=(f.ownerDocument||f)==(p.ownerDocument||p)?f.compareDocumentPosition(p):1)||!M.sortDetached&&p.compareDocumentPosition(f)===S?f==U||f.ownerDocument==te&&Q(te,f)?-1:p==U||p.ownerDocument==te&&Q(te,p)?1:W?indexOf(W,f)-indexOf(W,p):0:4&S?-1:1)}:function(f,p){if(f===p)return G=!0,0;var M,S=0,L=f.parentNode,Y=p.parentNode,E=[f],O=[p];if(!L||!Y)return f==U?-1:p==U?1:L?-1:Y?1:W?indexOf(W,f)-indexOf(W,p):0;if(L===Y)return siblingCheck(f,p);for(M=f;M=M.parentNode;)E.unshift(M);for(M=p;M=M.parentNode;)O.unshift(M);for(;E[S]===O[S];)S++;return S?siblingCheck(E[S],O[S]):E[S]==te?-1:O[S]==te?1:0},U):U},Sizzle.matches=function(f,p){return Sizzle(f,null,null,p)},Sizzle.matchesSelector=function(f,p){if(V(f),M.matchesSelector&&X&&!se[p+" "]&&(!J||!J.test(p))&&(!K||!K.test(p)))try{var S=Z.call(f,p);if(S||M.disconnectedMatch||f.document&&11!==f.document.nodeType)return S}catch(f){se(p,!0)}return Sizzle(p,U,null,[f]).length>0},Sizzle.contains=function(f,p){return(f.ownerDocument||f)!=U&&V(f),Q(f,p)},Sizzle.attr=function(f,p){(f.ownerDocument||f)!=U&&V(f);var L=S.attrHandle[p.toLowerCase()],Y=L&&le.call(S.attrHandle,p.toLowerCase())?L(f,p,!X):void 0;return void 0!==Y?Y:M.attributes||!X?f.getAttribute(p):(Y=f.getAttributeNode(p))&&Y.specified?Y.value:null},Sizzle.escape=function(f){return(f+"").replace(Ee,fcssescape)},Sizzle.error=function(f){throw new Error("Syntax error, unrecognized expression: "+f)},Sizzle.uniqueSort=function(f){var p,S=[],L=0,Y=0;if(G=!M.detectDuplicates,W=!M.sortStable&&f.slice(0),f.sort(sortOrder),G){for(;p=f[Y++];)p===f[Y]&&(L=S.push(Y));for(;L--;)f.splice(S[L],1)}return W=null,f},L=Sizzle.getText=function(f){var p,M="",S=0,Y=f.nodeType;if(Y){if(1===Y||9===Y||11===Y){if("string"==typeof f.textContent)return f.textContent;for(f=f.firstChild;f;f=f.nextSibling)M+=L(f)}else if(3===Y||4===Y)return f.nodeValue}else for(;p=f[S++];)M+=L(p);return M},(S=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:Se,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(f){return f[1]=f[1].replace(Ie,funescape),f[3]=(f[3]||f[4]||f[5]||"").replace(Ie,funescape),"~="===f[2]&&(f[3]=" "+f[3]+" "),f.slice(0,4)},CHILD:function(f){return f[1]=f[1].toLowerCase(),"nth"===f[1].slice(0,3)?(f[3]||Sizzle.error(f[0]),f[4]=+(f[4]?f[5]+(f[6]||1):2*("even"===f[3]||"odd"===f[3])),f[5]=+(f[7]+f[8]||"odd"===f[3])):f[3]&&Sizzle.error(f[0]),f},PSEUDO:function(f){var p,M=!f[6]&&f[2];return Se.CHILD.test(f[0])?null:(f[3]?f[2]=f[4]||f[5]||"":M&&Te.test(M)&&(p=E(M,!0))&&(p=M.indexOf(")",M.length-p)-M.length)&&(f[0]=f[0].slice(0,p),f[2]=M.slice(0,p)),f.slice(0,3))}},filter:{TAG:function(f){var p=f.replace(Ie,funescape).toLowerCase();return"*"===f?function(){return!0}:function(f){return f.nodeName&&f.nodeName.toLowerCase()===p}},CLASS:function(f){var p=re[f+" "];return p||(p=new RegExp("(^|"+me+")"+f+"("+me+"|$)"))&&re(f,(function(f){return p.test("string"==typeof f.className&&f.className||void 0!==f.getAttribute&&f.getAttribute("class")||"")}))},ATTR:function(f,p,M){return function(S){var L=Sizzle.attr(S,f);return null==L?"!="===p:!p||(L+="","="===p?L===M:"!="===p?L!==M:"^="===p?M&&0===L.indexOf(M):"*="===p?M&&L.indexOf(M)>-1:"$="===p?M&&L.slice(-M.length)===M:"~="===p?(" "+L.replace(_e," ")+" ").indexOf(M)>-1:"|="===p&&(L===M||L.slice(0,M.length+1)===M+"-"))}},CHILD:function(f,p,M,S,L){var Y="nth"!==f.slice(0,3),E="last"!==f.slice(-4),O="of-type"===p;return 1===S&&0===L?function(f){return!!f.parentNode}:function(p,M,R){var B,W,G,V,U,q,X=Y!==E?"nextSibling":"previousSibling",K=p.parentNode,J=O&&p.nodeName.toLowerCase(),Z=!R&&!O,Q=!1;if(K){if(Y){for(;X;){for(V=p;V=V[X];)if(O?V.nodeName.toLowerCase()===J:1===V.nodeType)return!1;q=X="only"===f&&!q&&"nextSibling"}return!0}if(q=[E?K.firstChild:K.lastChild],E&&Z){for(Q=(U=(B=(W=(G=(V=K)[ee]||(V[ee]={}))[V.uniqueID]||(G[V.uniqueID]={}))[f]||[])[0]===ne&&B[1])&&B[2],V=U&&K.childNodes[U];V=++U&&V&&V[X]||(Q=U=0)||q.pop();)if(1===V.nodeType&&++Q&&V===p){W[f]=[ne,U,Q];break}}else if(Z&&(Q=U=(B=(W=(G=(V=p)[ee]||(V[ee]={}))[V.uniqueID]||(G[V.uniqueID]={}))[f]||[])[0]===ne&&B[1]),!1===Q)for(;(V=++U&&V&&V[X]||(Q=U=0)||q.pop())&&((O?V.nodeName.toLowerCase()!==J:1!==V.nodeType)||!++Q||(Z&&((W=(G=V[ee]||(V[ee]={}))[V.uniqueID]||(G[V.uniqueID]={}))[f]=[ne,Q]),V!==p)););return(Q-=L)===S||Q%S==0&&Q/S>=0}}},PSEUDO:function(f,p){var M,L=S.pseudos[f]||S.setFilters[f.toLowerCase()]||Sizzle.error("unsupported pseudo: "+f);return L[ee]?L(p):L.length>1?(M=[f,f,"",p],S.setFilters.hasOwnProperty(f.toLowerCase())?markFunction((function(f,M){for(var S,Y=L(f,p),E=Y.length;E--;)f[S=indexOf(f,Y[E])]=!(M[S]=Y[E])})):function(f){return L(f,0,M)}):L}},pseudos:{not:markFunction((function(f){var p=[],M=[],S=O(f.replace(ye,"$1"));return S[ee]?markFunction((function(f,p,M,L){for(var Y,E=S(f,null,L,[]),O=f.length;O--;)(Y=E[O])&&(f[O]=!(p[O]=Y))})):function(f,L,Y){return p[0]=f,S(p,null,Y,M),p[0]=null,!M.pop()}})),has:markFunction((function(f){return function(p){return Sizzle(f,p).length>0}})),contains:markFunction((function(f){return f=f.replace(Ie,funescape),function(p){return(p.textContent||L(p)).indexOf(f)>-1}})),lang:markFunction((function(f){return Me.test(f||"")||Sizzle.error("unsupported lang: "+f),f=f.replace(Ie,funescape).toLowerCase(),function(p){var M;do{if(M=X?p.lang:p.getAttribute("xml:lang")||p.getAttribute("lang"))return(M=M.toLowerCase())===f||0===M.indexOf(f+"-")}while((p=p.parentNode)&&1===p.nodeType);return!1}})),target:function(p){var M=f.location&&f.location.hash;return M&&M.slice(1)===p.id},root:function(f){return f===q},focus:function(f){return f===U.activeElement&&(!U.hasFocus||U.hasFocus())&&!!(f.type||f.href||~f.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(f){var p=f.nodeName.toLowerCase();return"input"===p&&!!f.checked||"option"===p&&!!f.selected},selected:function(f){return f.parentNode&&f.parentNode.selectedIndex,!0===f.selected},empty:function(f){for(f=f.firstChild;f;f=f.nextSibling)if(f.nodeType<6)return!1;return!0},parent:function(f){return!S.pseudos.empty(f)},header:function(f){return Ce.test(f.nodeName)},input:function(f){return De.test(f.nodeName)},button:function(f){var p=f.nodeName.toLowerCase();return"input"===p&&"button"===f.type||"button"===p},text:function(f){var p;return"input"===f.nodeName.toLowerCase()&&"text"===f.type&&(null==(p=f.getAttribute("type"))||"text"===p.toLowerCase())},first:createPositionalPseudo((function(){return[0]})),last:createPositionalPseudo((function(f,p){return[p-1]})),eq:createPositionalPseudo((function(f,p,M){return[M<0?M+p:M]})),even:createPositionalPseudo((function(f,p){for(var M=0;Mp?p:M;--S>=0;)f.push(S);return f})),gt:createPositionalPseudo((function(f,p,M){for(var S=M<0?M+p:M;++S1?function(p,M,S){for(var L=f.length;L--;)if(!f[L](p,M,S))return!1;return!0}:f[0]}function condense(f,p,M,S,L){for(var Y,E=[],O=0,R=f.length,B=null!=p;O-1&&(Y[B]=!(E[B]=G))}}else J=condense(J===E?J.splice(q,J.length):J),L?L(null,E,J,R):he.apply(E,J)}))}function matcherFromTokens(f){for(var p,M,L,Y=f.length,E=S.relative[f[0].type],O=E||S.relative[" "],R=E?1:0,W=addCombinator((function(f){return f===p}),O,!0),G=addCombinator((function(f){return indexOf(p,f)>-1}),O,!0),V=[function(f,M,S){var L=!E&&(S||M!==B)||((p=M).nodeType?W(f,M,S):G(f,M,S));return p=null,L}];R1&&elementMatcher(V),R>1&&toSelector(f.slice(0,R-1).concat({value:" "===f[R-2].type?"*":""})).replace(ye,"$1"),M,R0,L=f.length>0,superMatcher=function(Y,E,O,R,W){var G,q,K,J=0,Z="0",Q=Y&&[],ee=[],te=B,ie=Y||L&&S.find.TAG("*",W),re=ne+=null==te?1:Math.random()||.1,ae=ie.length;for(W&&(B=E==U||E||W);Z!==ae&&null!=(G=ie[Z]);Z++){if(L&&G){for(q=0,E||G.ownerDocument==U||(V(G),O=!X);K=f[q++];)if(K(G,E||U,O)){R.push(G);break}W&&(ne=re)}M&&((G=!K&&G)&&J--,Y&&Q.push(G))}if(J+=Z,M&&Z!==J){for(q=0;K=p[q++];)K(Q,ee,E,O);if(Y){if(J>0)for(;Z--;)Q[Z]||ee[Z]||(ee[Z]=de.call(R));ee=condense(ee)}he.apply(R,ee),W&&!Y&&ee.length>0&&J+p.length>1&&Sizzle.uniqueSort(R)}return W&&(ne=re,B=te),Q};return M?markFunction(superMatcher):superMatcher}(Y,L))).selector=f}return O},R=Sizzle.select=function(f,p,M,L){var Y,R,B,W,G,V="function"==typeof f&&f,U=!L&&E(f=V.selector||f);if(M=M||[],1===U.length){if((R=U[0]=U[0].slice(0)).length>2&&"ID"===(B=R[0]).type&&9===p.nodeType&&X&&S.relative[R[1].type]){if(!(p=(S.find.ID(B.matches[0].replace(Ie,funescape),p)||[])[0]))return M;V&&(p=p.parentNode),f=f.slice(R.shift().value.length)}for(Y=Se.needsContext.test(f)?0:R.length;Y--&&(B=R[Y],!S.relative[W=B.type]);)if((G=S.find[W])&&(L=G(B.matches[0].replace(Ie,funescape),Ye.test(R[0].type)&&testContext(p.parentNode)||p))){if(R.splice(Y,1),!(f=L.length&&toSelector(R)))return he.apply(M,L),M;break}}return(V||O(f,U))(L,p,!X,M,!p||Ye.test(f)&&testContext(p.parentNode)||p),M},M.sortStable=ee.split("").sort(sortOrder).join("")===ee,M.detectDuplicates=!!G,V(),M.sortDetached=assert((function(f){return 1&f.compareDocumentPosition(U.createElement("fieldset"))})),assert((function(f){return f.innerHTML="","#"===f.firstChild.getAttribute("href")}))||addHandle("type|href|height|width",(function(f,p,M){if(!M)return f.getAttribute(p,"type"===p.toLowerCase()?1:2)})),M.attributes&&assert((function(f){return f.innerHTML="",f.firstChild.setAttribute("value",""),""===f.firstChild.getAttribute("value")}))||addHandle("value",(function(f,p,M){if(!M&&"input"===f.nodeName.toLowerCase())return f.defaultValue})),assert((function(f){return null==f.getAttribute("disabled")}))||addHandle(pe,(function(f,p,M){var S;if(!M)return!0===f[p]?p.toLowerCase():(S=f.getAttributeNode(p))&&S.specified?S.value:null})),Sizzle}(M);jQuery.find=te,jQuery.expr=te.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=te.uniqueSort,jQuery.text=te.getText,jQuery.isXMLDoc=te.isXML,jQuery.contains=te.contains,jQuery.escapeSelector=te.escape;var dir=function(f,p,M){for(var S=[],L=void 0!==M;(f=f[p])&&9!==f.nodeType;)if(1===f.nodeType){if(L&&jQuery(f).is(M))break;S.push(f)}return S},siblings=function(f,p){for(var M=[];f;f=f.nextSibling)1===f.nodeType&&f!==p&&M.push(f);return M},ne=jQuery.expr.match.needsContext;function nodeName(f,p){return f.nodeName&&f.nodeName.toLowerCase()===p.toLowerCase()}var ie=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(f,p,M){return J(p)?jQuery.grep(f,(function(f,S){return!!p.call(f,S,f)!==M})):p.nodeType?jQuery.grep(f,(function(f){return f===p!==M})):"string"!=typeof p?jQuery.grep(f,(function(f){return W.call(p,f)>-1!==M})):jQuery.filter(p,f,M)}jQuery.filter=function(f,p,M){var S=p[0];return M&&(f=":not("+f+")"),1===p.length&&1===S.nodeType?jQuery.find.matchesSelector(S,f)?[S]:[]:jQuery.find.matches(f,jQuery.grep(p,(function(f){return 1===f.nodeType})))},jQuery.fn.extend({find:function(f){var p,M,S=this.length,L=this;if("string"!=typeof f)return this.pushStack(jQuery(f).filter((function(){for(p=0;p1?jQuery.uniqueSort(M):M},filter:function(f){return this.pushStack(winnow(this,f||[],!1))},not:function(f){return this.pushStack(winnow(this,f||[],!0))},is:function(f){return!!winnow(this,"string"==typeof f&&ne.test(f)?jQuery(f):f||[],!1).length}});var re,ae=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(f,p,M){var S,L;if(!f)return this;if(M=M||re,"string"==typeof f){if(!(S="<"===f[0]&&">"===f[f.length-1]&&f.length>=3?[null,f,null]:ae.exec(f))||!S[1]&&p)return!p||p.jquery?(p||M).find(f):this.constructor(p).find(f);if(S[1]){if(p=p instanceof jQuery?p[0]:p,jQuery.merge(this,jQuery.parseHTML(S[1],p&&p.nodeType?p.ownerDocument||p:Q,!0)),ie.test(S[1])&&jQuery.isPlainObject(p))for(S in p)J(this[S])?this[S](p[S]):this.attr(S,p[S]);return this}return(L=Q.getElementById(S[2]))&&(this[0]=L,this.length=1),this}return f.nodeType?(this[0]=f,this.length=1,this):J(f)?void 0!==M.ready?M.ready(f):f(jQuery):jQuery.makeArray(f,this)}).prototype=jQuery.fn,re=jQuery(Q);var oe=/^(?:parents|prev(?:Until|All))/,se={children:!0,contents:!0,next:!0,prev:!0};function sibling(f,p){for(;(f=f[p])&&1!==f.nodeType;);return f}jQuery.fn.extend({has:function(f){var p=jQuery(f,this),M=p.length;return this.filter((function(){for(var f=0;f-1:1===M.nodeType&&jQuery.find.matchesSelector(M,f))){Y.push(M);break}return this.pushStack(Y.length>1?jQuery.uniqueSort(Y):Y)},index:function(f){return f?"string"==typeof f?W.call(jQuery(f),this[0]):W.call(this,f.jquery?f[0]:f):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(f,p){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(f,p))))},addBack:function(f){return this.add(null==f?this.prevObject:this.prevObject.filter(f))}}),jQuery.each({parent:function(f){var p=f.parentNode;return p&&11!==p.nodeType?p:null},parents:function(f){return dir(f,"parentNode")},parentsUntil:function(f,p,M){return dir(f,"parentNode",M)},next:function(f){return sibling(f,"nextSibling")},prev:function(f){return sibling(f,"previousSibling")},nextAll:function(f){return dir(f,"nextSibling")},prevAll:function(f){return dir(f,"previousSibling")},nextUntil:function(f,p,M){return dir(f,"nextSibling",M)},prevUntil:function(f,p,M){return dir(f,"previousSibling",M)},siblings:function(f){return siblings((f.parentNode||{}).firstChild,f)},children:function(f){return siblings(f.firstChild)},contents:function(f){return null!=f.contentDocument&&E(f.contentDocument)?f.contentDocument:(nodeName(f,"template")&&(f=f.content||f),jQuery.merge([],f.childNodes))}},(function(f,p){jQuery.fn[f]=function(M,S){var L=jQuery.map(this,p,M);return"Until"!==f.slice(-5)&&(S=M),S&&"string"==typeof S&&(L=jQuery.filter(S,L)),this.length>1&&(se[f]||jQuery.uniqueSort(L),oe.test(f)&&L.reverse()),this.pushStack(L)}}));var le=/[^\x20\t\r\n\f]+/g;function Identity(f){return f}function Thrower(f){throw f}function adoptValue(f,p,M,S){var L;try{f&&J(L=f.promise)?L.call(f).done(p).fail(M):f&&J(L=f.then)?L.call(f,p,M):p.apply(void 0,[f].slice(S))}catch(f){M.apply(void 0,[f])}}jQuery.Callbacks=function(f){f="string"==typeof f?function createOptions(f){var p={};return jQuery.each(f.match(le)||[],(function(f,M){p[M]=!0})),p}(f):jQuery.extend({},f);var p,M,S,L,Y=[],E=[],O=-1,fire=function(){for(L=L||f.once,S=p=!0;E.length;O=-1)for(M=E.shift();++O-1;)Y.splice(M,1),M<=O&&O--})),this},has:function(f){return f?jQuery.inArray(f,Y)>-1:Y.length>0},empty:function(){return Y&&(Y=[]),this},disable:function(){return L=E=[],Y=M="",this},disabled:function(){return!Y},lock:function(){return L=E=[],M||p||(Y=M=""),this},locked:function(){return!!L},fireWith:function(f,M){return L||(M=[f,(M=M||[]).slice?M.slice():M],E.push(M),p||fire()),this},fire:function(){return R.fireWith(this,arguments),this},fired:function(){return!!S}};return R},jQuery.extend({Deferred:function(f){var p=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],S="pending",L={state:function(){return S},always:function(){return Y.done(arguments).fail(arguments),this},catch:function(f){return L.then(null,f)},pipe:function(){var f=arguments;return jQuery.Deferred((function(M){jQuery.each(p,(function(p,S){var L=J(f[S[4]])&&f[S[4]];Y[S[1]]((function(){var f=L&&L.apply(this,arguments);f&&J(f.promise)?f.promise().progress(M.notify).done(M.resolve).fail(M.reject):M[S[0]+"With"](this,L?[f]:arguments)}))})),f=null})).promise()},then:function(f,S,L){var Y=0;function resolve(f,p,S,L){return function(){var E=this,O=arguments,mightThrow=function(){var M,R;if(!(f=Y&&(S!==Thrower&&(E=void 0,O=[M]),p.rejectWith(E,O))}};f?R():(jQuery.Deferred.getStackHook&&(R.stackTrace=jQuery.Deferred.getStackHook()),M.setTimeout(R))}}return jQuery.Deferred((function(M){p[0][3].add(resolve(0,M,J(L)?L:Identity,M.notifyWith)),p[1][3].add(resolve(0,M,J(f)?f:Identity)),p[2][3].add(resolve(0,M,J(S)?S:Thrower))})).promise()},promise:function(f){return null!=f?jQuery.extend(f,L):L}},Y={};return jQuery.each(p,(function(f,M){var E=M[2],O=M[5];L[M[1]]=E.add,O&&E.add((function(){S=O}),p[3-f][2].disable,p[3-f][3].disable,p[0][2].lock,p[0][3].lock),E.add(M[3].fire),Y[M[0]]=function(){return Y[M[0]+"With"](this===Y?void 0:this,arguments),this},Y[M[0]+"With"]=E.fireWith})),L.promise(Y),f&&f.call(Y,Y),Y},when:function(f){var p=arguments.length,M=p,S=Array(M),L=O.call(arguments),Y=jQuery.Deferred(),updateFunc=function(f){return function(M){S[f]=this,L[f]=arguments.length>1?O.call(arguments):M,--p||Y.resolveWith(S,L)}};if(p<=1&&(adoptValue(f,Y.done(updateFunc(M)).resolve,Y.reject,!p),"pending"===Y.state()||J(L[M]&&L[M].then)))return Y.then();for(;M--;)adoptValue(L[M],updateFunc(M),Y.reject);return Y.promise()}});var ce=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(f,p){M.console&&M.console.warn&&f&&ce.test(f.name)&&M.console.warn("jQuery.Deferred exception: "+f.message,f.stack,p)},jQuery.readyException=function(f){M.setTimeout((function(){throw f}))};var de=jQuery.Deferred();function completed(){Q.removeEventListener("DOMContentLoaded",completed),M.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(f){return de.then(f).catch((function(f){jQuery.readyException(f)})),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(f){(!0===f?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==f&&--jQuery.readyWait>0||de.resolveWith(Q,[jQuery]))}}),jQuery.ready.then=de.then,"complete"===Q.readyState||"loading"!==Q.readyState&&!Q.documentElement.doScroll?M.setTimeout(jQuery.ready):(Q.addEventListener("DOMContentLoaded",completed),M.addEventListener("load",completed));var access=function(f,p,M,S,L,Y,E){var O=0,R=f.length,B=null==M;if("object"===toType(M))for(O in L=!0,M)access(f,p,O,M[O],!0,Y,E);else if(void 0!==S&&(L=!0,J(S)||(E=!0),B&&(E?(p.call(f,S),p=null):(B=p,p=function(f,p,M){return B.call(jQuery(f),M)})),p))for(;O1,null,!0)},removeData:function(f){return this.each((function(){pe.remove(this,f)}))}}),jQuery.extend({queue:function(f,p,M){var S;if(f)return p=(p||"fx")+"queue",S=fe.get(f,p),M&&(!S||Array.isArray(M)?S=fe.access(f,p,jQuery.makeArray(M)):S.push(M)),S||[]},dequeue:function(f,p){p=p||"fx";var M=jQuery.queue(f,p),S=M.length,L=M.shift(),Y=jQuery._queueHooks(f,p);"inprogress"===L&&(L=M.shift(),S--),L&&("fx"===p&&M.unshift("inprogress"),delete Y.stop,L.call(f,(function(){jQuery.dequeue(f,p)}),Y)),!S&&Y&&Y.empty.fire()},_queueHooks:function(f,p){var M=p+"queueHooks";return fe.get(f,M)||fe.access(f,M,{empty:jQuery.Callbacks("once memory").add((function(){fe.remove(f,[p+"queue",M])}))})}}),jQuery.fn.extend({queue:function(f,p){var M=2;return"string"!=typeof f&&(p=f,f="fx",M--),arguments.length\x20\t\r\n\f]*)/i,Le=/^$|^module$|\/(?:java|ecma)script/i;ke=Q.createDocumentFragment().appendChild(Q.createElement("div")),(Te=Q.createElement("input")).setAttribute("type","radio"),Te.setAttribute("checked","checked"),Te.setAttribute("name","t"),ke.appendChild(Te),K.checkClone=ke.cloneNode(!0).cloneNode(!0).lastChild.checked,ke.innerHTML="",K.noCloneChecked=!!ke.cloneNode(!0).lastChild.defaultValue,ke.innerHTML="",K.option=!!ke.lastChild;var De={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function getAll(f,p){var M;return M=void 0!==f.getElementsByTagName?f.getElementsByTagName(p||"*"):void 0!==f.querySelectorAll?f.querySelectorAll(p||"*"):[],void 0===p||p&&nodeName(f,p)?jQuery.merge([f],M):M}function setGlobalEval(f,p){for(var M=0,S=f.length;M",""]);var Ce=/<|&#?\w+;/;function buildFragment(f,p,M,S,L){for(var Y,E,O,R,B,W,G=p.createDocumentFragment(),V=[],U=0,q=f.length;U-1)L&&L.push(Y);else if(B=isAttached(Y),E=getAll(G.appendChild(Y),"script"),B&&setGlobalEval(E),M)for(W=0;Y=E[W++];)Le.test(Y.type||"")&&M.push(Y);return G}var Ae=/^key/,Pe=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ye=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function expectSync(f,p){return f===function safeActiveElement(){try{return Q.activeElement}catch(f){}}()==("focus"===p)}function on(f,p,M,S,L,Y){var E,O;if("object"==typeof p){for(O in"string"!=typeof M&&(S=S||M,M=void 0),p)on(f,O,M,S,p[O],Y);return f}if(null==S&&null==L?(L=M,S=M=void 0):null==L&&("string"==typeof M?(L=S,S=void 0):(L=S,S=M,M=void 0)),!1===L)L=returnFalse;else if(!L)return f;return 1===Y&&(E=L,(L=function(f){return jQuery().off(f),E.apply(this,arguments)}).guid=E.guid||(E.guid=jQuery.guid++)),f.each((function(){jQuery.event.add(this,p,L,S,M)}))}function leverageNative(f,p,M){M?(fe.set(f,p,!1),jQuery.event.add(f,p,{namespace:!1,handler:function(f){var S,L,Y=fe.get(this,p);if(1&f.isTrigger&&this[p]){if(Y.length)(jQuery.event.special[p]||{}).delegateType&&f.stopPropagation();else if(Y=O.call(arguments),fe.set(this,p,Y),S=M(this,p),this[p](),Y!==(L=fe.get(this,p))||S?fe.set(this,p,!1):L={},Y!==L)return f.stopImmediatePropagation(),f.preventDefault(),L.value}else Y.length&&(fe.set(this,p,{value:jQuery.event.trigger(jQuery.extend(Y[0],jQuery.Event.prototype),Y.slice(1),this)}),f.stopImmediatePropagation())}})):void 0===fe.get(f,p)&&jQuery.event.add(f,p,returnTrue)}jQuery.event={global:{},add:function(f,p,M,S,L){var Y,E,O,R,B,W,G,V,U,q,X,K=fe.get(f);if(acceptData(f))for(M.handler&&(M=(Y=M).handler,L=Y.selector),L&&jQuery.find.matchesSelector(ye,L),M.guid||(M.guid=jQuery.guid++),(R=K.events)||(R=K.events=Object.create(null)),(E=K.handle)||(E=K.handle=function(p){return void 0!==jQuery&&jQuery.event.triggered!==p.type?jQuery.event.dispatch.apply(f,arguments):void 0}),B=(p=(p||"").match(le)||[""]).length;B--;)U=X=(O=Ye.exec(p[B])||[])[1],q=(O[2]||"").split(".").sort(),U&&(G=jQuery.event.special[U]||{},U=(L?G.delegateType:G.bindType)||U,G=jQuery.event.special[U]||{},W=jQuery.extend({type:U,origType:X,data:S,handler:M,guid:M.guid,selector:L,needsContext:L&&jQuery.expr.match.needsContext.test(L),namespace:q.join(".")},Y),(V=R[U])||((V=R[U]=[]).delegateCount=0,G.setup&&!1!==G.setup.call(f,S,q,E)||f.addEventListener&&f.addEventListener(U,E)),G.add&&(G.add.call(f,W),W.handler.guid||(W.handler.guid=M.guid)),L?V.splice(V.delegateCount++,0,W):V.push(W),jQuery.event.global[U]=!0)},remove:function(f,p,M,S,L){var Y,E,O,R,B,W,G,V,U,q,X,K=fe.hasData(f)&&fe.get(f);if(K&&(R=K.events)){for(B=(p=(p||"").match(le)||[""]).length;B--;)if(U=X=(O=Ye.exec(p[B])||[])[1],q=(O[2]||"").split(".").sort(),U){for(G=jQuery.event.special[U]||{},V=R[U=(S?G.delegateType:G.bindType)||U]||[],O=O[2]&&new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"),E=Y=V.length;Y--;)W=V[Y],!L&&X!==W.origType||M&&M.guid!==W.guid||O&&!O.test(W.namespace)||S&&S!==W.selector&&("**"!==S||!W.selector)||(V.splice(Y,1),W.selector&&V.delegateCount--,G.remove&&G.remove.call(f,W));E&&!V.length&&(G.teardown&&!1!==G.teardown.call(f,q,K.handle)||jQuery.removeEvent(f,U,K.handle),delete R[U])}else for(U in R)jQuery.event.remove(f,U+p[B],M,S,!0);jQuery.isEmptyObject(R)&&fe.remove(f,"handle events")}},dispatch:function(f){var p,M,S,L,Y,E,O=new Array(arguments.length),R=jQuery.event.fix(f),B=(fe.get(this,"events")||Object.create(null))[R.type]||[],W=jQuery.event.special[R.type]||{};for(O[0]=R,p=1;p=1))for(;B!==this;B=B.parentNode||this)if(1===B.nodeType&&("click"!==f.type||!0!==B.disabled)){for(Y=[],E={},M=0;M-1:jQuery.find(L,this,null,[B]).length),E[L]&&Y.push(S);Y.length&&O.push({elem:B,handlers:Y})}return B=this,R\s*$/g;function manipulationTarget(f,p){return nodeName(f,"table")&&nodeName(11!==p.nodeType?p:p.firstChild,"tr")&&jQuery(f).children("tbody")[0]||f}function disableScript(f){return f.type=(null!==f.getAttribute("type"))+"/"+f.type,f}function restoreScript(f){return"true/"===(f.type||"").slice(0,5)?f.type=f.type.slice(5):f.removeAttribute("type"),f}function cloneCopyEvent(f,p){var M,S,L,Y,E,O;if(1===p.nodeType){if(fe.hasData(f)&&(O=fe.get(f).events))for(L in fe.remove(p,"handle events"),O)for(M=0,S=O[L].length;M1&&"string"==typeof q&&!K.checkClone&&Ee.test(q))return f.each((function(L){var Y=f.eq(L);X&&(p[0]=q.call(this,L,Y.html())),domManip(Y,p,M,S)}));if(V&&(Y=(L=buildFragment(p,f[0].ownerDocument,!1,f,S)).firstChild,1===L.childNodes.length&&(L=Y),Y||S)){for(O=(E=jQuery.map(getAll(L,"script"),disableScript)).length;G0&&setGlobalEval(E,!R&&getAll(f,"script")),O},cleanData:function(f){for(var p,M,S,L=jQuery.event.special,Y=0;void 0!==(M=f[Y]);Y++)if(acceptData(M)){if(p=M[fe.expando]){if(p.events)for(S in p.events)L[S]?jQuery.event.remove(M,S):jQuery.removeEvent(M,S,p.handle);M[fe.expando]=void 0}M[pe.expando]&&(M[pe.expando]=void 0)}}}),jQuery.fn.extend({detach:function(f){return remove(this,f,!0)},remove:function(f){return remove(this,f)},text:function(f){return access(this,(function(f){return void 0===f?jQuery.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=f)}))}),null,f,arguments.length)},append:function(){return domManip(this,arguments,(function(f){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,f).appendChild(f)}))},prepend:function(){return domManip(this,arguments,(function(f){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var p=manipulationTarget(this,f);p.insertBefore(f,p.firstChild)}}))},before:function(){return domManip(this,arguments,(function(f){this.parentNode&&this.parentNode.insertBefore(f,this)}))},after:function(){return domManip(this,arguments,(function(f){this.parentNode&&this.parentNode.insertBefore(f,this.nextSibling)}))},empty:function(){for(var f,p=0;null!=(f=this[p]);p++)1===f.nodeType&&(jQuery.cleanData(getAll(f,!1)),f.textContent="");return this},clone:function(f,p){return f=null!=f&&f,p=null==p?f:p,this.map((function(){return jQuery.clone(this,f,p)}))},html:function(f){return access(this,(function(f){var p=this[0]||{},M=0,S=this.length;if(void 0===f&&1===p.nodeType)return p.innerHTML;if("string"==typeof f&&!Ie.test(f)&&!De[(Se.exec(f)||["",""])[1].toLowerCase()]){f=jQuery.htmlPrefilter(f);try{for(;M3,ye.removeChild(f)),Y}}))}();var Ne=["Webkit","Moz","ms"],je=Q.createElement("div").style,Re={};function finalPropName(f){var p=jQuery.cssProps[f]||Re[f];return p||(f in je?f:Re[f]=function vendorPropName(f){for(var p=f[0].toUpperCase()+f.slice(1),M=Ne.length;M--;)if((f=Ne[M]+p)in je)return f}(f)||f)}var Fe=/^(none|table(?!-c[ea]).+)/,Be=/^--/,We={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function setPositiveNumber(f,p,M){var S=ve.exec(p);return S?Math.max(0,S[2]-(M||0))+(S[3]||"px"):p}function boxModelAdjustment(f,p,M,S,L,Y){var E="width"===p?1:0,O=0,R=0;if(M===(S?"border":"content"))return 0;for(;E<4;E+=2)"margin"===M&&(R+=jQuery.css(f,M+_e[E],!0,L)),S?("content"===M&&(R-=jQuery.css(f,"padding"+_e[E],!0,L)),"margin"!==M&&(R-=jQuery.css(f,"border"+_e[E]+"Width",!0,L))):(R+=jQuery.css(f,"padding"+_e[E],!0,L),"padding"!==M?R+=jQuery.css(f,"border"+_e[E]+"Width",!0,L):O+=jQuery.css(f,"border"+_e[E]+"Width",!0,L));return!S&&Y>=0&&(R+=Math.max(0,Math.ceil(f["offset"+p[0].toUpperCase()+p.slice(1)]-Y-R-O-.5))||0),R}function getWidthOrHeight(f,p,M){var S=getStyles(f),L=(!K.boxSizingReliable()||M)&&"border-box"===jQuery.css(f,"boxSizing",!1,S),Y=L,E=curCSS(f,p,S),O="offset"+p[0].toUpperCase()+p.slice(1);if(He.test(E)){if(!M)return E;E="auto"}return(!K.boxSizingReliable()&&L||!K.reliableTrDimensions()&&nodeName(f,"tr")||"auto"===E||!parseFloat(E)&&"inline"===jQuery.css(f,"display",!1,S))&&f.getClientRects().length&&(L="border-box"===jQuery.css(f,"boxSizing",!1,S),(Y=O in f)&&(E=f[O])),(E=parseFloat(E)||0)+boxModelAdjustment(f,p,M||(L?"border":"content"),Y,S,E)+"px"}function Tween(f,p,M,S,L){return new Tween.prototype.init(f,p,M,S,L)}jQuery.extend({cssHooks:{opacity:{get:function(f,p){if(p){var M=curCSS(f,"opacity");return""===M?"1":M}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(f,p,M,S){if(f&&3!==f.nodeType&&8!==f.nodeType&&f.style){var L,Y,E,O=camelCase(p),R=Be.test(p),B=f.style;if(R||(p=finalPropName(O)),E=jQuery.cssHooks[p]||jQuery.cssHooks[O],void 0===M)return E&&"get"in E&&void 0!==(L=E.get(f,!1,S))?L:B[p];"string"===(Y=typeof M)&&(L=ve.exec(M))&&L[1]&&(M=adjustCSS(f,p,L),Y="number"),null!=M&&M==M&&("number"!==Y||R||(M+=L&&L[3]||(jQuery.cssNumber[O]?"":"px")),K.clearCloneStyle||""!==M||0!==p.indexOf("background")||(B[p]="inherit"),E&&"set"in E&&void 0===(M=E.set(f,M,S))||(R?B.setProperty(p,M):B[p]=M))}},css:function(f,p,M,S){var L,Y,E,O=camelCase(p);return Be.test(p)||(p=finalPropName(O)),(E=jQuery.cssHooks[p]||jQuery.cssHooks[O])&&"get"in E&&(L=E.get(f,!0,M)),void 0===L&&(L=curCSS(f,p,S)),"normal"===L&&p in Ge&&(L=Ge[p]),""===M||M?(Y=parseFloat(L),!0===M||isFinite(Y)?Y||0:L):L}}),jQuery.each(["height","width"],(function(f,p){jQuery.cssHooks[p]={get:function(f,M,S){if(M)return!Fe.test(jQuery.css(f,"display"))||f.getClientRects().length&&f.getBoundingClientRect().width?getWidthOrHeight(f,p,S):swap(f,We,(function(){return getWidthOrHeight(f,p,S)}))},set:function(f,M,S){var L,Y=getStyles(f),E=!K.scrollboxSize()&&"absolute"===Y.position,O=(E||S)&&"border-box"===jQuery.css(f,"boxSizing",!1,Y),R=S?boxModelAdjustment(f,p,S,O,Y):0;return O&&E&&(R-=Math.ceil(f["offset"+p[0].toUpperCase()+p.slice(1)]-parseFloat(Y[p])-boxModelAdjustment(f,p,"border",!1,Y)-.5)),R&&(L=ve.exec(M))&&"px"!==(L[3]||"px")&&(f.style[p]=M,M=jQuery.css(f,p)),setPositiveNumber(0,M,R)}}})),jQuery.cssHooks.marginLeft=addGetHookIf(K.reliableMarginLeft,(function(f,p){if(p)return(parseFloat(curCSS(f,"marginLeft"))||f.getBoundingClientRect().left-swap(f,{marginLeft:0},(function(){return f.getBoundingClientRect().left})))+"px"})),jQuery.each({margin:"",padding:"",border:"Width"},(function(f,p){jQuery.cssHooks[f+p]={expand:function(M){for(var S=0,L={},Y="string"==typeof M?M.split(" "):[M];S<4;S++)L[f+_e[S]+p]=Y[S]||Y[S-2]||Y[0];return L}},"margin"!==f&&(jQuery.cssHooks[f+p].set=setPositiveNumber)})),jQuery.fn.extend({css:function(f,p){return access(this,(function(f,p,M){var S,L,Y={},E=0;if(Array.isArray(p)){for(S=getStyles(f),L=p.length;E1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(f,p,M,S,L,Y){this.elem=f,this.prop=M,this.easing=L||jQuery.easing._default,this.options=p,this.start=this.now=this.cur(),this.end=S,this.unit=Y||(jQuery.cssNumber[M]?"":"px")},cur:function(){var f=Tween.propHooks[this.prop];return f&&f.get?f.get(this):Tween.propHooks._default.get(this)},run:function(f){var p,M=Tween.propHooks[this.prop];return this.options.duration?this.pos=p=jQuery.easing[this.easing](f,this.options.duration*f,0,1,this.options.duration):this.pos=p=f,this.now=(this.end-this.start)*p+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),M&&M.set?M.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(f){var p;return 1!==f.elem.nodeType||null!=f.elem[f.prop]&&null==f.elem.style[f.prop]?f.elem[f.prop]:(p=jQuery.css(f.elem,f.prop,""))&&"auto"!==p?p:0},set:function(f){jQuery.fx.step[f.prop]?jQuery.fx.step[f.prop](f):1!==f.elem.nodeType||!jQuery.cssHooks[f.prop]&&null==f.elem.style[finalPropName(f.prop)]?f.elem[f.prop]=f.now:jQuery.style(f.elem,f.prop,f.now+f.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(f){f.elem.nodeType&&f.elem.parentNode&&(f.elem[f.prop]=f.now)}},jQuery.easing={linear:function(f){return f},swing:function(f){return.5-Math.cos(f*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var Ve,Ue,$e=/^(?:toggle|show|hide)$/,qe=/queueHooks$/;function schedule(){Ue&&(!1===Q.hidden&&M.requestAnimationFrame?M.requestAnimationFrame(schedule):M.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return M.setTimeout((function(){Ve=void 0})),Ve=Date.now()}function genFx(f,p){var M,S=0,L={height:f};for(p=p?1:0;S<4;S+=2-p)L["margin"+(M=_e[S])]=L["padding"+M]=f;return p&&(L.opacity=L.width=f),L}function createTween(f,p,M){for(var S,L=(Animation.tweeners[p]||[]).concat(Animation.tweeners["*"]),Y=0,E=L.length;Y1)},removeAttr:function(f){return this.each((function(){jQuery.removeAttr(this,f)}))}}),jQuery.extend({attr:function(f,p,M){var S,L,Y=f.nodeType;if(3!==Y&&8!==Y&&2!==Y)return void 0===f.getAttribute?jQuery.prop(f,p,M):(1===Y&&jQuery.isXMLDoc(f)||(L=jQuery.attrHooks[p.toLowerCase()]||(jQuery.expr.match.bool.test(p)?Xe:void 0)),void 0!==M?null===M?void jQuery.removeAttr(f,p):L&&"set"in L&&void 0!==(S=L.set(f,M,p))?S:(f.setAttribute(p,M+""),M):L&&"get"in L&&null!==(S=L.get(f,p))?S:null==(S=jQuery.find.attr(f,p))?void 0:S)},attrHooks:{type:{set:function(f,p){if(!K.radioValue&&"radio"===p&&nodeName(f,"input")){var M=f.value;return f.setAttribute("type",p),M&&(f.value=M),p}}}},removeAttr:function(f,p){var M,S=0,L=p&&p.match(le);if(L&&1===f.nodeType)for(;M=L[S++];)f.removeAttribute(M)}}),Xe={set:function(f,p,M){return!1===p?jQuery.removeAttr(f,M):f.setAttribute(M,M),M}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),(function(f,p){var M=Ke[p]||jQuery.find.attr;Ke[p]=function(f,p,S){var L,Y,E=p.toLowerCase();return S||(Y=Ke[E],Ke[E]=L,L=null!=M(f,p,S)?E:null,Ke[E]=Y),L}}));var Je=/^(?:input|select|textarea|button)$/i,Ze=/^(?:a|area)$/i;function stripAndCollapse(f){return(f.match(le)||[]).join(" ")}function getClass(f){return f.getAttribute&&f.getAttribute("class")||""}function classesToArray(f){return Array.isArray(f)?f:"string"==typeof f&&f.match(le)||[]}jQuery.fn.extend({prop:function(f,p){return access(this,jQuery.prop,f,p,arguments.length>1)},removeProp:function(f){return this.each((function(){delete this[jQuery.propFix[f]||f]}))}}),jQuery.extend({prop:function(f,p,M){var S,L,Y=f.nodeType;if(3!==Y&&8!==Y&&2!==Y)return 1===Y&&jQuery.isXMLDoc(f)||(p=jQuery.propFix[p]||p,L=jQuery.propHooks[p]),void 0!==M?L&&"set"in L&&void 0!==(S=L.set(f,M,p))?S:f[p]=M:L&&"get"in L&&null!==(S=L.get(f,p))?S:f[p]},propHooks:{tabIndex:{get:function(f){var p=jQuery.find.attr(f,"tabindex");return p?parseInt(p,10):Je.test(f.nodeName)||Ze.test(f.nodeName)&&f.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),K.optSelected||(jQuery.propHooks.selected={get:function(f){var p=f.parentNode;return p&&p.parentNode&&p.parentNode.selectedIndex,null},set:function(f){var p=f.parentNode;p&&(p.selectedIndex,p.parentNode&&p.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){jQuery.propFix[this.toLowerCase()]=this})),jQuery.fn.extend({addClass:function(f){var p,M,S,L,Y,E,O,R=0;if(J(f))return this.each((function(p){jQuery(this).addClass(f.call(this,p,getClass(this)))}));if((p=classesToArray(f)).length)for(;M=this[R++];)if(L=getClass(M),S=1===M.nodeType&&" "+stripAndCollapse(L)+" "){for(E=0;Y=p[E++];)S.indexOf(" "+Y+" ")<0&&(S+=Y+" ");L!==(O=stripAndCollapse(S))&&M.setAttribute("class",O)}return this},removeClass:function(f){var p,M,S,L,Y,E,O,R=0;if(J(f))return this.each((function(p){jQuery(this).removeClass(f.call(this,p,getClass(this)))}));if(!arguments.length)return this.attr("class","");if((p=classesToArray(f)).length)for(;M=this[R++];)if(L=getClass(M),S=1===M.nodeType&&" "+stripAndCollapse(L)+" "){for(E=0;Y=p[E++];)for(;S.indexOf(" "+Y+" ")>-1;)S=S.replace(" "+Y+" "," ");L!==(O=stripAndCollapse(S))&&M.setAttribute("class",O)}return this},toggleClass:function(f,p){var M=typeof f,S="string"===M||Array.isArray(f);return"boolean"==typeof p&&S?p?this.addClass(f):this.removeClass(f):J(f)?this.each((function(M){jQuery(this).toggleClass(f.call(this,M,getClass(this),p),p)})):this.each((function(){var p,L,Y,E;if(S)for(L=0,Y=jQuery(this),E=classesToArray(f);p=E[L++];)Y.hasClass(p)?Y.removeClass(p):Y.addClass(p);else void 0!==f&&"boolean"!==M||((p=getClass(this))&&fe.set(this,"__className__",p),this.setAttribute&&this.setAttribute("class",p||!1===f?"":fe.get(this,"__className__")||""))}))},hasClass:function(f){var p,M,S=0;for(p=" "+f+" ";M=this[S++];)if(1===M.nodeType&&(" "+stripAndCollapse(getClass(M))+" ").indexOf(p)>-1)return!0;return!1}});var Qe=/\r/g;jQuery.fn.extend({val:function(f){var p,M,S,L=this[0];return arguments.length?(S=J(f),this.each((function(M){var L;1===this.nodeType&&(null==(L=S?f.call(this,M,jQuery(this).val()):f)?L="":"number"==typeof L?L+="":Array.isArray(L)&&(L=jQuery.map(L,(function(f){return null==f?"":f+""}))),(p=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in p&&void 0!==p.set(this,L,"value")||(this.value=L))}))):L?(p=jQuery.valHooks[L.type]||jQuery.valHooks[L.nodeName.toLowerCase()])&&"get"in p&&void 0!==(M=p.get(L,"value"))?M:"string"==typeof(M=L.value)?M.replace(Qe,""):null==M?"":M:void 0}}),jQuery.extend({valHooks:{option:{get:function(f){var p=jQuery.find.attr(f,"value");return null!=p?p:stripAndCollapse(jQuery.text(f))}},select:{get:function(f){var p,M,S,L=f.options,Y=f.selectedIndex,E="select-one"===f.type,O=E?null:[],R=E?Y+1:L.length;for(S=Y<0?R:E?Y:0;S-1)&&(M=!0);return M||(f.selectedIndex=-1),Y}}}}),jQuery.each(["radio","checkbox"],(function(){jQuery.valHooks[this]={set:function(f,p){if(Array.isArray(p))return f.checked=jQuery.inArray(jQuery(f).val(),p)>-1}},K.checkOn||(jQuery.valHooks[this].get=function(f){return null===f.getAttribute("value")?"on":f.value})})),K.focusin="onfocusin"in M;var et=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(f){f.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(f,p,S,L){var Y,E,O,R,B,W,G,V,q=[S||Q],X=U.call(f,"type")?f.type:f,K=U.call(f,"namespace")?f.namespace.split("."):[];if(E=V=O=S=S||Q,3!==S.nodeType&&8!==S.nodeType&&!et.test(X+jQuery.event.triggered)&&(X.indexOf(".")>-1&&(K=X.split("."),X=K.shift(),K.sort()),B=X.indexOf(":")<0&&"on"+X,(f=f[jQuery.expando]?f:new jQuery.Event(X,"object"==typeof f&&f)).isTrigger=L?2:3,f.namespace=K.join("."),f.rnamespace=f.namespace?new RegExp("(^|\\.)"+K.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,f.result=void 0,f.target||(f.target=S),p=null==p?[f]:jQuery.makeArray(p,[f]),G=jQuery.event.special[X]||{},L||!G.trigger||!1!==G.trigger.apply(S,p))){if(!L&&!G.noBubble&&!Z(S)){for(R=G.delegateType||X,et.test(R+X)||(E=E.parentNode);E;E=E.parentNode)q.push(E),O=E;O===(S.ownerDocument||Q)&&q.push(O.defaultView||O.parentWindow||M)}for(Y=0;(E=q[Y++])&&!f.isPropagationStopped();)V=E,f.type=Y>1?R:G.bindType||X,(W=(fe.get(E,"events")||Object.create(null))[f.type]&&fe.get(E,"handle"))&&W.apply(E,p),(W=B&&E[B])&&W.apply&&acceptData(E)&&(f.result=W.apply(E,p),!1===f.result&&f.preventDefault());return f.type=X,L||f.isDefaultPrevented()||G._default&&!1!==G._default.apply(q.pop(),p)||!acceptData(S)||B&&J(S[X])&&!Z(S)&&((O=S[B])&&(S[B]=null),jQuery.event.triggered=X,f.isPropagationStopped()&&V.addEventListener(X,stopPropagationCallback),S[X](),f.isPropagationStopped()&&V.removeEventListener(X,stopPropagationCallback),jQuery.event.triggered=void 0,O&&(S[B]=O)),f.result}},simulate:function(f,p,M){var S=jQuery.extend(new jQuery.Event,M,{type:f,isSimulated:!0});jQuery.event.trigger(S,null,p)}}),jQuery.fn.extend({trigger:function(f,p){return this.each((function(){jQuery.event.trigger(f,p,this)}))},triggerHandler:function(f,p){var M=this[0];if(M)return jQuery.event.trigger(f,p,M,!0)}}),K.focusin||jQuery.each({focus:"focusin",blur:"focusout"},(function(f,p){var handler=function(f){jQuery.event.simulate(p,f.target,jQuery.event.fix(f))};jQuery.event.special[p]={setup:function(){var M=this.ownerDocument||this.document||this,S=fe.access(M,p);S||M.addEventListener(f,handler,!0),fe.access(M,p,(S||0)+1)},teardown:function(){var M=this.ownerDocument||this.document||this,S=fe.access(M,p)-1;S?fe.access(M,p,S):(M.removeEventListener(f,handler,!0),fe.remove(M,p))}}}));var tt=M.location,nt={guid:Date.now()},it=/\?/;jQuery.parseXML=function(f){var p;if(!f||"string"!=typeof f)return null;try{p=(new M.DOMParser).parseFromString(f,"text/xml")}catch(f){p=void 0}return p&&!p.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+f),p};var rt=/\[\]$/,at=/\r?\n/g,ot=/^(?:submit|button|image|reset|file)$/i,st=/^(?:input|select|textarea|keygen)/i;function buildParams(f,p,M,S){var L;if(Array.isArray(p))jQuery.each(p,(function(p,L){M||rt.test(f)?S(f,L):buildParams(f+"["+("object"==typeof L&&null!=L?p:"")+"]",L,M,S)}));else if(M||"object"!==toType(p))S(f,p);else for(L in p)buildParams(f+"["+L+"]",p[L],M,S)}jQuery.param=function(f,p){var M,S=[],add=function(f,p){var M=J(p)?p():p;S[S.length]=encodeURIComponent(f)+"="+encodeURIComponent(null==M?"":M)};if(null==f)return"";if(Array.isArray(f)||f.jquery&&!jQuery.isPlainObject(f))jQuery.each(f,(function(){add(this.name,this.value)}));else for(M in f)buildParams(M,f[M],p,add);return S.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var f=jQuery.prop(this,"elements");return f?jQuery.makeArray(f):this})).filter((function(){var f=this.type;return this.name&&!jQuery(this).is(":disabled")&&st.test(this.nodeName)&&!ot.test(f)&&(this.checked||!Me.test(f))})).map((function(f,p){var M=jQuery(this).val();return null==M?null:Array.isArray(M)?jQuery.map(M,(function(f){return{name:p.name,value:f.replace(at,"\r\n")}})):{name:p.name,value:M.replace(at,"\r\n")}})).get()}});var lt=/%20/g,ct=/#.*$/,dt=/([?&])_=[^&]*/,ut=/^(.*?):[ \t]*([^\r\n]*)$/gm,ht=/^(?:GET|HEAD)$/,ft=/^\/\//,pt={},mt={},gt="*/".concat("*"),bt=Q.createElement("a");function addToPrefiltersOrTransports(f){return function(p,M){"string"!=typeof p&&(M=p,p="*");var S,L=0,Y=p.toLowerCase().match(le)||[];if(J(M))for(;S=Y[L++];)"+"===S[0]?(S=S.slice(1)||"*",(f[S]=f[S]||[]).unshift(M)):(f[S]=f[S]||[]).push(M)}}function inspectPrefiltersOrTransports(f,p,M,S){var L={},Y=f===mt;function inspect(E){var O;return L[E]=!0,jQuery.each(f[E]||[],(function(f,E){var R=E(p,M,S);return"string"!=typeof R||Y||L[R]?Y?!(O=R):void 0:(p.dataTypes.unshift(R),inspect(R),!1)})),O}return inspect(p.dataTypes[0])||!L["*"]&&inspect("*")}function ajaxExtend(f,p){var M,S,L=jQuery.ajaxSettings.flatOptions||{};for(M in p)void 0!==p[M]&&((L[M]?f:S||(S={}))[M]=p[M]);return S&&jQuery.extend(!0,f,S),f}bt.href=tt.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":gt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(f,p){return p?ajaxExtend(ajaxExtend(f,jQuery.ajaxSettings),p):ajaxExtend(jQuery.ajaxSettings,f)},ajaxPrefilter:addToPrefiltersOrTransports(pt),ajaxTransport:addToPrefiltersOrTransports(mt),ajax:function(f,p){"object"==typeof f&&(p=f,f=void 0),p=p||{};var S,L,Y,E,O,R,B,W,G,V,U=jQuery.ajaxSetup({},p),q=U.context||U,X=U.context&&(q.nodeType||q.jquery)?jQuery(q):jQuery.event,K=jQuery.Deferred(),J=jQuery.Callbacks("once memory"),Z=U.statusCode||{},ee={},te={},ne="canceled",ie={readyState:0,getResponseHeader:function(f){var p;if(B){if(!E)for(E={};p=ut.exec(Y);)E[p[1].toLowerCase()+" "]=(E[p[1].toLowerCase()+" "]||[]).concat(p[2]);p=E[f.toLowerCase()+" "]}return null==p?null:p.join(", ")},getAllResponseHeaders:function(){return B?Y:null},setRequestHeader:function(f,p){return null==B&&(f=te[f.toLowerCase()]=te[f.toLowerCase()]||f,ee[f]=p),this},overrideMimeType:function(f){return null==B&&(U.mimeType=f),this},statusCode:function(f){var p;if(f)if(B)ie.always(f[ie.status]);else for(p in f)Z[p]=[Z[p],f[p]];return this},abort:function(f){var p=f||ne;return S&&S.abort(p),done(0,p),this}};if(K.promise(ie),U.url=((f||U.url||tt.href)+"").replace(ft,tt.protocol+"//"),U.type=p.method||p.type||U.method||U.type,U.dataTypes=(U.dataType||"*").toLowerCase().match(le)||[""],null==U.crossDomain){R=Q.createElement("a");try{R.href=U.url,R.href=R.href,U.crossDomain=bt.protocol+"//"+bt.host!=R.protocol+"//"+R.host}catch(f){U.crossDomain=!0}}if(U.data&&U.processData&&"string"!=typeof U.data&&(U.data=jQuery.param(U.data,U.traditional)),inspectPrefiltersOrTransports(pt,U,p,ie),B)return ie;for(G in(W=jQuery.event&&U.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),U.type=U.type.toUpperCase(),U.hasContent=!ht.test(U.type),L=U.url.replace(ct,""),U.hasContent?U.data&&U.processData&&0===(U.contentType||"").indexOf("application/x-www-form-urlencoded")&&(U.data=U.data.replace(lt,"+")):(V=U.url.slice(L.length),U.data&&(U.processData||"string"==typeof U.data)&&(L+=(it.test(L)?"&":"?")+U.data,delete U.data),!1===U.cache&&(L=L.replace(dt,"$1"),V=(it.test(L)?"&":"?")+"_="+nt.guid+++V),U.url=L+V),U.ifModified&&(jQuery.lastModified[L]&&ie.setRequestHeader("If-Modified-Since",jQuery.lastModified[L]),jQuery.etag[L]&&ie.setRequestHeader("If-None-Match",jQuery.etag[L])),(U.data&&U.hasContent&&!1!==U.contentType||p.contentType)&&ie.setRequestHeader("Content-Type",U.contentType),ie.setRequestHeader("Accept",U.dataTypes[0]&&U.accepts[U.dataTypes[0]]?U.accepts[U.dataTypes[0]]+("*"!==U.dataTypes[0]?", "+gt+"; q=0.01":""):U.accepts["*"]),U.headers)ie.setRequestHeader(G,U.headers[G]);if(U.beforeSend&&(!1===U.beforeSend.call(q,ie,U)||B))return ie.abort();if(ne="abort",J.add(U.complete),ie.done(U.success),ie.fail(U.error),S=inspectPrefiltersOrTransports(mt,U,p,ie)){if(ie.readyState=1,W&&X.trigger("ajaxSend",[ie,U]),B)return ie;U.async&&U.timeout>0&&(O=M.setTimeout((function(){ie.abort("timeout")}),U.timeout));try{B=!1,S.send(ee,done)}catch(f){if(B)throw f;done(-1,f)}}else done(-1,"No Transport");function done(f,p,E,R){var G,V,Q,ee,te,ne=p;B||(B=!0,O&&M.clearTimeout(O),S=void 0,Y=R||"",ie.readyState=f>0?4:0,G=f>=200&&f<300||304===f,E&&(ee=function ajaxHandleResponses(f,p,M){for(var S,L,Y,E,O=f.contents,R=f.dataTypes;"*"===R[0];)R.shift(),void 0===S&&(S=f.mimeType||p.getResponseHeader("Content-Type"));if(S)for(L in O)if(O[L]&&O[L].test(S)){R.unshift(L);break}if(R[0]in M)Y=R[0];else{for(L in M){if(!R[0]||f.converters[L+" "+R[0]]){Y=L;break}E||(E=L)}Y=Y||E}if(Y)return Y!==R[0]&&R.unshift(Y),M[Y]}(U,ie,E)),!G&&jQuery.inArray("script",U.dataTypes)>-1&&(U.converters["text script"]=function(){}),ee=function ajaxConvert(f,p,M,S){var L,Y,E,O,R,B={},W=f.dataTypes.slice();if(W[1])for(E in f.converters)B[E.toLowerCase()]=f.converters[E];for(Y=W.shift();Y;)if(f.responseFields[Y]&&(M[f.responseFields[Y]]=p),!R&&S&&f.dataFilter&&(p=f.dataFilter(p,f.dataType)),R=Y,Y=W.shift())if("*"===Y)Y=R;else if("*"!==R&&R!==Y){if(!(E=B[R+" "+Y]||B["* "+Y]))for(L in B)if((O=L.split(" "))[1]===Y&&(E=B[R+" "+O[0]]||B["* "+O[0]])){!0===E?E=B[L]:!0!==B[L]&&(Y=O[0],W.unshift(O[1]));break}if(!0!==E)if(E&&f.throws)p=E(p);else try{p=E(p)}catch(f){return{state:"parsererror",error:E?f:"No conversion from "+R+" to "+Y}}}return{state:"success",data:p}}(U,ee,ie,G),G?(U.ifModified&&((te=ie.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[L]=te),(te=ie.getResponseHeader("etag"))&&(jQuery.etag[L]=te)),204===f||"HEAD"===U.type?ne="nocontent":304===f?ne="notmodified":(ne=ee.state,V=ee.data,G=!(Q=ee.error))):(Q=ne,!f&&ne||(ne="error",f<0&&(f=0))),ie.status=f,ie.statusText=(p||ne)+"",G?K.resolveWith(q,[V,ne,ie]):K.rejectWith(q,[ie,ne,Q]),ie.statusCode(Z),Z=void 0,W&&X.trigger(G?"ajaxSuccess":"ajaxError",[ie,U,G?V:Q]),J.fireWith(q,[ie,ne]),W&&(X.trigger("ajaxComplete",[ie,U]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return ie},getJSON:function(f,p,M){return jQuery.get(f,p,M,"json")},getScript:function(f,p){return jQuery.get(f,void 0,p,"script")}}),jQuery.each(["get","post"],(function(f,p){jQuery[p]=function(f,M,S,L){return J(M)&&(L=L||S,S=M,M=void 0),jQuery.ajax(jQuery.extend({url:f,type:p,dataType:L,data:M,success:S},jQuery.isPlainObject(f)&&f))}})),jQuery.ajaxPrefilter((function(f){var p;for(p in f.headers)"content-type"===p.toLowerCase()&&(f.contentType=f.headers[p]||"")})),jQuery._evalUrl=function(f,p,M){return jQuery.ajax({url:f,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(f){jQuery.globalEval(f,p,M)}})},jQuery.fn.extend({wrapAll:function(f){var p;return this[0]&&(J(f)&&(f=f.call(this[0])),p=jQuery(f,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&p.insertBefore(this[0]),p.map((function(){for(var f=this;f.firstElementChild;)f=f.firstElementChild;return f})).append(this)),this},wrapInner:function(f){return J(f)?this.each((function(p){jQuery(this).wrapInner(f.call(this,p))})):this.each((function(){var p=jQuery(this),M=p.contents();M.length?M.wrapAll(f):p.append(f)}))},wrap:function(f){var p=J(f);return this.each((function(M){jQuery(this).wrapAll(p?f.call(this,M):f)}))},unwrap:function(f){return this.parent(f).not("body").each((function(){jQuery(this).replaceWith(this.childNodes)})),this}}),jQuery.expr.pseudos.hidden=function(f){return!jQuery.expr.pseudos.visible(f)},jQuery.expr.pseudos.visible=function(f){return!!(f.offsetWidth||f.offsetHeight||f.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new M.XMLHttpRequest}catch(f){}};var vt={0:200,1223:204},_t=jQuery.ajaxSettings.xhr();K.cors=!!_t&&"withCredentials"in _t,K.ajax=_t=!!_t,jQuery.ajaxTransport((function(f){var p,S;if(K.cors||_t&&!f.crossDomain)return{send:function(L,Y){var E,O=f.xhr();if(O.open(f.type,f.url,f.async,f.username,f.password),f.xhrFields)for(E in f.xhrFields)O[E]=f.xhrFields[E];for(E in f.mimeType&&O.overrideMimeType&&O.overrideMimeType(f.mimeType),f.crossDomain||L["X-Requested-With"]||(L["X-Requested-With"]="XMLHttpRequest"),L)O.setRequestHeader(E,L[E]);p=function(f){return function(){p&&(p=S=O.onload=O.onerror=O.onabort=O.ontimeout=O.onreadystatechange=null,"abort"===f?O.abort():"error"===f?"number"!=typeof O.status?Y(0,"error"):Y(O.status,O.statusText):Y(vt[O.status]||O.status,O.statusText,"text"!==(O.responseType||"text")||"string"!=typeof O.responseText?{binary:O.response}:{text:O.responseText},O.getAllResponseHeaders()))}},O.onload=p(),S=O.onerror=O.ontimeout=p("error"),void 0!==O.onabort?O.onabort=S:O.onreadystatechange=function(){4===O.readyState&&M.setTimeout((function(){p&&S()}))},p=p("abort");try{O.send(f.hasContent&&f.data||null)}catch(f){if(p)throw f}},abort:function(){p&&p()}}})),jQuery.ajaxPrefilter((function(f){f.crossDomain&&(f.contents.script=!1)})),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(f){return jQuery.globalEval(f),f}}}),jQuery.ajaxPrefilter("script",(function(f){void 0===f.cache&&(f.cache=!1),f.crossDomain&&(f.type="GET")})),jQuery.ajaxTransport("script",(function(f){var p,M;if(f.crossDomain||f.scriptAttrs)return{send:function(S,L){p=jQuery(" + + diff --git a/index2.html b/index2.html index 349671fa..d66191c0 100644 --- a/index2.html +++ b/index2.html @@ -50,7 +50,8 @@ Dashticz - + + diff --git a/js/blocks.js b/js/blocks.js index c05e9c5b..2af02416 100755 --- a/js/blocks.js +++ b/js/blocks.js @@ -1,8 +1,7 @@ /* eslint-disable no-debugger */ -/*global getBlockTypesBlock, language, _TEMP_SYMBOL, settings, getFullScreenIcon, FlipClock, loadWeatherFull, loadWeather*/ -/*global getSpotify, getCoin, loadChromecast, loadSonarr */ -/*global Dashticz, DT_function, Domoticz, getLog, addCalendar */ -/*global getRandomInt, moment, number_format */ +/*global getBlockTypesBlock, language, _TEMP_SYMBOL, settings*/ +/*global Dashticz, DT_function, Domoticz, Debug */ +/*global moment, number_format */ /*from bundle.js*/ /*global ion*/ /*from main.js*/ @@ -19,16 +18,22 @@ /*global google*/ /*from config.js (or main.js)*/ /*global blocks*/ -/*from components/graph.js*/ -/*global showPopupGraph*/ /* Exports: */ var alldevices = 'initial value'; var oldstates = []; var onOffstates = []; -var mountedBlocks = {}; //object to store all mounted blocks +/** + * Build all the blocks in a column. + * @param {array} cols - Array containing all block definitions + * @param {string | number} c - Column id + * @param {string} screendiv - Screen div must contain row. Blocks will be mounted into + * @param {boolean} standby - true if building standby screen + * + * Build all the blocks in a column + */ // eslint-disable-next-line no-unused-vars function getBlock(cols, c, screendiv, standby) { // if (c==='bar') debugger; @@ -54,48 +59,64 @@ function getBlock(cols, c, screendiv, standby) { '">' ); } - for (var b in cols['blocks']) { - var myblockselector = Dashticz.mountNewContainer(columndiv); - if (!Dashticz.mount(myblockselector, cols['blocks'][b])) - switch (typeof cols['blocks'][b]) { - case 'object': - handleObjectBlock(cols['blocks'][b], myblockselector, c); - continue; - - case 'string': - handleStringBlock(cols['blocks'][b], myblockselector, c); - continue; - - default: - //then it's an integer, meaning it's a domoticz device id - var block = {}; - block.idx = cols['blocks'][b]; - $.extend(block, blocks[block.idx]); - block.key = block.idx; - var html = - '
'; - mountBlock(myblockselector, block, html, false); - addDeviceUpdateHandler(block); - break; - } - } + cols['blocks'].forEach(function (b, i) { + if(b) + addBlock2Column(columndiv, c, b); + else { + Debug.log(Debug.ERROR, 'Block number '+i+' in column ' + c + ' is undefined.'); + } + }); + } +} +/**Adds a block to a column + * @param {string} columndiv - div to add block to + * @param {string} c - Column id + * @param {object | string | number} b - string, as key for block object, object or number + * + * If b is a number then it represents a device id. + */ +var previousblock=0; + +function addBlock2Column(columndiv, c, b) { + if(typeof b=== 'undefined') { + console.log('Block undefined after block ',previousblock); + return; + } + previousblock=b; + var myblockselector = Dashticz.mountNewContainer(columndiv); + var newBlock = b; + if (typeof b !== 'object') newBlock = convertBlock(b, c); + if (c === 'popup') newBlock.isPopup = true; + if (newBlock.blocks) { + newBlock.blocks.forEach(function (aBlock) { + addBlock2Column(myblockselector, '', aBlock); + }); + return; + } + if (Array.isArray(newBlock)) { + newBlock.forEach(function (aBlock) { + addBlock2Column(myblockselector, '', aBlock); + }); + return; } + + if (!Dashticz.mount(myblockselector, newBlock)) + Dashticz.mountDefaultBlock(myblockselector, newBlock); } -function mountBlock(mountPoint, block, html, append) { - block.$mountPoint = $(mountPoint); - if (typeof html !== 'undefined') { - if (append) { - block.$mountPoint.append(html); - } else block.$mountPoint.html(html); +function convertBlock(blocktype, c) { + var block = {}; + block.type = blocktype; + $.extend(block, blocks[blocktype]); + block.c = c; //c can be 'bar'. Used for sunriseholder + block.key = block.key || blocktype; + + //Check for Domoticz device block + if (isDomoticzDevice(block.type)) { + block.width = (blocks[block.type] && blocks[block.type].width) || 4; + block.idx = block.idx || block.type; } - block.mountPoint = mountPoint; - block.entry = block.mountPoint.slice(1); - mountedBlocks[block.entry] = block; + return block; } function getCustomFunction(functionname, block, afterupdate) { @@ -118,6 +139,7 @@ function getCustomFunction(functionname, block, afterupdate) { } } +// eslint-disable-next-line no-unused-vars function deviceUpdateHandler(block) { var selector = block.mountPoint; var idx = block.idx; @@ -179,16 +201,14 @@ function deviceUpdateHandler(block) { if (addHTML) { $div.html(html); getBlockClick(block); - } - else - $div = $selector.find('.mh'); //$div may not exist anymore. Find the new one. + } else $div = $selector.find('.mh'); //$div may not exist anymore. Find the new one. if (typeof $div.attr('onclick') !== 'undefined') { $div.addClass('hover'); } if ($div.hasClass('hover')) { - $div.on('touchstart', function () { + $div.off('touchstart').on('touchstart', function () { var $this = $(this); $this.addClass('hovered'); setTimeout(function () { @@ -204,532 +224,93 @@ function deviceUpdateHandler(block) { $div.removeClass(block.currentClass).addClass(block.addClass); block.currentClass = block.addClass; } + if (block.currentDeviceStatus != device.deviceStatus) { + $div.removeClass(block.currentDeviceStatus).addClass(device.deviceStatus); + block.currentDeviceStatus = device.deviceStatus; + } - if(device.HaveTimeout) $div.addClass('timeout') + if (device.HaveTimeout) $div.addClass('timeout'); else $div.removeClass('timeout'); + addBatteryLevel($div, block); } -function getBlockClass(block) { - var addClass = getIconStatusClass(block.device['Status']); - return addClass; +/*add the battery level indicator*/ +function addBatteryLevel($div, block) { + var device = block.device; + var $data = $div; //$div.find('.col-data'); + var batteryLevel = device.BatteryLevel; + if ( + typeof batteryLevel === 'undefined' || + batteryLevel > block.batteryThreshold + ) + return; + var container = $data.find('.battery-level'); + var html = + '
' + + batteryLevel + + '
'; + if (!container.length) { + $data.append(html); + } else container.replace(html); } -function addDeviceUpdateHandler(block) { - var deviceIdx = block.idx; - if (typeof block.idx === 'string') { - var idxSplit = block.idx.split('_'); - if (idxSplit.length == 2) { - var idx = parseInt(idxSplit[0]); - var subidx = parseInt(idxSplit[1]); - if (typeof idx === 'number' && typeof subidx === 'number') { - deviceIdx = idx; - block.subidx = subidx; - } - } - } - Domoticz.subscribe(deviceIdx, true, function (device) { - block.device = device; - deviceUpdateHandler(block); +function batteryLevelIcon(level) { + var icons = { + 'fas fa-battery-empty': 0, + 'fas fa-battery-quarter': 10, + 'fas fa-battery-half': 35, + 'fas fa-battery-three-quarters': 60, + 'fas fa-battery-full': 90, + }; + var myLevel = typeof level !== 'undefined' ? level : 255; + var myIcon = 'fas fa-battery-full'; + + Object.keys(icons).forEach(function (key) { + if (myLevel >= icons[key]) myIcon = key; }); - if (block.key) { - Dashticz.subscribeBlock(block.key, function (blockUpdate) { - $.extend(block, blockUpdate); - deviceUpdateHandler(block); - }); - } else { - console.log('key not defined for block ', block.idx); - } + return myIcon; } -function handleStringBlock(blocktype, columndiv, c) { - var block = {}; - block.type = blocktype; - $.extend(block, blocks[blocktype]); - block.c = c; //c can be 'bar'. Used for sunriseholder - block.key = block.key || blocktype; - mountBlock(columndiv, block, null, null); +function getBlockClass(block) { + var addClass = getIconStatusClass(block.device['Status']); + return addClass; +} - var defaultwidth = 12; - switch (block.type) { - case 'logo': - case 'settings': - defaultwidth = 2; - break; - case 'flipclock': - case 'miniclock': - defaultwidth = 8; - break; +/** Checks whether key indicates a Domoticz device + * + * 4 situations: + * + * '123': Normal Domoticz device id as string + * '123_1': subdevice 1 + * 's123': group or scene 123 + * 'v123': variable with idx 123 + * + * @param {string} key - Key identifier to check + */ +function isDomoticzDevice(key) { + if (typeof key === 'number') { + return key; } - - block.width = block.width || defaultwidth; - var width = block.width; - - switch (block.type) { - case 'logo': - $(columndiv).append( - '' - ); - return; - case 'settings': - var icons = ['settings', 'fullscreen']; - if (typeof settings['settings_icons'] !== 'undefined') { - icons = settings['settings_icons']; - } - var content = - '
'; - for (var i = 0; i < icons.length; i++) { - switch (icons[i]) { - case 'settings': - content += - ' '; - break; - - case 'fullscreen': - $.ajax({ - url: 'js/fullscreen.js', - async: false, - dataType: 'script', - }); - content += getFullScreenIcon(); - break; - } - } - content += '
'; - $(columndiv).append(content); - return; - case 'flipclock': - $( - '' - ).appendTo('head'); - $(columndiv).append( - '
' - ); - if (typeof FlipClock !== 'function') - $.ajax({ - url: 'vendor/flipclock/flipclock.min.js', - async: false, - datatype: 'script', - }); - FlipClock($('.flipclock'), { - clockFace: settings['shorttime'].match(/A/i) - ? 'TwelveHourClock' - : 'TwentyFourHourClock', - showSeconds: !settings['hide_seconds'], - }); - return; - case 'miniclock': - $(columndiv).append( - '
' + - '      ' + - '
' - ); - return; - case 'clock': - $(columndiv).append( - '
' + - '

' + - '
' - ); - return; - case 'responsiveclock': - $(columndiv).append( - '
' + - '

' + - '
' - ); - return; - case 'weather': - if (typeof loadWeatherFull !== 'function') { - $.ajax({ - url: 'js/weather.js', - async: false, - dataType: 'script', - }); - } - $(columndiv).append( - '
' - ); - if (settings['wu_api'] !== '' && settings['wu_city'] !== '') - loadWeatherFull( - settings['wu_city'], - settings['wu_country'], - $('.weatherfull') - ); - return; - case 'currentweather': - if (settings['wu_api'] !== '' && settings['wu_city'] !== '') { - if (typeof loadWeather !== 'function') { - $.ajax({ - url: 'js/weather.js', - async: false, - dataType: 'script', - }); - } - $(columndiv).append( - '
' + - '
' + - '

' + - '
' - ); - loadWeather(settings['wu_city'], settings['wu_country']); - } - return; - case 'currentweather_big': - if (settings['wu_api'] !== '' && settings['wu_city'] !== '') { - if (typeof loadWeather !== 'function') { - $.ajax({ - url: 'js/weather.js', - async: false, - dataType: 'script', - }); - } - $(columndiv).append( - '
' + - '
' + - '
' + - '
' - ); - - loadWeather(settings['wu_city'], settings['wu_country']); - } - return; - case 'weather_owm': - if (typeof loadWeatherFull !== 'function') { - $.ajax({ - url: 'js/weather_owm.js', - async: false, - dataType: 'script', - }); - } - $(columndiv).append( - '
' - ); - if (settings['owm_api'] !== '' && settings['owm_city'] !== '') - loadWeatherFull( - settings['owm_city'], - settings['owm_country'], - $('.weatherfull') - ); - return; - case 'currentweather_owm': - if (settings['owm_api'] !== '' && settings['owm_city'] !== '') { - if (typeof loadWeather !== 'function') { - $.ajax({ - url: 'js/weather_owm.js', - async: false, - dataType: 'script', - }); - } - - $(columndiv).append( - '
' + - '
' + - '

' + - '
' - ); - loadWeather(settings['owm_city'], settings['owm_country']); - } - return; - case 'currentweather_big_owm': - if (settings['owm_api'] !== '' && settings['owm_city'] !== '') { - if (typeof loadWeather !== 'function') { - $.ajax({ - url: 'js/weather_owm.js', - async: false, - dataType: 'script', - }); - } - $(columndiv).append( - '
' + - '
' + - '
' + - '
' - ); - - loadWeather(settings['owm_city'], settings['owm_country']); - } - return; - case 'spotify': - if (typeof getSpotify !== 'function') - $.ajax({ - url: 'js/spotify.js', - async: false, - dataType: 'script', - }); - getSpotify(columndiv); - return; - case 'trafficmap': - $(columndiv).append( - '
' - ); - return; - case 'log': - if (typeof getLog !== 'function') - $.ajax({ - url: 'js/log.js', - async: false, - dataType: 'script', - }); - getLog(columndiv); - return; - /* - case 'stationclock': - appendStationClock(columndiv, block, width); - return; - */ - case 'sunrise': - var classes = - 'block_' + - block.type + - ' col-xs-' + - width + - ' transbg text-center sunriseholder'; - if (c === 'bar') { - classes = 'block_' + block.type + ' col-xs-2 text-center sunriseholder'; - } - $(columndiv).append( - '
' + - '' + - '
' - ); - return; - case 'horizon': - appendHorizon(columndiv); - return; - case 'icalendar': - var random = getRandomInt(1, 100000); - var html = - '
'; - html += '
'; - html += ''; - html += '
'; - html += - '
' + language.misc.loading + '
'; - html += '
'; - $(columndiv).append(html); - addCalendar($('.containsicalendar' + random), settings['calendarurl']); - return; - case 'chromecast': - $.ajax({ - url: 'js/chromecast.js', - async: false, - dataType: 'script', - }); - loadChromecast(columndiv); - return; - case 'sonarr': - if (typeof loadSonarr !== 'function') - $.ajax({ - url: 'js/sonarr.js', - async: false, - dataType: 'script', - }); - $(columndiv).append(loadSonarr()); - getBlockClick(block); - return; - case 'fullscreen': - $(columndiv).append( - '
' + - getFullScreenIcon() + - '
' - ); - return; - default: - /*4 situations: - '123': Normal Domoticz device id as string - '123_1': subdevice 1 - 's123': group or scene 123 - 'v123': variable with idx 123 - */ - html = - '
'; - block.$mountPoint.append(html); - if (block.idx) { - //also a Domoticz device - block.width = (blocks[block.type] && blocks[block.type].width) || 4; - addDeviceUpdateHandler(block); - return; - } - var idx = parseInt(block.type); - var isDomoticzDevice = !!idx; - if (block.type[0] === 's' || block.type[0] === 'v') { - //scene, group or variable - idx = parseInt(block.type.slice(1)); - if (idx) isDomoticzDevice = true; - } - if (isDomoticzDevice) { - block.width = (blocks[block.type] && blocks[block.type].width) || 4; - block.idx = block.type; - addDeviceUpdateHandler(block); - } else console.log('unknown string block ', block); + var idx = parseInt(key); + if (idx) { + return idx; } -} - -function handleObjectBlock(block, el) { - var random = getRandomInt(1, 100000); - var width = 12; - var $el = $(el); - mountBlock(el, block, null, null); - var key = block.key || block.entry; - if (block.width) width = block['width']; - if (block.latitude) { - $el.append(loadMaps(random, block)); - return; + if(typeof key === 'undefined') { +// debugger; + return false; } - if (block.empty) { - $el.append( - '
' - ); - } else if (block.currency) { - if (typeof getCoin !== 'function') - $.ajax({ - url: 'js/coins.js', - async: false, - dataType: 'script', - }); - var html = - '
'; - $el.append(html); - getCoin(block); - } else if (block.icalurl || block.calendars) { - var dataId = key; - var classes = 'transbg containsicalendar containsicalendar' + random; - appendTvOrCalendarBlock(dataId, classes, width, block, el); - if (typeof addCalendar !== 'function') - $.ajax({ - url: 'js/calendar.js', - async: false, - dataType: 'script', - }); - addCalendar($('.containsicalendar' + random), block); - } else if (block.idx) { - //+ '" data-block="' + block.key - block.key = block.key || '' + block.idx; - $el.append( - '
' - ); - if (typeof block.idx === 'number') { - addDeviceUpdateHandler(block); - return; - } - var idx = parseInt(block.idx); + if (key[0] === 's' || key[0] === 'v') { + //scene, group or variable + idx = parseInt(key.slice(1)); if (idx) { - addDeviceUpdateHandler(block); - return; + return idx; } - if (block.idx[0] === 's' || block.idx[0] === 'v') { - //scene, group or variable - idx = parseInt(block.slice(1)); - if (idx) { - addDeviceUpdateHandler(block); - return; - } - } - } else { - // Dashticz.mountSpecialBlock(columndiv, block, Dashticz.components["button"]); - Dashticz.mountDefaultBlock(el, block); - // $(columndiv).append(loadButton(index, block)); - } -} -/**/ -function appendTvOrCalendarBlock(dataId, classes, width, block, columndiv) { - var html = ''; - if (block.title) { - html += - '

' + - block['title'] + - '

'; - } - - html += - '
'; - if (block.icon) { - html += '
'; - html += ''; - html += '
'; - html += '
' + language.misc.loading + '
'; - } else if (block.image) { - html += '
'; - html += - ''; - html += '
'; - html += '
' + language.misc.loading + '
'; - } else { - html += '
' + language.misc.loading + '
'; } - - html += '
'; - $(columndiv).append(html); + return 0; } // eslint-disable-next-line no-unused-vars @@ -802,7 +383,7 @@ function getStatusBlock(block) { value = value.replace(unitArray[0], unitArray[1]); }*/ - getBlockClick(block, '.block_'+block.key); + getBlockClick(block, '.block_' + block.key); var attr = ''; if ( @@ -842,9 +423,9 @@ function getStatusBlock(block) { stateBlock += '
'; - if(block.textOn && getIconStatusClass(device.Status) === 'on') + if (block.textOn && getIconStatusClass(device.Status) === 'on') value = block.textOn; - if(block.textOff && getIconStatusClass(device.Status) === 'off') + if (block.textOff && getIconStatusClass(device.Status) === 'off') value = block.textOff; if (!titleAndValueSwitch(block)) { @@ -882,16 +463,31 @@ function getBlockClick(block, selector) { //var blockSel = '.block_'+ block.mountPoint.slice(1); //console.log('getBlockClick for ', block); // var $div=blockdef.$mountPoint.find('.block_'+blockdef.idx); - var $div = block.$mountPoint.find(typeof selector==='undefined' ? '.mh' : selector); + var $div = block.$mountPoint.find( + typeof selector === 'undefined' ? '.mh' : selector + ); + if (block.popup) { + if ($div.length > 0) { + $div + .addClass('hover') + .off('click') + .click(function () { + /* if (target === '_blank') window.open(block.link); + else if (target === 'iframe') addBlockClickFrame(block);*/ + DT_function.clickHandler({ block: block }); + }); + } + return; + } if (url) { if ($div.length > 0) { $div .addClass('hover') .off('click') .click(function () { -/* if (target === '_blank') window.open(block.link); + /* if (target === '_blank') window.open(block.link); else if (target === 'iframe') addBlockClickFrame(block);*/ - DT_function.clickHandler({block:block}) + DT_function.clickHandler({ block: block }); }); } } else if (graph === false) { @@ -914,8 +510,8 @@ function getBlockClick(block, selector) { device['SubType'] === 'Soil Moisture' || graph ) { - $div.addClass('hover').click(function () { - showPopupGraph(block); + $div.addClass('hover').off('click').click(function () { + DT_function.clickHandler({ block: block }); }); } } @@ -1045,30 +641,30 @@ function getBlockData(block, textOn, textOff) { var opendiv = '
'; var closediv = '
'; - if (block['hide_data']) { - return opendiv + '' + title + '' + closediv; - } + var data = ''; - var value = textOn; - var status = block.device.Status; - if ( - status == 'Off' || - status == 'Closed' || - status == 'Normal' || - status == 'Locked' || - status == 'No Motion' || - (status == '' && block.device['InternalState'] == 'Off') - ) { - value = textOff; - } + if (!block['hide_data']) { + var value = textOn; + var status = block.device.Status; + if ( + status == 'Off' || + status == 'Closed' || + status == 'Normal' || + status == 'Locked' || + status == 'No Motion' || + (status == '' && block.device['InternalState'] == 'Off') + ) { + value = textOff; + } - if (titleAndValueSwitch(block)) { - title = value; - value = getBlockTitle(block); - } + if (titleAndValueSwitch(block)) { + title = value; + value = getBlockTitle(block); + } - var data = '' + title + '
'; - data += '' + value + ''; + data = '
' + value + ''; + } + data = '' + title + '' + data; //Attach data part behind title if (showUpdateInformation(block)) { data += @@ -1153,80 +749,38 @@ function triggerStatus(block) { var idx = block.idx; var device = block.device; var value = device.LastUpdate; - var random = getRandomInt(1, 100000); getCustomFunction('getStatus', block, true); if (typeof onOffstates[idx] !== 'undefined' && value !== onOffstates[idx]) { - if ( getIconStatusClass( device['Status']) == 'on') { - if (block['playsoundOn']) { - playAudio(block['playsoundOn']); - } - if (block['speakOn']) { - speak(block['speakOn']); - } - if (block['messageOn']) { - infoDevicsSwitch(block['messageOn']); - } - if (block['gotoslideOn']) { - toSlide(block['gotoslideOn'] - 1); - disableStandby(); - } - if (block['openpopupOn']) { - $('.modal.openpopup,.modal-backdrop').remove(); - - $('body').append( - DT_function.createModalDialog( - 'openpopup', - 'popup_' + random, - block['openpopupOn'] - ) - ); - - $('#popup_' + random).modal('show'); - - if (typeof block['openpopupOn']['auto_close'] !== 'undefined') { - setTimeout(function () { - $('.modal.openpopup,.modal-backdrop').remove(); - }, parseFloat(block['openpopupOn']['auto_close']) * 1000); - } - } - } - if (getIconStatusClass( device['Status']) == 'off') { - if (block['playsoundOff']) { - playAudio(block['playsoundOff']); - } - if (block['speakOff']) { - speak(block['speakOff']); - } - if (block['messageOff']) { - infoDevicsSwitch(blocks['messageOff']); - } - if (block['gotoslideOff']) { - toSlide(block['gotoslideOff'] - 1); - disableStandby(); - } - if (block['openpopupOff']) { - $('.modal.openpopup,.modal-backdrop').remove(); - - $('body').append( - DT_function.createModalDialog( - 'openpopup', - 'popup_' + random, - block['openpopupOff'] - ) - ); + onOffHandling(block, getIconStatusClass(device['Status'])); + } + onOffstates[idx] = value; +} - $('#popup_' + random).modal('show'); +/* +function capitalizeFirstLetter(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} +*/ - if (block['openpopupOff']['auto_close']) { - setTimeout(function () { - $('.modal.openpopup,.modal-backdrop').remove(); - }, parseFloat(block['openpopupOff']['auto_close']) * 1000); - } - } - } +function onOffHandling(block, status) { + var _status = capitalizeFirstLetter(status); + if (block['playsound' + _status]) { + playAudio(block['playsound' + _status]); + } + if (block['speak' + _status]) { + speak(block['speak' + _status]); + } + if (block['message' + _status]) { + infoDevicsSwitch(block['message' + _status]); + } + if (block['gotoslide' + _status]) { + toSlide(block['gotoslide' + _status] - 1); + disableStandby(); + } + if (block['openpopup' + _status]) { + DT_function.clickHandler(block, block['openpopup' + _status]); } - onOffstates[idx] = value; } // eslint-disable-next-line no-unused-vars @@ -1250,31 +804,7 @@ function triggerChange(block) { } } - if (block['playsound']) { - playAudio(block['playsound']); - } - if (block['speak']) { - speak(block['speak']); - } - if (block['gotoslide']) { - toSlide(block['gotoslide'] - 1); - } - if (block['openpopup']) { - var random = getRandomInt(1, 100000); - $('.modal.openpopup,.modal-backdrop').remove(); - - $('body').append( - DT_function.createModalDialog('openpopup', 'popup_' + random, block['openpopup']) - ); - - $('#popup_' + random).modal('show'); - - if (typeof block['openpopup']['auto_close'] !== 'undefined') { - setTimeout(function () { - $('.modal.openpopup,.modal-backdrop').remove(); - }, parseFloat(block['openpopup']['auto_close']) * 1000); - } - } + onOffHandling(block, ''); } oldstates[idx] = value; } @@ -1909,6 +1439,11 @@ function createBlocks(blockParent, blockValues) { var block = {}; $.extend(block, blockValue); //create a block from the prototype $.extend(block, blockParent); + /* Fix icon/image setting*/ + if(blockParent.image || blockParent.icon) { + block.image = blockParent.image; + block.icon = blockParent.icon; + } // $.extend(block, blocks[blockValue.idx]); //I don't think we should do this: It will overwrite block settings of a custom block //Although for subdevices it would be nice to use corresponding block setting //so let's overwrite in case parent and blockvalue idx are different @@ -1928,7 +1463,7 @@ function createBlocks(blockParent, blockValues) { (block.width || 4) + '"/>'; $div.append(html); - block.mountPoint = blockParent.mountPoint;// +' .block_'+key; + block.mountPoint = blockParent.mountPoint; // +' .block_'+key; block.$mountPoint = $(block.mountPoint); // block.subidx = index; // block.blockdef=blocks[blockValue.idx]; //store a reference of the parent blockdef ? should be in parent already ... @@ -1964,8 +1499,6 @@ function createBlocks(blockParent, blockValues) { .find('.block_' + key) .html(html) .addClass(block.addClass); - - //todo: Do we have to store block in mountedBlocks? }); } @@ -2102,7 +1635,9 @@ function getTempHumBarBlock(block) { function loadMaps(b, map) { if (typeof map.link !== 'undefined') { map['url'] = map.link; - $('body').append(DT_function.createModalDialog('', 'trafficmap_frame_' + b, map)); + $('body').append( + DT_function.createModalDialog('', 'trafficmap_frame_' + b, map) + ); } var key = 'UNKNOWN'; @@ -2139,25 +1674,6 @@ function loadMaps(b, map) { return html; } -// eslint-disable-next-line no-unused-vars -function appendHorizon(columndiv) { - var html = '
'; - html += - '
'; - html += ''; - html += '
'; - html += - '
'; - html += ''; - html += '
'; - html += - '
'; - html += ''; - html += '
'; - html += '
'; - $(columndiv).append(html); -} - // eslint-disable-next-line no-unused-vars function getAllDevicesHandler(value) { // debugger; @@ -2223,7 +1739,6 @@ function playAudio(file) { ion.sound.play(filename); } - /*Todo: make map a regular block*/ // eslint-disable-next-line no-unused-vars function initMap() { @@ -2269,7 +1784,7 @@ function showMap(mapid, map) { function getSecurityBlock(block) { //todo: rewrite - + var device = block.device; if (block.protected || device.Protected) return getProtectedSecurityBlock(block); diff --git a/js/blocktypes.js b/js/blocktypes.js index fd67e3a7..b55e3f76 100644 --- a/js/blocktypes.js +++ b/js/blocktypes.js @@ -52,7 +52,7 @@ blocktypes.SubType['Text'] = { icon: 'fas fa-file', title: '', value: '', - graph: false + graph: false, }; blocktypes.SubType['Counter Incremental'] = { icon: 'fas fa-bolt', @@ -97,11 +97,17 @@ blocktypes.SubType['Current'] = { value: '', }; -blocktypes.SubType["X10 security motion"] = { +blocktypes.SubType['X10 security motion'] = { icon: 'fas fa-running', title: '', value: '', - graph: false + graph: false, +}; + +blocktypes.SubType['Managed Counter'] = { + icon: 'fas fa-plug', + title: '', + value: '', }; blocktypes.SensorUnit = {}; @@ -302,17 +308,17 @@ function getBlockTypesBlock(block) { typeof protoblock['iconOn'] !== 'undefined' || typeof protoblock['iconOff'] !== 'undefined' || typeof protoblock['imageOn'] !== 'undefined' || - typeof protoblock['imageOff'] !== 'undefined' + typeof protoblock['imageOff'] !== 'undefined' ) { //we have a single block - var newblock = {graph: true}; + var newblock = { graph: true }; newblock.idx = block.idx; $.extend(newblock, protoblock); blockValues.push(newblock); } else { var c = 1; for (var de in protoblock) { - var subblock = {graph: true}; + var subblock = { graph: true }; var protosubblock = protoblock[de]; $.extend(subblock, protosubblock); subblock.idx = block.device.idx; diff --git a/js/colorpicker.js b/js/colorpicker.js index 4fcf2ccb..0474bc82 100644 --- a/js/colorpicker.js +++ b/js/colorpicker.js @@ -47,13 +47,18 @@ function Colorpicker(options) { ev.stopPropagation });*/ - var color = this.block.device.Color? JSON.parse(this.block.device.Color): {r:255, g:255, b:255, m:3}; + var color = this.block.device.Color + ? JSON.parse(this.block.device.Color) + : { r: 255, g: 255, b: 255, m: 3 }; if (color) { var thergb; switch (color.m) { case 1: + thergb = '#FFFFFF'; + break; case 2: thergb = '#FFFFFF'; + if (typeof color.t !== 'undefined') thergb = temp2rgb(color.t, true); break; default: thergb = "'rgb(" + color.r + ',' + color.g + ',' + color.b + ")'"; @@ -62,6 +67,27 @@ function Colorpicker(options) { } } +function temp2rgb(temp, asString) { + /*** temp=255 means very warm, so very red + * + */ + var r = 255, + g = 255, + b = 255; + var adj; + if (temp < 128) { + adj = (128 - temp) / 2; + r = r - adj; + g = g - adj; + } + if (temp > 128) { + adj = (temp - 128) / 2; + g = g - adj; + b = b - adj; + } + return asString ? 'rgb(' + r + ',' + g + ',' + b + ')' : { r: r, g: g, b: b }; +} + Colorpicker.prototype.count = 0; Colorpicker.prototype.buttonDef = { @@ -80,13 +106,12 @@ var buttonList = { RGBWZ: ['RGB', 'W', 'WZ'], // RGBWWZ: ['RGB', 'WW', 'WWZ'], // RGBZ: ['RGB', 'WZ'], - WW:['WW'] + WW: ['WW'], }; Colorpicker.prototype.dimmerTypes = Object.keys(buttonList); Colorpicker.prototype.clickHandler = function (ev) { - this.mode = 1; var myButtons = {}; @@ -281,18 +306,14 @@ Colorpicker.prototype.clickHandler = function (ev) { self.installIROComp( { - color: { - r: currentTemp, - g: currentTemp, - b: currentTemp, - }, + color: temp2rgb(currentTemp), layoutDirection: 'horizontal', layout: [ { component: iro.ui.Slider, options: { sliderType: 'kelvin', // can also be 'saturation', 'value', 'alpha' or 'kelvin', - minTemperature: 4000, + minTemperature: 4500, maxTemperature: 8000, }, }, @@ -328,7 +349,7 @@ Colorpicker.prototype.clickHandler = function (ev) { self.setState(data.mode); var base = document.querySelector(self.container); var pos = base.getBoundingClientRect(); - var pop = document.querySelector('#' + self.id + ' .modal-content'); + var pop = document.querySelector('#' + self.id + ' .modal-container'); var virtualElement = { getBoundingClientRect: function () { return pos; @@ -507,10 +528,9 @@ Colorpicker.prototype.onChange = function onChange(name) { Colorpicker.prototype.setDevice = function setDevice() { var MAXTEMP = 8000; - var MINTEMP = 4000; + var MINTEMP = 4500; var TEMPSTEP = 255 / (MAXTEMP - MINTEMP); - var t = Math.round((MAXTEMP - this.comp['Temp'].color.kelvin) * TEMPSTEP); - + var t = Math.round((MAXTEMP - this.comp['Temp'].color.kelvin) * TEMPSTEP) - 1; this.changed = true; if (this.requesting) return; var idx = this.block.device.idx; @@ -536,6 +556,13 @@ Colorpicker.prototype.setDevice = function setDevice() { color.t = 0; } + if (this.block.mode === 1) {//Hue mode: ww and cw must me 0 in rgb mode + if (color.m === 3) { //rgb mode + color.ww=0; + color.cw=0; + } + } + var brightness = Math.round(this.comp['Master'].color.value); var req = diff --git a/js/components/basicclock.css b/js/components/basicclock.css new file mode 100644 index 00000000..c8dd01b8 --- /dev/null +++ b/js/components/basicclock.css @@ -0,0 +1,3 @@ +.basicclock .weekday, .basicclock .date { + font-size: 65% +} \ No newline at end of file diff --git a/js/components/basicclock.js b/js/components/basicclock.js new file mode 100644 index 00000000..285df06f --- /dev/null +++ b/js/components/basicclock.js @@ -0,0 +1,27 @@ +/* global Dashticz DT_function*/ + +var DT_basicclock = { + name: 'basicclock', + init: function () { + return DT_function.loadCSS('./js/components/basicclock.css'); + }, + canHandle: function (block) { + return block && block.type && block.type === 'basicclock'; + }, + defaultCfg: { + scale: 1, + width: 12, + containerClass: 'text-center' + }, + run: function (me) { + + var width = me.block.size || $(me.mountPoint + ' .dt_block').width(); + $(me.mountPoint + ' .dt_block').css('font-size', width / 6 * me.block.scale); + $(me.mountPoint + ' .dt_content').html( + '
' + ) + }, +}; + +Dashticz.register(DT_basicclock); +//# sourceURL=js/components/basicclock.js diff --git a/js/components/button.js b/js/components/button.js index e1c968d3..1de003d1 100644 --- a/js/components/button.js +++ b/js/components/button.js @@ -4,18 +4,19 @@ var DT_button = { name: 'button', canHandle: function (block) { - return block && (block.btnimage || block.slide); + return block && (block.btnimage || block.slide || block.log); }, defaultCfg: function (button) { var cfg = { containerClass: - (button && button.slide ? 'slide slide' + button.slide : '') + - (DT_button.buttonIsClickable(button) ? ' hover ' : ' '), + (button && button.slide ? 'slide slide' + button.slide : ''), forcerefreshiframe: 0, }; if (button.btnimage) { cfg.refresh = 60; } + if(typeof button.title==='undefined' && typeof button.icon==='undefined' && typeof button.image==='undefined' && typeof button.btnimage==='undefined') + button.title = button.key || button.type || 'Button'; return cfg; }, defaultContent: function (me) { @@ -40,13 +41,13 @@ var DT_button = { return html; }, run: function (me) { - var button = me.block; +/* var button = me.block; if (DT_button.buttonIsClickable(button)) $(me.mountPoint + ' .button').on( 'click', button, DT_button.buttonOnClick - ); + );*/ }, refresh: function (me) { DT_button.reloadImage(me); @@ -99,6 +100,7 @@ var DT_button = { }, button.refreshiframe * 1000); } }, + /* buttonOnClick: function ( m_event //button clickhandler. Assumption: button is clickable ) { @@ -125,14 +127,7 @@ var DT_button = { } else { DT_button.buttonLoadFrame(button); } - }, - buttonIsClickable: function (button) { - var clickable = - typeof button.url !== 'undefined' || - button.log == true || - typeof button.slide !== 'undefined'; - return clickable; - }, + },*/ reloadImage: function (me) { var src; if (typeof me.block.btnimage !== 'undefined') { diff --git a/js/components/calendar.js b/js/components/calendar.js index eb031c7e..f10c693f 100644 --- a/js/components/calendar.js +++ b/js/components/calendar.js @@ -1,18 +1,19 @@ -/* global Dashticz moment settings config language time objectlength ksort infoMessage isDefined setHeight functions*/ +/* global Dashticz moment settings language objectlength ksort infoMessage isDefined setHeight TemplateEngine */ var cal = []; var templateEngine = TemplateEngine(); var DT_calendar = { name: 'calendar', canHandle: function (block, key) { - return block && block.type === 'calendar'; + return block && (block.type === 'calendar' || block.icalurl); }, defaultCfg: { icon: 'fas fa-calendar-alt', containerExtra: function (block) { if (block && block.layout === 2) block.icon = ''; }, - method: 1 + emptytext: 'Geen afspraken.', + method: 1, }, run: function (me) { if (me.block.type === 'calendar') { @@ -99,51 +100,55 @@ function prepareCalendar(me, key) { */ function getCalendarData(key, calendars, isnew, ishol) { var events = []; - var counter = 1; + + var promises = []; $.each(calendars, function (name, calendar) { - url = makeUrl(key, calendar.ics); + var url = makeUrl(key, calendar.ics); - $.getJSON(url, function (data) { - for (var e in data) { - var ev = data[e]; - var enddate = ev.end; + promises.push( + $.getJSON(url, function (data) { + for (var e in data) { + var ev = data[e]; + var enddate = ev.end; - cal[key].adjustTZ = - ev.allDay === true && cal[key].adjustAllDayTZ - ? cal[key].adjustAllDayTZ - : cal[key].adjustTZ; + cal[key].adjustTZ = + ev.allDay === true && cal[key].adjustAllDayTZ + ? cal[key].adjustAllDayTZ + : cal[key].adjustTZ; - ev.start += cal[key].adjustTZ; - ev.end += cal[key].adjustTZ; - ev.name = name; - ev.color = calendar.color; + ev.start += cal[key].adjustTZ; + ev.end += cal[key].adjustTZ; + ev.name = name; + ev.color = calendar.color; - if ( - parseFloat(enddate) >= - moment().subtract(cal[key].history, 'days').format('X') - ) { - if (isDefined(events[ev.start]) !== 'undefined') - events[ev.start] = []; - events[ev.start].push(ev); + if ( + parseFloat(enddate) >= + moment().subtract(cal[key].history, 'days').format('X') + ) { + if (isDefined(events[ev.start]) !== 'undefined') + events[ev.start] = []; + events[ev.start].push(ev); + } } - } - - if (counter === cal[key].icalurls || ishol) { - cal[key].events = ksort(events); - - switch (Number(cal[key].layout)) { - case 2: - generateCalendar(key, isnew, ishol); - break; - default: - generateAgenda(cal[key].layout, key); + }).catch(function (err) { + if (err.status === 404) { + infoMessage('Calendar not found', calendar.ics); } - } - counter++; - }).catch(function () { - console.error('Error in response from calendar with icalurl ' + url); - }); + console.error('Error in response from calendar with icalurl ' + url); + }) + ); + }); + $.when.apply($, promises).then(function () { + cal[key].events = ksort(events); + + switch (Number(cal[key].layout)) { + case 2: + generateCalendar(key, isnew, ishol); + break; + default: + generateAgenda(cal[key].layout, key); + } }); } /** @@ -153,7 +158,7 @@ function getCalendarData(key, calendars, isnew, ishol) { * @param {string} key The block name of the calendar. */ function generateAgenda(opt, key) { - createModalIframe(key); + // createModalIframe(key); templateEngine.load('calendar_' + opt).then(function (template) { var data = { @@ -163,6 +168,7 @@ function generateAgenda(opt, key) { tf: cal[key].timeFormat, startonly: cal[key].startonly, entire: language.weekdays.entire_day, + emptyText: cal[key].block.emptytext, }; $(cal[key].mountPoint + ' .dt_state') @@ -177,6 +183,10 @@ function generateAgenda(opt, key) { p = dt; }); } + + if (Object.keys(cal[key].events).length) + $(cal[key].mountPoint + ' .dt_block').removeClass('agenda-empty'); + else $(cal[key].mountPoint + ' .dt_block').addClass('agenda-empty'); }); } @@ -226,7 +236,6 @@ function generateCalendar(key, isnew, ishol) { var m1 = moment.unix($(obj).data('id') / 1000); var m2 = moment.unix(item.start); var m3 = moment.unix(item.end); - var t = ''; if (ishol) item.allDay = true; @@ -344,7 +353,8 @@ function makeUrl(key, url) { url .replace(/webcal?\:\/\//i, 'https://') .replace('https://cors-anywhere.herokuapp.com/', '') + - '&method=' + cal[key].block.method + '&method=' + + cal[key].block.method ); } diff --git a/js/components/camera.js b/js/components/camera.js index f2cddaae..ffe18f07 100644 --- a/js/components/camera.js +++ b/js/components/camera.js @@ -1,348 +1,348 @@ /* global Dashticz DT_function isDefined templateEngine*/ // eslint-disable-next-line no-unused-vars var DT_camera = { - name: 'camera', - canHandle: function(block) { - return block && block.type === 'camera'; - }, + name: 'camera', + canHandle: function (block) { + return block && block.type === 'camera'; + }, - /** - * Core camera variables. - */ - init: function() { - this.devices = []; - this.traytimeout = 0; - this.trayimgtimer = 0; - this.trayopentimer = 0; - this.streamtimer = 0; - this.thumbtimer = 0; - this.trayopen = false; - this.carousel = false; - }, + /** + * Core camera variables. + */ + init: function () { + this.devices = []; + this.traytimeout = 0; + this.trayimgtimer = 0; + this.trayopentimer = 0; + this.streamtimer = 0; + this.thumbtimer = 0; + this.trayopen = false; + this.carousel = false; + }, - /** - * Default block config for camera functions. - */ - defaultCfg: { - title: '', - forcerefresh: 1, - traytimeout: 5, - refresh: 1, - slidedelay: 3, - cameras: [], - width: 6, - }, + /** + * Default block config for camera functions. + */ + defaultCfg: { + title: '', + forcerefresh: 1, + traytimeout: 5, + refresh: 1, + slidedelay: 3, + cameras: [], + width: 6, + }, - /** - * Creates all camera thumb blocks and initialises listeners. - * @param {object} me Core component object. - */ - run: function(me) { - /* The camera block contains multiple cameras */ - if (me.block.cameras.length > 0) { - /* Create new mountpoints for each of the cameras */ - var s = $(me.mountPoint).closest('.screen').data('screenindex'); - var c = $(me.mountPoint).closest('.col-xs-12').data('colindex'); - var columndiv = 'div.screen' + s + ' .row .col' + c; - $(me.mountPoint).remove(); + /** + * Creates all camera thumb blocks and initialises listeners. + * @param {object} me Core component object. + */ + run: function (me) { + /* The camera block contains multiple cameras */ + if (me.block.cameras.length > 0) { + /* Create new mountpoints for each of the cameras */ + var s = me.$mountPoint.closest('.screen').data('screenindex'); + var c = me.$mountPoint.closest('.col-xs-12').data('colindex'); + var columndiv = 'div.screen' + s + ' .row .col' + c; + me.$mountPoint.remove(); - $.each(me.block.cameras, function(i) { - var mountpoint = Dashticz.mountNewContainer(columndiv); - var cam = me.block.cameras[i]; - cam.key = me.key.slice(0, -1) + i; - cam.mjpeg = isDefined(cam.videoUrl); - cam.videoUrl = cam.mjpeg ? cam.videoUrl : cam.imageUrl; - cam.refresh = me.block.refresh * 1000; - cam.mountpoint = mountpoint; - cam.block = me.block; - cam.multi = true; - cam.index = i; - DT_camera.devices.push(cam); - }); + $.each(me.block.cameras, function (i) { + var mountpoint = Dashticz.mountNewContainer(columndiv); + var cam = me.block.cameras[i]; + cam.key = me.key.slice(0, -1) + i; + cam.mjpeg = isDefined(cam.videoUrl); + cam.videoUrl = cam.mjpeg ? cam.videoUrl : cam.imageUrl; + cam.refresh = me.block.refresh * 1000; + cam.mountpoint = mountpoint; + cam.block = me.block; + cam.multi = true; + cam.index = i; + DT_camera.devices.push(cam); + }); - /* The camera block has only one camera */ - } else { - me.mjpeg = isDefined(me.block.videoUrl); - me.block.videoUrl = me.mjpeg ? me.block.videoUrl : me.block.imageUrl; - DT_camera.devices.push({ - key: me.key, - imageUrl: me.block.imageUrl, - videoUrl: me.mjpeg ? me.block.videoUrl : me.block.imageUrl, - mjpeg: me.mjpeg, - refresh: me.block.refresh * 1000, - title: me.block.title, - mountpoint: me.mountPoint, - block: me.block, - multi: false, - index: 0, - }); - } + /* The camera block has only one camera */ + } else { + me.mjpeg = isDefined(me.block.videoUrl); + me.block.videoUrl = me.mjpeg ? me.block.videoUrl : me.block.imageUrl; + DT_camera.devices.push({ + key: me.key, + imageUrl: me.block.imageUrl, + videoUrl: me.mjpeg ? me.block.videoUrl : me.block.imageUrl, + mjpeg: me.mjpeg, + refresh: me.block.refresh * 1000, + title: me.block.title, + mountpoint: me.mountPoint, + block: me.block, + multi: false, + index: 0, + }); + } - /* Create the thumbs for each camera and add to mountpoint */ - $.each(DT_camera.devices, function(i) { - var cam = DT_camera.devices[i]; - templateEngine.load('camera_image').then(function(template) { - var data = { - div: cam.multi, - index: cam.index, - mount: cam.mountpoint.slice(1), - image: DT_function.checkForceRefresh( - cam.imageUrl, - cam.block.forcerefresh - ), - height: cam.block && cam.block.height ? cam.block.height : 300, - mjpeg: cam.mjpeg, - id: cam.key, - }; - var div = cam.multi ? '' : ' > div'; - $(cam.mountpoint + div).html(template(data)); - $(cam.mountpoint + ' div') - .removeClass('col-xs-6') - .addClass('col-xs-' + cam.block.width); - }); + /* Create the thumbs for each camera and add to mountpoint */ + $.each(DT_camera.devices, function (i) { + var cam = DT_camera.devices[i]; + templateEngine.load('camera_image').then(function (template) { + var data = { + div: cam.multi, + index: cam.index, + mount: cam.mountpoint.slice(1), + image: DT_function.checkForceRefresh( + cam.imageUrl, + cam.block.forcerefresh + ), + height: cam.block && cam.block.height ? cam.block.height : 300, + mjpeg: cam.mjpeg, + id: cam.key, + }; + var div = cam.multi ? '' : ' > div'; + $(cam.mountpoint + div).html(template(data)); + $(cam.mountpoint + ' div') + .removeClass('col-xs-6') + .addClass('col-xs-' + cam.block.width); + }); - DT_camera.setTrayTimeout(cam); - DT_camera.reloadThumb(cam); - DT_camera.listen(cam); - }); - }, + DT_camera.setTrayTimeout(cam); + DT_camera.reloadThumb(cam); + DT_camera.listen(cam); + }); + }, - /** - * Reloads the thumb image url with new datetime. - * Note: all thumbs disable when fullscreen is enabled. - * @param {object} me Core component object. - */ - reloadThumb: function(me) { - DT_camera.thumbtimer = setInterval(function() { - if (!DT_camera.carousel) { - $('.' + me.mountpoint.slice(1) + '_camImage').attr( - 'src', - DT_function.checkForceRefresh(me.imageUrl, me.block.forcerefresh) - ); - } - }, me.refresh); - return; - }, - - /** - * Gets current cam index and passes to stream manager. - * @param {object} me Core component object. - * @param {boolean} right The direction of the carousel. - */ - slide: function(me, right) { - var camindex = $('.carousel-inner .item.active').index(); - DT_camera.streamManager(me, camindex, right); - }, + /** + * Reloads the thumb image url with new datetime. + * Note: all thumbs disable when fullscreen is enabled. + * @param {object} me Core component object. + */ + reloadThumb: function (me) { + DT_camera.thumbtimer = setInterval(function () { + if (!DT_camera.carousel) { + $('.' + me.mountpoint.slice(1) + '_camImage').attr( + 'src', + DT_function.checkForceRefresh(me.imageUrl, me.block.forcerefresh) + ); + } + }, me.refresh); + return; + }, - /** - * Manages active streams when using the carousel left/right. - * MJPEG streams are replaced by images as they move out of view. - * Images are replaced by MJPEG (where applicable) as they move into view. - * @param {object} me Core component object. - * @param {number} camindex The index of the current camera. - * @param {boolean} right The direction of the carousel. - */ - streamManager: function(me, camindex, right) { - var mjpeg = $('#cam' + camindex).data('mjpeg'); - var direction = right ? 1 : -1; - var limit = right ? 0 : DT_camera.devices.length - 1; - var newindex = - DT_camera.devices[camindex + direction] !== undefined ? - camindex + direction : - limit; + /** + * Gets current cam index and passes to stream manager. + * @param {object} me Core component object. + * @param {boolean} right The direction of the carousel. + */ + slide: function (me, right) { + var camindex = $('.carousel-inner .item.active').index(); + DT_camera.streamManager(me, camindex, right); + }, - var curr = DT_camera.devices[camindex]; - DT_camera.setStream(me, newindex, mjpeg); - $('#cam' + camindex).attr('src', curr.imageUrl); - return; - }, + /** + * Manages active streams when using the carousel left/right. + * MJPEG streams are replaced by images as they move out of view. + * Images are replaced by MJPEG (where applicable) as they move into view. + * @param {object} me Core component object. + * @param {number} camindex The index of the current camera. + * @param {boolean} right The direction of the carousel. + */ + streamManager: function (me, camindex, right) { + var mjpeg = $('#cam' + camindex).data('mjpeg'); + var direction = right ? 1 : -1; + var limit = right ? 0 : DT_camera.devices.length - 1; + var newindex = + DT_camera.devices[camindex + direction] !== undefined + ? camindex + direction + : limit; - /** - * Sets the active stream according to its stream type; mjpeg or image. - * Image streams are refreshed with the setinterval timer. - * @param {object} me Core component object. - * @param {number} index The index of the camera to activate. - * @param {boolean} mjpeg Whether it's an mjpeg or image stream. - */ - setStream: function(me, index, mjpeg) { - var $cam = $('body').find('#cam' + index); - if (mjpeg) { - $cam.attr('src', DT_camera.devices[index].videoUrl); - } else { - clearInterval(DT_camera.streamtimer); - DT_camera.streamtimer = setInterval(function() { - $cam.attr( - 'src', - DT_function.checkForceRefresh( - DT_camera.devices[index].imageUrl, - me.block.forcerefresh - ) - ); - }, DT_camera.devices[index].refresh); - } - return; - }, + var curr = DT_camera.devices[camindex]; + DT_camera.setStream(me, newindex, mjpeg); + $('#cam' + camindex).attr('src', curr.imageUrl); + return; + }, - /** - * Applies the user defined timeout for the tray. - * E.g. traytimeout: 10, keeps tray open for 10 seconds. - * Default is 5 seconds. - */ - setTrayTimeout: function(me) { - if (me.block.traytimeout > DT_camera.traytimeout) { - DT_camera.traytimeout = me.block.traytimeout; - } - return; - }, + /** + * Sets the active stream according to its stream type; mjpeg or image. + * Image streams are refreshed with the setinterval timer. + * @param {object} me Core component object. + * @param {number} index The index of the camera to activate. + * @param {boolean} mjpeg Whether it's an mjpeg or image stream. + */ + setStream: function (me, index, mjpeg) { + var $cam = $('body').find('#cam' + index); + if (mjpeg) { + $cam.attr('src', DT_camera.devices[index].videoUrl); + } else { + clearInterval(DT_camera.streamtimer); + DT_camera.streamtimer = setInterval(function () { + $cam.attr( + 'src', + DT_function.checkForceRefresh( + DT_camera.devices[index].imageUrl, + me.block.forcerefresh + ) + ); + }, DT_camera.devices[index].refresh); + } + return; + }, - /** - * Opens or closes the tray. - */ - trayToggle: function() { - var $tray = $('#camCarousel > div.cam-tray'); - if ($tray.hasClass('open')) { - $tray.removeClass('open').addClass('shut'); - clearTimeout(DT_camera.trayopentimer); - DT_camera.trayopen = false; - } else { - $tray.removeClass('shut').addClass('open'); - DT_camera.trayopen = true; - DT_camera.trayTimeout(); - } - return; - }, + /** + * Applies the user defined timeout for the tray. + * E.g. traytimeout: 10, keeps tray open for 10 seconds. + * Default is 5 seconds. + */ + setTrayTimeout: function (me) { + if (me.block.traytimeout > DT_camera.traytimeout) { + DT_camera.traytimeout = me.block.traytimeout; + } + return; + }, - /** - * Closes tray after 5 seconds or user specified duration. - * Block parameter: traytimeout (in seconds) - */ - trayTimeout: function() { - DT_camera.trayopentimer = setInterval(function() { - DT_camera.trayToggle(); - }, DT_camera.traytimeout * 1000); - //return; - }, + /** + * Opens or closes the tray. + */ + trayToggle: function () { + var $tray = $('#camCarousel > div.cam-tray'); + if ($tray.hasClass('open')) { + $tray.removeClass('open').addClass('shut'); + clearTimeout(DT_camera.trayopentimer); + DT_camera.trayopen = false; + } else { + $tray.removeClass('shut').addClass('open'); + DT_camera.trayopen = true; + DT_camera.trayTimeout(); + } + return; + }, - /** - * Refreshes images at user specified interval when tray is open. - * @param {object} me Core component object. - */ - trayRefresh: function(me) { - DT_camera.trayimgtimer = setInterval(function() { - if ($('.cam-tray').hasClass('open')) { - $('.cam-tray-item .cam-tray-img').each(function(index) { - if (isDefined(DT_camera.devices[index])) { - var refreshUrl = DT_function.checkForceRefresh( - DT_camera.devices[index].imageUrl, - me.block.forcerefresh - ); - $( - '.cam-tray.open > .cam-tray-item:nth-child(' + - (index + 1) + - ') > img' - ).attr('src', refreshUrl); - } - }); - } - }, me.refresh); - return; - }, - /** - * Listens for user interaction; thumbs, tray and carousel. - * @param {object} me Core component object. - */ - listen: function(me) { - /* Listens when thumbs are clicked on Dashticz screen */ - $('body').on( - 'click', - '.' + me.mountpoint.slice(1) + '_camImage', - function() { - DT_camera.carousel = true; - var mjpeg = $(this).data('mjpeg'); - var key = $(this).data('id'); - var index = DT_camera.devices.findIndex(function(object) { - return object.key === key; - }); + /** + * Closes tray after 5 seconds or user specified duration. + * Block parameter: traytimeout (in seconds) + */ + trayTimeout: function () { + DT_camera.trayopentimer = setInterval(function () { + DT_camera.trayToggle(); + }, DT_camera.traytimeout * 1000); + //return; + }, - /* Camera carousel opened for the first time */ - if ($('#camCarousel').length === 0) { - templateEngine.load('camera_video').then(function(template) { - if ($('body #camCarousel').length === 0) { - $('body').append( - template({ - urls: DT_camera.devices, - slide: me.block.slidedelay * 1000, - }) - ); - var $cam = $('body').find('#cam' + index); - var $ind = $('body').find('#ind' + index); - $('#camCarousel').carousel(); - $cam.parent().addClass('active'); - $ind.addClass('active'); - DT_camera.setStream(me, index, mjpeg); - } - }); + /** + * Refreshes images at user specified interval when tray is open. + * @param {object} me Core component object. + */ + trayRefresh: function (me) { + DT_camera.trayimgtimer = setInterval(function () { + if ($('.cam-tray').hasClass('open')) { + $('.cam-tray-item .cam-tray-img').each(function (index) { + if (isDefined(DT_camera.devices[index])) { + var refreshUrl = DT_function.checkForceRefresh( + DT_camera.devices[index].imageUrl, + me.block.forcerefresh + ); + $( + '.cam-tray.open > .cam-tray-item:nth-child(' + + (index + 1) + + ') > img' + ).attr('src', refreshUrl); + } + }); + } + }, me.refresh); + return; + }, + /** + * Listens for user interaction; thumbs, tray and carousel. + * @param {object} me Core component object. + */ + listen: function (me) { + /* Listens when thumbs are clicked on Dashticz screen */ + $('body').on( + 'click', + '.' + me.mountpoint.slice(1) + '_camImage', + function () { + DT_camera.carousel = true; + var mjpeg = $(this).data('mjpeg'); + var key = $(this).data('id'); + var index = DT_camera.devices.findIndex(function (object) { + return object.key === key; + }); - /* Show existing Camera carousel */ - } else { - $('#camCarousel').show(); - $('#camCarousel').carousel('cycle'); - $('#camCarousel').carousel(index); - DT_camera.setStream(me, index, mjpeg); - } + /* Camera carousel opened for the first time */ + if ($('#camCarousel').length === 0) { + templateEngine.load('camera_video').then(function (template) { + if ($('body #camCarousel').length === 0) { + $('body').append( + template({ + urls: DT_camera.devices, + slide: me.block.slidedelay * 1000, + }) + ); + var $cam = $('body').find('#cam' + index); + var $ind = $('body').find('#ind' + index); + $('#camCarousel').carousel(); + $cam.parent().addClass('active'); + $ind.addClass('active'); + DT_camera.setStream(me, index, mjpeg); } - ); + }); - /* Listens when an image is selected in the tray */ - $('body').on('click', '.cam-container .cam-tray-img', function() { - clearTimeout(DT_camera.trayopentimer); - var mjpeg = $(this).data('mjpeg'); - var key = $(this).data('id'); - var index = DT_camera.devices.findIndex(function(object) { - return object.key === key; - }); - $('#camCarousel').carousel(index); - DT_camera.setStream(me, index, mjpeg); - DT_camera.trayTimeout(); - }); + /* Show existing Camera carousel */ + } else { + $('#camCarousel').show(); + $('#camCarousel').carousel('cycle'); + $('#camCarousel').carousel(index); + DT_camera.setStream(me, index, mjpeg); + } + } + ); - /* Listens when the handle of the tray is clicked */ - $('body').on('click', '#camCarousel > .handle', function() { - if (!DT_camera.trayopen) { - DT_camera.trayToggle(); - DT_camera.trayRefresh(me); - } - }); + /* Listens when an image is selected in the tray */ + $('body').on('click', '.cam-container .cam-tray-img', function () { + clearTimeout(DT_camera.trayopentimer); + var mjpeg = $(this).data('mjpeg'); + var key = $(this).data('id'); + var index = DT_camera.devices.findIndex(function (object) { + return object.key === key; + }); + $('#camCarousel').carousel(index); + DT_camera.setStream(me, index, mjpeg); + DT_camera.trayTimeout(); + }); - /* Listens when the active camera in the carousel is clicked */ - $('body').on( - 'click', - '#camCarousel > div.carousel-inner > div.item.active', - function() { - if (DT_camera.carousel) { - $('#camCarousel').hide(); - $('#camCarousel').carousel('pause'); - DT_camera.carousel = false; - } - } - ); + /* Listens when the handle of the tray is clicked */ + $('body').on('click', '#camCarousel > .handle', function () { + if (!DT_camera.trayopen) { + DT_camera.trayToggle(); + DT_camera.trayRefresh(me); + } + }); - /* Listens when user navigates left in the carousel */ - $('body').on('click', '.cam-container .left', function() { - DT_camera.slide(me, false); - }); + /* Listens when the active camera in the carousel is clicked */ + $('body').on( + 'click', + '#camCarousel > div.carousel-inner > div.item.active', + function () { + if (DT_camera.carousel) { + $('#camCarousel').hide(); + $('#camCarousel').carousel('pause'); + DT_camera.carousel = false; + } + } + ); - /* Listens when user navigates right in the carousel */ - $('body').on('click', '.cam-container .right', function() { - DT_camera.slide(me, true); - }); + /* Listens when user navigates left in the carousel */ + $('body').on('click', '.cam-container .left', function () { + DT_camera.slide(me, false); + }); - /* Listens when the carousel slides automatically */ - $('body').on('slide.bs.carousel', '#camCarousel', function() { - DT_camera.slide(me, true); - }); - }, + /* Listens when user navigates right in the carousel */ + $('body').on('click', '.cam-container .right', function () { + DT_camera.slide(me, true); + }); + + /* Listens when the carousel slides automatically */ + $('body').on('slide.bs.carousel', '#camCarousel', function () { + DT_camera.slide(me, true); + }); + }, }; Dashticz.register(DT_camera); -//# sourceURL=js/components/camera.js \ No newline at end of file +//# sourceURL=js/components/camera.js diff --git a/js/components/coronavirus.js b/js/components/coronavirus.js index 808cc8dc..e273686b 100644 --- a/js/components/coronavirus.js +++ b/js/components/coronavirus.js @@ -8,12 +8,12 @@ /* global number_format */ var api = 'https://covid-tracker-us.herokuapp.com/v2/'; var flagUrl = -// _CORS_PATH + + // _CORS_PATH + 'https://raw.githubusercontent.com/clinkadink/country-flags/master/png100px/'; var DT_coronavirus = { name: 'coronavirus', - defaultCfg: function() { + defaultCfg: function () { var cfg = getBlockDefaults(); //Defaults from DT_graph var addCfg = { datasetColors: ['#7fcdbb', '#f03b20', '#2b7865', '#782b2b'], @@ -25,10 +25,10 @@ var DT_coronavirus = { $.extend(cfg, addCfg); return cfg; }, - canHandle: function(block) { + canHandle: function (block) { return block && block.type === 'corona'; }, - run: function(me) { + run: function (me) { if (isDefined(me.block.report)) { //countryCode: '' createReportBlock(me, true); @@ -57,7 +57,7 @@ function createDashGraph(me) { me.block.countryCode + '&province&timelines=1'; - $.getJSON(dataUrl, function(json) { + $.getJSON(dataUrl, function (json) { var stats = {}; stats.latestConfirmed = json.latest.confirmed; stats.latestDeaths = json.latest.deaths; @@ -211,14 +211,14 @@ function createDashGraph(me) { id: 'B', position: 'right', }); - scales.xAxes[0].stacked = isDefined(me.block.stacked) ? - me.block.stacked : - true; - scales.yAxes[0].stacked = isDefined(me.block.stacked) ? - me.block.stacked : - true; - - $.each(scales.yAxes, function(i) { + scales.xAxes[0].stacked = isDefined(me.block.stacked) + ? me.block.stacked + : true; + scales.yAxes[0].stacked = isDefined(me.block.stacked) + ? me.block.stacked + : true; + + $.each(scales.yAxes, function (i) { scales.yAxes[i].scaleLabel = { labelString: i === 1 ? 'Day' : scaleLabel, display: true, @@ -227,7 +227,7 @@ function createDashGraph(me) { scales.yAxes[i].ticks = { beginAtZero: true, fontColor: 'white', - callback: function(value) { + callback: function (value) { if (scaleLabel == 'Day') { return number_format(value); } else { @@ -245,7 +245,7 @@ function createDashGraph(me) { setHeight = me.block.height ? me.block.height : setHeight; $(me.mountPoint + ' .block_coronavirus').css('height', setHeight); - templateEngine.load('corona_graph_header').then(function(template) { + templateEngine.load('corona_graph_header').then(function (template) { var data = { flag: flagUrl + me.block.countryCode.toLowerCase(), country: stats.country, @@ -267,7 +267,7 @@ function createDashGraph(me) { mountPoint .html(html) .promise() - .done(function() { + .done(function () { $('.graphValues' + me.graphIdx).html(template(data)); createButtons(me); //We can only add the buttons after the header is mounted in the DOM }); @@ -285,20 +285,20 @@ function addHeader(me, h) { function createReportBlock(me, province) { var p = province ? '&province' : ''; - var dataUrl = isDefined(me.block.countryCode) ? - api + - 'locations?country_code=' + - me.block.countryCode + - p + - '&timelines=1' : - api + 'latest'; + var dataUrl = isDefined(me.block.countryCode) + ? api + + 'locations?country_code=' + + me.block.countryCode + + p + + '&timelines=1' + : api + 'latest'; var width = isDefined(me.block.width) ? me.block.width : 3; $.ajax({ url: dataUrl, dataType: 'json', - success: function(json) { - templateEngine.load('corona_report').then(function(template) { + success: function (json) { + templateEngine.load('corona_report').then(function (template) { var report = me.block.report.toLowerCase(); var data = number_format(json.latest[report]); var icon = report === 'confirmed' ? 'hospital' : 'skull-crossbones'; @@ -325,22 +325,23 @@ function createReportBlock(me, province) { width: width, icon: icon, title: - (isDefined(me.block.countryCode) ? - me.block.countryCode.toUpperCase() : - 'Global') + + (isDefined(me.block.countryCode) + ? me.block.countryCode.toUpperCase() + : 'Global') + ': ' + me.block.report, report: data, - flag: flagUrl + - (isDefined(me.block.countryCode) ? - me.block.countryCode.toLowerCase() : - 'world'), + flag: + flagUrl + + (isDefined(me.block.countryCode) + ? me.block.countryCode.toLowerCase() + : 'world'), }; mountPoint.html(template(dataObject)); }); }, - complete: function() {}, - error: function(xhr) { + complete: function () {}, + error: function (xhr) { if (xhr.status == 404) { createReportBlock(me, false); } @@ -363,7 +364,7 @@ function getDoublingHours(json) { var halfLatestConfirmed = json.latest.confirmed / 2; var d = 0; var doublingHours = 0; - reverseForIn(timeline, function(key) { + reverseForIn(timeline, function (key) { if (this[key] <= halfLatestConfirmed && doublingHours === 0) { var nextDay = Object.values(timeline)[Object.keys(timeline).length - d]; var increase = nextDay - this[key]; @@ -375,4 +376,4 @@ function getDoublingHours(json) { return doublingHours; } -//# sourceURL=js/components/coronavirus.js \ No newline at end of file +//# sourceURL=js/components/coronavirus.js diff --git a/js/components/dial.js b/js/components/dial.js index 1c474faf..5585b3ad 100644 --- a/js/components/dial.js +++ b/js/components/dial.js @@ -1,185 +1,218 @@ -/* global settings Domoticz Dashticz moment _TEMP_SYMBOL isDefined number_format templateEngine Hammer*/ -/* global showPopupGraph switchEvoHotWater changeEvohomeControllerStatus slideDevice switchEvoZone switchThermostat switchDevice isObject*/ -var DT_dial = { - name: 'dial', +/* global settings Domoticz Dashticz moment _TEMP_SYMBOL isDefined number_format templateEngine Hammer DT_function Debug*/ +/* global switchEvoHotWater changeEvohomeControllerStatus reqSlideDevice switchEvoZone switchThermostat switchDevice isObject*/ +var DT_dial = (function () { + return { + name: 'dial', - /** - * Checks whether the block can be handled by this component. - * @param {object} block User specified block config. - * @param {string} key identifier used for block selection. - */ - canHandle: function(block) { - return block && block.type === 'dial'; - }, + /** + * Checks whether the block can be handled by this component. + * @param {object} block User specified block config. + * @param {string} key identifier used for block selection. + */ + canHandle: function (block) { + return block && block.type === 'dial'; + }, - /** - * Called at initiation returning a jquery deferred. - */ - init: function() { - this.debug = false; - this.isTouch = false; - this.active = false; - this.center = { x: 0, y: 0 }; - this.R2D = 180 / Math.PI; - this.timeformat = isDefined(settings['timeformat']) ? - settings['timeformat'] : - 'HH:mm, DD/MM/YY'; - this.settings = false; - - document.addEventListener( - 'touchstart', - function() { + /** + * Called at initiation returning a jquery deferred. + */ + init: function () { + this.debug = false; + this.isTouch = false; + this.active = false; + this.center = { x: 0, y: 0 }; + this.R2D = 180 / Math.PI; + this.timeformat = choose(settings['timeformat'], 'HH:mm, DD/MM/YY'); + this.settings = false; + this.evHandler = function () { DT_dial.isTouch = true; - }, { passive: false } - ); - }, - defaultCfg: { - title: false, - width: 3, - last_update: true, - dialimage: false, - flash: 0, - showring: false, - shownumbers: false, - offset: 0, - group: false, - animation: true - }, + document.removeEventListener('touchstart', this.evHandler); + }; - /** - * Called once the component has been intialised and mounted in DOM. - * @param {object} me Core component object. - */ - run: function(me) { - me.idx = isDefined(me.block.idx) ? me.block.idx : me.key; - me.block.idx = me.idx; /* required for existing functions */ - me.id = 'dial_' + me.idx; - me.height = isDefined(me.block.height) ? - parseInt(me.block.height) : - parseInt($(me.mountPoint + ' div').css('width')); - me.fontsize = 0.8 * me.height; - me.dialRange = 280; - me.active = true; - DT_dial.color(me); - me.segments = 11; - me.showunit = me.block.showunit || false; + document.addEventListener('touchstart', this.evHandler, { + passive: false, + }); - /* Get Domoticz setting then make */ - Domoticz.request('type=settings') - .then(function(res) { + return Domoticz.request('type=settings').then(function (res) { if (res) { DT_dial.settings = res; } - }) - .then(function() { - me.devices = [] - if (typeof me.idx === 'number' || parseInt(me.idx)) - me.devices.push(me.idx) - if (typeof me.idx === 'string' && me.idx[0]==='s') { - var idx = parseInt(me.idx.slice(1)) - if (idx) - me.devices.push(me.idx) - } - if (me.block.values) - me.block.values.forEach(function(el) { - if (typeof el === 'object' && el.idx) - {// if (!$.inArray(el.idx, me.devices)) - var idx = parseInt(el.idx); - if (me.devices.indexOf(idx)===-1) - me.devices.push(idx); - } - }) - if(me.block.temp) { - var idx = parseInt(me.block.temp); - if (idx && me.devices.indexOf(idx)===-1) - me.devices.push(idx); - } - me.devices.forEach(function(el) { - Domoticz.subscribe(el, false, function(device) { - if (me.idx===el) { - me.device = device; - me.block.device=device; - } - me.lastupdate = !me.block.last_update ? - false : - moment(me.device.LastUpdate).format(DT_dial.timeformat); - DT_dial.make(me); - }); + }); + }, + defaultCfg: { + title: false, + width: 3, + last_update: true, + dialimage: false, + flash: 0, + showring: false, + shownumbers: false, + offset: 0, + group: false, + animation: true, + iconSwitch: 'fas fa-power-off', + showvalue: true, + value: 'Data', + }, - }) - me.device=Domoticz.getAllDevices()[me.devices[0]]; - me.block.device=me.device; - if(!me.device) { + /** + * Called once the component has been intialised and mounted in DOM. + * @param {object} me Core component object. + */ + run: function (me) { + me.idx = choose(me.block.idx, me.key); + me.id = 'dial_' + me.idx; + var height = isDefined(me.block.height) + ? parseInt(me.block.height) + : parseInt($(me.mountPoint + ' div').outerWidth()); + if (height < 0) { + console.log('dial width unknown.'); + me.height = me.height || 100; + } else me.height = height || me.height; + me.fontsize = 0.85 * me.height; + $(me.mountPoint + ' .dt_block').css('height', me.height + 'px'); + me.dialRange = 280; + me.active = true; + color(me); + me.segments = 11; + me.showunit = me.block.showunit || false; + + var idx; + me.devices = []; + if (typeof me.idx === 'number' || parseInt(me.idx)) + me.devices.push(me.idx); + if (typeof me.idx === 'string' && me.idx[0] === 's') { + idx = parseInt(me.idx.slice(1)); + if (idx) me.devices.push(me.idx); + } + if (me.block.values) + me.block.values.forEach(function (el) { + if (typeof el === 'object' && el.idx) { + // if (!$.inArray(el.idx, me.devices)) + var idx = parseInt(el.idx); + if (me.devices.indexOf(idx) === -1) me.devices.push(idx); + } + }); + if (me.block.temp) { + idx = parseInt(me.block.temp); + if (idx && me.devices.indexOf(idx) === -1) me.devices.push(idx); + } + me.devices.forEach(function (el) { + Dashticz.subscribeDevice(me, el, false, function (device) { + if (me.idx === el) { + me.device = device; + me.block.device = device; + } + me.lastupdate = !me.block.last_update + ? false + : moment(me.device.LastUpdate).format(DT_dial.timeformat); + make(me); + }); + }); + if (me.devices.length) { + me.device = Domoticz.getAllDevices()[me.devices[0]]; + if (!me.device) { console.log('Device not found: ', me.idx); - return + } else { + me.block.idx = me.idx; /* required for existing functions */ + me.block.device = me.device; + me.isSetpoint = !!me.device.SetPoint; } - me.isSetpoint = isDefined(me.device.SetPoint); - DT_dial.make(me); + } + make(me); + tap(me); + }, - }); - }, + destroy: function (me) { + if (me.hammer) { + me.hammer.destroy(); + me.hammer = 0; + } + }, + }; /** * Creates or updates the dial and applies current values. * @param {object} me Core component object. */ - make: function(me) { + function make(me) { me.info = []; - DT_dial.resize(me); + me.showvalue = me.block.showvalue; + resize(me); var d = me.device; - switch (true) { - case typeof me.block.values!== 'undefined': - DT_dial.defaultDial(me); - break; - case d.SubType === 'Evohome': - case d.SwitchType === 'Selector': - DT_dial.control(me); - break; - case d.Type === 'Heating': - case d.Type === 'Thermostat': - case d.SubType === 'SetPoint': - DT_dial.heating(me); - break; - case d.SwitchType === 'Dimmer': - DT_dial.dimmer(me); - break; - case d.Type === 'Group': - case d.Type === 'Scene': - case d.SwitchType === 'On/Off': - DT_dial.onoff(me); - break; - case d.Type === 'Temp': - case d.Type === 'Temp + Humidity': - case d.Type === 'Temp + Humidity + Baro': - DT_dial.temperature(me); - break; - case d.Type === 'Wind': - DT_dial.wind(me); - break; - case d.Type === 'P1 Smart Meter': - DT_dial.p1smartmeter(me); - break; - default: - DT_dial.defaultDial(me); - break; + if (!d) { + onoff(me); + } else { + switch (true) { + case d.SubType === 'Evohome': + case d.SwitchType === 'Selector': + control(me); + break; + case d.Type === 'Heating': + case d.Type === 'Thermostat': + case d.SubType === 'SetPoint': + heating(me); + break; + case d.SwitchType === 'Dimmer': + dimmer(me); + break; + case d.Type === 'Group': + case d.Type === 'Scene': + case d.SwitchType === 'On/Off': + case d.SwitchType === 'Push On Button': + case d.SwitchType === 'Push Off Button': + onoff(me); + break; + case d.Type === 'Temp': + case d.Type === 'Temp + Humidity': + case d.Type === 'Temp + Humidity + Baro': + temperature(me); + break; + case d.Type === 'Wind': + wind(me); + break; + case d.Type === 'P1 Smart Meter': + p1smartmeter(me); + break; + case d.SubType === 'Text': + text(me); + break; + default: + defaultDial(me); + break; + } } + addValues(me); + if (me.block.shownumbers && me.numbers == undefined) { - me.numbers = DT_dial.numbers(me); + me.numbers = numbers(me); } - templateEngine.load('dial').then(function(template) { + // var templateName = me.block.layout ? 'dial_' + me.block.layout : 'dial'; + var templateName = 'dial'; + templateEngine.load(templateName).then(function (template) { + me.info.forEach(function (i) { + if (i.type === 'text') return; + if (!isDefined(i.decimals)) return; + i.data = choose(i.dataFormat, number_format(i.data, i.decimals)); + }); var dataObject = { id: me.id, size: me.size, - name: me.block.title ? me.block.title : me.device.Name, + name: me.block.title ? me.block.title : me.device && me.device.Name, min: me.min, max: me.max, showunit: me.showunit, - type: me.device.Type, + type: me.device && me.device.Type, value: me.value, - valueformat: number_format(me.value, 1), + valueformat: + me.type === 'text' + ? me.value + : isDefined(me.decimals) + ? number_format(me.value, me.decimals) + : me.value, hasSetpoint: me.isSetpoint || me.subdevice, setpoint: me.setpoint, until: me.until, @@ -206,16 +239,21 @@ var DT_dial = { split: me.splitdial, slice: me.slice, checked: me.checked, - addclass:me.block.animation ? 'animation' :'' + addclass: me.type, + animation: me.block.animation ? 'animation' : '', + iconSwitch: me.block.iconSwitch, + label: me.label, + deviceStatus: (me.device && me.device.deviceStatus) || '', + showvalue: me.showvalue, //to show the big value centered in the middle }; /* Mount dial */ var $mount = $(me.mountPoint + ' .dt_content'); $mount.html(template(dataObject)); $mount.addClass('swiper-no-swiping'); - $(me.mountPoint + ' .dt_block').css('height', me.height + 'px'); + if (me.type === 'evo' || me.type === 'selector') { - $(me.select + ' li').each(function() { + $(me.select + ' li').each(function () { if ($(this).data('val') === me.status) { $(this).addClass('selected'); } @@ -227,7 +265,7 @@ var DT_dial = { $(me.mountPoint + ' .dial') .addClass('dial-flash') .delay(me.block.flash) - .queue(function() { + .queue(function () { $(this).removeClass('dial-flash').dequeue(); }); } @@ -238,46 +276,68 @@ var DT_dial = { $(me.mountPoint + ' .dial .fill').addClass('show-ring'); } - DT_dial.tap(me); - + if (me.onoff) { + if (me.switchMode !== 'Toggle') + $(me.mountPoint + ' input').on('click', function () { + // var c = $(this).prop('checked'); + // $(this).prop('checked', !c); + var el = $(this); + var newState = me.switchMode === 'On'; + setTimeout(function () { + el.prop('checked', newState); + }, 500); + }); + } /* Add dial calculations */ - if (!me.onoff && !me.controller) { + if (!me.controller) { me.body = $(me.mountPoint + ' .dt_content .dial'); me.min = me.body.data('min'); me.max = me.body.data('max'); me.scale = me.dialRange / (me.max - me.min); me.value = me.body.data('value'); - me.angle = DT_dial.degrees(me); + me.angle = degrees(me); me.control = me.body.find('.dial-needle'); - DT_dial.listen(me); - DT_dial.rotate(me); + listen(me); + rotate(me); } }); - }, + } /** * Provides interaction with the dial via tap. * @param {object} me Core component object. */ - tap: function(me) { - var d = document.getElementById(me.id); - var mc = new Hammer(d); - mc.on('tap', function(ev) { + function tap(me) { + var d = $(me.mountPoint + ' .dial')[0]; + if (me.hammer) { + me.hammer.destroy(); + } + me.hammer = new Hammer(d); + var block = me.block; + if (block.popup || block.url || block.slide) { + //Clickhandler has been added already! + //DT_function.clickHandler(me); + return; + } + me.hammer.on('tap', function (ev) { if (me.status === 'TemporaryOverride') { me.override = false; me.demand = false; - DT_dial.update(me); + update(me); + return; } if (me.type === 'dim') { me.demand ? (me.value = 0) : (me.value = me.device.Level); me.demand = !me.demand; - DT_dial.update(me); + update(me); + return; } if (me.type === 'dhw') { me.demand = me.state === 'On'; me.state = me.state === 'On' ? 'Off' : 'On'; me.demand = !me.demand; switchEvoHotWater(me, me.state, me.demand); + return; } if (me.type === 'evo' || me.type === 'selector') { $(me.select + ' li').removeClass('selected'); @@ -287,97 +347,99 @@ var DT_dial = { if (me.type === 'evo') { changeEvohomeControllerStatus(me, status); } else { - slideDevice(me, status); + slideDevice(me, me.idx, status); } + return; } if (me.type === 'onoff') { - if (me.device.Type === 'Scene') me.cmd = 'On' - else me.cmd = me.state === 'Off' ? 'On' : 'Off'; + if (me.switchMode === 'Toggle') + me.cmd = me.state === 'Off' ? 'On' : 'Off'; + else me.cmd = me.switchMode; me.demand = me.cmd === 'On'; - DT_dial.update(me); - } - if(me.type === 'default' || me.type === 'temp') { - showPopupGraph(me.block); + update(me); + return; } + // (me.type === 'default' or 'temp' or 'p1' or ...) + if (me.block.graph !== false) DT_function.clickHandler({ block: block }); }); - }, + } /** * Listen for all dial needle rotation by the user. * @param {object} me Core component object. */ - listen: function(me) { - if (me.active) { - ['mousedown', 'touchstart'].forEach(function(e) { - me.control[0].addEventListener(e, DT_dial.start, { passive: false }); + function listen(me) { + if (!me.fixed && me.active) { + ['mousedown', 'touchstart'].forEach(function (e) { + me.control[0].addEventListener(e, start, { passive: false }); }); me.body - .bind('mousedown touchstart', function() { - me.devices.forEach(function(idx ) { - Domoticz.hold(idx) + .bind('mousedown touchstart', function () { + me.devices.forEach(function (idx) { + Domoticz.hold(idx); }); }) - .bind('mousemove touchmove', function(event) { + .bind('mousemove touchmove', function (event) { if (DT_dial.active) { - DT_dial.isTouch && event.targetTouches ? - DT_dial.angle(me, event.targetTouches[0]) : - DT_dial.angle(me, event); + DT_dial.isTouch && event.targetTouches + ? angle(me, event.targetTouches[0]) + : angle(me, event); } return false; }) - .bind('mouseup touchend mouseleave', function() { - if (DT_dial.active) DT_dial.stop(me); + .bind('mouseup touchend mouseleave', function () { + if (DT_dial.active) stop(me); }); } - }, + } /** * Start of dial needle rotation, set active. * @param {object} e The touch or mouse event. */ - start: function() { + function start() { var bb = this.getBoundingClientRect(); DT_dial.center = { x: bb.left + bb.width / 2, y: bb.top + bb.height / 2, }; return (DT_dial.active = true); - }, + } /** * Calculate angle of rotation, factoring touch or mouse input. * @param {object} me Core component object. * @param {object} e The touch or mouse event. */ - angle: function(me, e) { + function angle(me, e) { var x = - DT_dial.isTouch && e.touches && e.touches.length ? - e.touches[0].clientX - DT_dial.center.x : - e.clientX - DT_dial.center.x; + DT_dial.isTouch && e.touches && e.touches.length + ? e.touches[0].clientX - DT_dial.center.x + : e.clientX - DT_dial.center.x; var y = - DT_dial.isTouch && e.touches && e.touches.length ? - e.touches[0].clientY - DT_dial.center.x : - e.clientY - DT_dial.center.y; + DT_dial.isTouch && e.touches && e.touches.length + ? e.touches[0].clientY - DT_dial.center.x + : e.clientY - DT_dial.center.y; me.angle = DT_dial.R2D * Math.atan2(y, x); - DT_dial.rotate(me); - }, + rotate(me); + } /** * Apply rotation and styling, updating value. * @param {object} me Core component object. */ - rotate: function(me) { + function rotate(me) { var $d = $(me.body); var a = me.angle; if ((a >= -180 && a <= 60) || (a >= 140 && a <= 180) || me.unlimited) { /* within valid range */ - me.degrees = me.unlimited ? - a + me.block.offset : - a >= 140 && a <= 180 ? - a - 140 : - a + 220; + me.degrees = me.unlimited + ? a + me.block.offset + : a >= 140 && a <= 180 + ? a - 140 + : a + 220; var val = me.value; @@ -426,40 +488,51 @@ var DT_dial = { } } - var valueformat = - me.value % 1 === 0 ? me.value : number_format(me.value, 1); - + // var valueformat = + // me.value % 1 === 0 ? me.value : number_format(me.value, isDefined(me.decimals) ? me.decimals : 1); + var valueformat = number_format(me.value, choose(me.decimals, 1)); $d.find('.value').text(valueformat).data('value', me.value); $d.find('.info').text($d.data('info')); $(me.control).css({ webkitTransform: 'rotate(' + (-140 + me.degrees) + 'deg)', }); } else { - console.log(me.block.key+' device: '+me.device.Name+ ': angle outside permitted range = ' + a); + console.log( + me.block.key + + ' device: ' + + me.device.Name + + ': angle outside permitted range = ' + + a + ); } - }, + } /** * Calculate degrees based on device range. * @param {object} me Core component object. */ - degrees: function(me) { - var value = me.value; - value = isDefined(me.min) && (value < me.min) ? me.min : value; - value = isDefined(me.max) && (value > me.max) ? me.max : value; + function degrees(me) { + var value; + if (typeof me.needle !== 'undefined') { + value = me.needle; + } else { + value = me.value; + } + value = isDefined(me.min) && value < me.min ? me.min : value; + value = isDefined(me.max) && value > me.max ? me.max : value; var deg = (value - me.min) * me.scale; deg += me.splitdial || deg > 40 ? -220 : 140; return deg; - }, + } /** * Rotation has stopped, update the device. * @param {object} me Core component object. */ - stop: function(me) { - me.devices.forEach(function(idx) { - Domoticz.release(idx) + function stop(me) { + me.devices.forEach(function (idx) { + Domoticz.release(idx); }); switch (me.type) { case 'zone': @@ -471,16 +544,30 @@ var DT_dial = { me.device.Level = me.value; break; } - DT_dial.update(me); + update(me); return (DT_dial.active = false); - }, + } /** * Update device with new values post rotation. * @param {object} me Core component object. */ - update: function(me) { - switch (me.type) { + function update(me) { + var setpointType = me.type; //default assumption + var idx = me.setpointDevice || me.idx; + var maxdim = me.maxdim; + if (me.setpointDevice) { + var d = Domoticz.getAllDevices()[idx]; + switch (true) { + case isDefined(d.Level): + setpointType = 'dim'; + maxdim = isDefined(d.MaxDimLevel) ? parseInt(d.MaxDimLevel) : 100; + break; + case isDefined(d.SetPoint): + setpointType = 'stat'; + } + } + switch (setpointType) { case 'zone': switchEvoZone(me, me.setpoint, me.override); break; @@ -488,66 +575,75 @@ var DT_dial = { switchThermostat(me, me.value); break; case 'dim': - slideDevice(me, Math.ceil((me.maxdim / me.max) * me.value)); + var level = (maxdim / me.max) * me.value; + if (level < 1) level = 0; + if (level > maxdim - 1) level = maxdim; + slideDevice(me, idx, Math.round(level)); break; case 'onoff': - switchDevice(me, me.cmd); + if (me.block.idx) switchDevice(me, me.cmd); break; case 'default': if (me.isSetpoint) { var block = {}; - $.extend(block, me) + $.extend(block, me); if (me.setpointDevice) { - block.idx=me.setpointDevice; //Force that the correct setpoint device is used. - block.device = Domoticz.getAllDevices()[me.setpointDevice] + block.idx = me.setpointDevice; //Force that the correct setpoint device is used. + block.device = Domoticz.getAllDevices()[me.setpointDevice]; } switchThermostat(block, me.value); } break; } - }, + } + + function slideDevice(me, idx, level) { + reqSlideDevice(idx, level).then(function () { + make(me); + }); + } /** * Create RGB and RBGA values for styling if block.color exists. * @param {object} me Core component object. */ - color: function(me) { + function color(me) { if (isDefined(me.block.color)) { - var c = $(me.mountPoint) + var c = me.$mountPoint .css('color', me.block.color) .css('color'); /* change all formats to rgb */ me.color = c; me.rgba = - c.split(',').length === 4 ? - c.replace( - c.split(',')[3], - '0.5)' - ) /* already rgba, make 50% opaque */ : - c - .replace(')', ', 0.5)') - .replace('rgb', 'rgba'); /* convert rgb to rgba at 50% opaque*/ + c.split(',').length === 4 + ? c.replace( + c.split(',')[3], + '0.5)' + ) /* already rgba, make 50% opaque */ + : c + .replace(')', ', 0.5)') + .replace('rgb', 'rgba'); /* convert rgb to rgba at 50% opaque*/ } else { me.color = 'rgb(255, 165, 0)'; me.rgba = 'rgba(255, 165, 0, 0.5)'; } return; - }, + } /** * Ensure all dials are responsive based on column width on screen resize. * @param {object} me Core component object. */ - resize: function(me) { + function resize(me) { /* todo: temporarily disabled. * to prevent recreating and resubscribing to domoticz devices window.addEventListener( 'resize', function() { - DT_dial.run(me); + run(me); }, true );*/ - }, + } /** * Displays the icon or image for the dial info. @@ -556,68 +652,51 @@ var DT_dial = { * @param {object} length Length of array expected. * @param {object} fallback Default value to use if no block config. */ - display: function(param, index, length, fallback) { - return isDefined(param) ? - isObject(param) && param.length === length ? - param[index] : - param : - fallback; - }, + function display(param, index, length, fallback) { + return isDefined(param) + ? isObject(param) && param.length === length + ? param[index] + : param + : fallback; + } /** * Configures the data for Evohome zones/hot water and thermostats. * @param {object} me Core component object. */ - heating: function(me) { + function heating(me) { me.type = me.device.Type === 'Heating' ? 'zone' : 'stat'; me.unitvalue = _TEMP_SYMBOL; - me.min = isDefined(me.block.min) ? - me.block.min : - isDefined(settings['setpoint_min']) ? - settings['setpoint_min'] : - 5; - me.max = isDefined(me.block.max) ? - me.block.max : - isDefined(settings['setpoint_max']) ? - settings['setpoint_max'] : - 35; - - me.dialicon = DT_dial.display( - me.block.dialicon, - 0, - 1, - 'fas fa-calendar-alt' - ); - me.dialimage = DT_dial.display(me.block.dialimage, 0, 1, false); + me.min = choose(me.block.min, choose(settings['setpoint_min'], 5)); + me.max = choose(me.block.max, choose(settings['setpoint_max'], 35)); + + me.dialicon = display(me.block.dialicon, 0, 1, 'fas fa-calendar-alt'); + me.dialimage = display(me.block.dialimage, 0, 1, false); /* EvoHome Zones */ if (me.type === 'zone') { me.value = me.device.Temp; me.setpoint = me.isSetpoint ? me.device.SetPoint : 20; - me.boost = isDefined(settings['evohome_boost_zone']) ? - settings['evohome_boost_zone'] : - 60; - me.until = isDefined(me.device.Until) ? me.device.Until : false; - me.status = isDefined(me.device.Status) ? me.device.Status : 'Auto'; + me.boost = choose(settings['evohome_boost_zone'], 60); + me.until = choose(me.device.Until, false); + me.status = choose(me.device.Status, 'Auto'); me.override = me.status === 'TemporaryOverride'; me.demand = me.status !== 'HeatingOff' && me.value < me.setpoint; me.lastupdate = - me.lastupdate && me.until ? - moment(me.until).format(DT_dial.timeformat) : - me.lastupdate; + me.lastupdate && me.until + ? moment(me.until).format(DT_dial.timeformat) + : me.lastupdate; /* EvoHome Hot water */ if (me.device.SubType === 'Hot Water') { me.active = false; me.type = 'dhw'; me.state = me.device.State; - me.min = isDefined(me.block.min) ? me.block.min : 20; - me.max = isDefined(me.block.max) ? me.block.max : 60; + me.min = choose(me.block.min, 20); + me.max = choose(me.block.max, 60); me.setpoint = 40; me.demand = me.device.State === 'On'; - me.boost = isDefined(settings['evohome_boost_hw']) ? - settings['evohome_boost_hw'] : - 30; + me.boost = choose(settings['evohome_boost_hw'], 30); } me.info.push({ icon: me.override ? 'fas fa-stopwatch small_fa' : me.dialicon, @@ -643,148 +722,228 @@ var DT_dial = { } } return; - }, + } /** * Configures the data for read only temperature devices. * @param {object} me Core component object. */ - temperature: function(me) { + function temperature(me) { me.type = 'temp'; me.active = false; - me.min = isDefined(me.block.min) ? me.block.min : 5; - me.max = isDefined(me.block.max) ? me.block.max : 35; - me.value = typeof me.device['Temp'] !== 'undefined' ? me.device['Temp'] : me.device['Data']; + me.min = choose(me.block.min, 5); + me.max = choose(me.block.max, 35); + me.value = + typeof me.device['Temp'] !== 'undefined' + ? me.device['Temp'] + : me.device['Data']; me.isSetpoint = true; - me.setpoint = isDefined(me.block.setpoint) ? me.block.setpoint : 20; + me.setpoint = choose(me.block.setpoint, 20); me.unitvalue = _TEMP_SYMBOL; + me.decimals = me.block.decimals; if (typeof me.device.Humidity !== 'undefined') { me.info.push({ - icon: DT_dial.display(me.block.dialicon, 0, 2, 'fas fa-tint'), - image: DT_dial.display(me.block.dialimage, 0, 2, false), - data: number_format(me.device['Humidity'], 0), + icon: display(me.block.dialicon, 0, 2, 'fas fa-tint'), + image: display(me.block.dialimage, 0, 2, false), + data: me.device['Humidity'], + decimals: 0, unit: '%', }); } if (typeof me.device.Barometer !== 'undefined') { me.info.push({ - icon: DT_dial.display(me.block.dialicon, 1, 2, 'fas fa-cloud'), - image: DT_dial.display(me.block.dialimage, 1, 2, false), - data: number_format(me.device['Barometer'], 0), + icon: display(me.block.dialicon, 1, 2, 'fas fa-cloud'), + image: display(me.block.dialimage, 1, 2, false), + data: me.device['Barometer'], + decimals: 0, unit: 'hPa', }); } return; - }, + } + + function defaultDial(me) { + me.type = 'default'; + me.active = false; + me.fixed = choose(me.block.fixed, false); //hide needle if fixed===true + me.min = choose(me.block.min, 0); + me.max = choose(me.block.max, 100); + + me.value = parseFloat(me.device[me.block.value]); + me.decimals = me.block.decimals; + me.setpoint = me.block.setpoint; + var splitAllData = me.device.Data.split(','); + var splitData = splitAllData[0].split(' '); + me.unitvalue = + me.block.unitvalue || (splitData.length > 1 ? splitData[1] : undefined); + if (!me.unitvalue && me.device.SubType == 'Percentage') me.unitvalue = '%'; + me.isSetpoint = true; + me.label = me.block.label; + } - defaultDial: function(me) { - + function addValues(me) { function getValueUnit(data) { var dataScale = data.scale || 1; - if(!data.value) { + if (!data.value) { console.log('Invalid data ', data); - return; + return { + value: '', + unit: choose(data.unit, ''), + }; } - if(typeof data.value==='number') { + if (typeof data.value === 'number') { return { - value:data.value, - unit: data.unit - } + value: data.value, + unit: data.unit, + }; } - res = data.value.split(' '); - if(res.length) { - var value=parseFloat(res[0]) * dataScale; - var unit = typeof data.unit !=='undefined' ? data.unit: (res.length > 1 ? res[1] : ''); + if (data.type && data.type === 'text') { return { - value: value, - unit: unit - } + value: data.value, + unit: '', + }; } - else { - console.log("invalid dial data"); + var res = data.value.split(' '); + if (res.length) { + var value = parseFloat(res[0]) * dataScale; + var unit = + typeof data.unit !== 'undefined' + ? data.unit + : res.length > 1 + ? res[1] + : ''; + return { + value: value, + unit: unit, + }; + } else { + console.log('invalid dial data'); return { value: 0, - unit: data.unit - } + unit: data.unit, + }; } } - function getValueInfo(device, id) { + function getValueInfo(device, id, preset) { var res = {}; var inputData = {}; + if (typeof id === 'string') { inputData = { value: device[id], + decimals: choose(preset.decimals, getDefaultFormatting(id).decimals), + unit: choose(preset.unit, getDefaultFormatting(id).unit), + label: preset.label, }; + if (!preset.showunit) inputData.unit = ''; } else { - inputData.value = device[id.value]; - inputData.unit = id.unit; - inputData.decimals = id.decimals; + inputData.value = device[id.value || 'Data']; //if value not defined use 'Data' + inputData.unit = choose( + id.unit, + choose(preset.unit, getDefaultFormatting(id.value).unit) + ); + inputData.decimals = choose( + id.decimals, + choose(preset.decimals, getDefaultFormatting(id.value).decimals) + ); inputData.scale = id.scale; res.icon = id.icon; res.image = id.image; + res.label = choose(id.label, preset.label); + if (!choose(id.showunit, preset.showunit)) inputData.unit = ''; + res.addClass = id.addClass; } - if (typeof inputData.value === 'undefined') { - console.log('Value not found for field ' + id.value+' in device ' + device.idx+':'+device.Name) - return { - data: 0, - unit: '' - } + var inputType = 0; + if (device.SubType === 'Text') { + inputType = 'text'; } + inputData.type = id.type || inputType; var valueunit = getValueUnit(inputData); res.data = valueunit.value; + res.dataFormat = number_format(res.data, inputData.decimals); res.unit = valueunit.unit; + res.decimals = inputData.decimals; + res.type = inputData.type; return res; } - me.type = 'default'; - me.active = false; - me.min = isDefined(me.block.min) ? me.block.min : 0; - me.max = isDefined(me.block.max) ? me.block.max : 100; - - me.value = parseFloat(me.device.Data); - var splitAllData = me.device.Data.split(','); - var splitData = splitAllData[0].split(' '); - me.unitvalue = me.block.unitvalue || (splitData.length>1 ? splitData[1]:undefined); - if (!me.unitvalue && me.device.SubType == 'Percentage') me.unitvalue = '%'; - me.isSetpoint = true; /* supported formats: - values : [ 'temp', 'humidity'] array of strings - values: [ { value: 'temp', unit:'km', icon:'fa fa_bulb',image:'my_image'}] array of objects. + values : [ 'Temp', 'Humidity'] array of strings + values: [ { value: 'Temp', unit:'km', icon:'fa fa_bulb',image:'my_image'}] array of objects. */ - if(me.block.values) { - var defaultIdx = me.devices[0]; + if (!isDefined(me.min)) me.min = choose(me.block.min, 0); + if (!isDefined(me.max)) me.max = choose(me.block.max, 100); + if (me.block.values) { + var defaultIdx = me.devices[0]; - if(Array.isArray(me.block.values)) { - me.info = me.block.values.map(function(el) { + if (Array.isArray(me.block.values)) { + me.info = me.block.values.map(function (el) { var idx = defaultIdx; - if(typeof el=='object' && el.idx) { + if (typeof el == 'object' && el.idx) { idx = el.idx; } var device = Domoticz.getAllDevices()[idx]; - var valueInfo = getValueInfo(device, el); + if (!device) { + console.error('Device not existing: ', idx); + Debug.log( + Debug.ERROR, + 'Block ' + me.key + ': Non exisiting device ' + idx + ); + return { + data: 'unknown ' + idx, + type: 'text', + }; + } + var valueInfo = getValueInfo(device, el, { + decimals: me.block.decimals, + unit: me.block.unit, + showunit: choose(me.block.showunit, true), + type: me.block.valuetype, + label: me.block.label, + }); if (el.isSetpoint) { + me.fixed = false; me.isSetpoint = true; - me.active= true;//Dial can be used to set setpoint value + me.active = true; //Dial can be used to set setpoint value me.setpointDevice = idx; me.setpoint = valueInfo.data; } - return valueInfo; - }) - var res = me.info.shift(); - if (typeof res.unit !== 'undefined') me.unitvalue = res.unit; - me.value = res.data; - } - else { - console.error('values should be an array for ', me.block) + if (el.isNeedle) { + //use needle, readonly (active = false) + me.fixed = false; + me.isSetpoint = true; + me.active = false; + me.setpointDevice = idx; + me.setpoint = choose(me.block.setpoint, 0); + me.value = valueInfo.data; + me.needle = me.value; + me.splitdial = choose(el.splitdial, me.block.min < 0); + } + valueInfo.deviceStatus = device.deviceStatus || ''; + return valueInfo; + }); + } else { + console.error('values should be an array for ', me.block); } } - me.showunit = isDefined(me.block.showunit) ? me.block.showunit : !!me.unitvalue; - }, - wind: function(me) { + if (me.splitdial) { + me.class = me.value > 0 ? 'positive' : 'negative'; + me.slice = me.value > 0 ? 'splitdial-plus' : 'splitdial-minus'; + } + + me.lastupdate = + me.block.last_update && me.device + ? moment(me.device.LastUpdate).format(DT_dial.timeformat) + : false; + + me.showunit = choose(me.block.showunit, !!me.unitvalue); + } + + function wind(me) { me.type = 'wind'; me.active = false; me.unlimited = true; @@ -796,7 +955,7 @@ var DT_dial = { me.segments = 12; me.numbers = [210, 240, 270, 300, 330, 0, 30, 60, 90, 120, 150, 180]; me.subdevice = true; - me.setpoint = isDefined(me.block.setpoint) ? me.block.setpoint : 15; + me.setpoint = choose(me.block.setpoint, 15); me.isSetpoint = true; me.temp = me.device.Temp; @@ -806,35 +965,61 @@ var DT_dial = { windUnit = wind[DT_dial.settings.WindUnit]; } - me.info.push({ - icon: DT_dial.display(me.block.dialicon, 0, 3, 'fas fa-location-arrow'), - image: DT_dial.display(me.block.dialimage, 0, 3, false), - data: me.device.DirectionStr, - unit: '', - }, { - icon: DT_dial.display(me.block.dialicon, 1, 3, 'fas fa-wind'), - image: DT_dial.display(me.block.dialimage, 1, 3, false), - data: me.device.Speed, - unit: windUnit, - }, { - icon: DT_dial.display( - me.block.dialicon, - 2, - 3, - 'fas fa-thermometer-half' - ), - image: DT_dial.display(me.block.dialimage, 0, 3, false), - data: me.device.Temp, - unit: _TEMP_SYMBOL, - }); + me.info.push( + { + icon: display(me.block.dialicon, 0, 3, 'fas fa-location-arrow'), + image: display(me.block.dialimage, 0, 3, false), + data: me.device.DirectionStr, + unit: '', + }, + { + icon: display(me.block.dialicon, 1, 3, 'fas fa-wind'), + image: display(me.block.dialimage, 1, 3, false), + data: me.device.Speed, + unit: windUnit, + }, + { + icon: display(me.block.dialicon, 2, 3, 'fas fa-thermometer-half'), + image: display(me.block.dialimage, 0, 3, false), + data: me.device.Temp, + unit: _TEMP_SYMBOL, + } + ); + + //new layout of wind sensor + if (me.block.layout == 1) { + me.needle = me.device.Direction; + me.value = me.device.Speed; + me.unitvalue = windUnit; + me.info.length = 0; + me.info.push( + { + icon: display(me.block.dialicon, 0, 3, 'fas fa-location-arrow'), + image: display(me.block.dialimage, 0, 3, false), + data: me.device.DirectionStr, + unit: '', + }, + { + image: display(me.block.dialimage, 1, 3, false), + data: me.device.Direction, + unit: '°', + }, + { + icon: display(me.block.dialicon, 2, 3, 'fas fa-thermometer-half'), + image: display(me.block.dialimage, 0, 3, false), + data: me.device.Temp, + unit: _TEMP_SYMBOL, + } + ); + } return; - }, + } /** * Configures the data for Evohome controllers. * @param {object} me Core component object. */ - control: function(me) { + function control(me) { me.select = '#' + me.id + ' .status'; me.controller = true; me.fixed = true; @@ -854,91 +1039,134 @@ var DT_dial = { me.status = me.device.Level; me.options = []; var levelNames = atob(me.device.LevelNames).split('|'); - $.each(levelNames, function(index, value) { + $.each(levelNames, function (index, value) { me.options.push({ val: index * 10, text: value }); }); } return; - }, + } /** * Configures the data for devices of dimmer switchtype. * @param {object} me Core component object. */ - dimmer: function(me) { + function dimmer(me) { me.type = 'dim'; - me.min = isDefined(me.block.min) ? me.block.min : 0; - me.max = isDefined(me.block.max) ? me.block.max : 100; + me.min = choose(me.block.min, 0); + me.max = choose(me.block.max, 100); + me.decimals = choose(me.block.decimals, 0); me.value = - me.device.Data === 'Off' ? - 0 : - me.device.Level > me.max * 0.95 ? - me.max : - me.device.Level < me.max * 0.05 ? - me.min : - me.device.Level; + me.device.Data === 'Off' + ? 0 + : me.device.Level > me.max - 1 + ? me.max + : me.device.Level < me.min + 1 + ? me.min + : me.device.Level; me.demand = me.value > 0; - me.maxdim = isDefined(me.device.MaxDimLevel) ? - parseInt(me.device.MaxDimLevel) : - 100; + me.maxdim = isDefined(me.device.MaxDimLevel) + ? parseInt(me.device.MaxDimLevel) + : 100; me.segments = 11; + if (isDefined(me.block.setpoint)) { + me.setpoint = me.block.setpoint; + me.isSetpoint = true; + } return; - }, + } /** * Configures the data for devices of on/off switchtype. * @param {object} me Core component object. */ - onoff: function(me) { + function onoff(me) { me.type = 'onoff'; me.fixed = true; me.onoff = true; - me.state = me.device.Status; + var switchMode = capitalizeFirstLetter(me.block.switchMode); + if (me.device) { + if (me.device.Type === 'Scene') me.switchMode = 'On'; + if (me.device.subType === 'Push On Button') me.switchMode = 'On'; + if (me.device.subType === 'Push Off Button') me.switchMode = 'Off'; + } + switch (switchMode) { + case 'On': + case 'Off': + me.switchMode = switchMode; + break; + default: + me.switchMode = me.switchMode || 'Toggle'; + } + + me.state = + (me.device && me.device.Status) || + (me.switchMode === 'Toggle' ? 'Off' : me.switchMode); me.demand = me.state === 'On'; me.checked = me.state === 'On' ? 'checked' : ''; return; - }, + } /** * Configures the data for devices of P1 Smart Meter type. * @param {object} me Core component object. */ - p1smartmeter: function(me) { + function p1smartmeter(me) { me.type = 'p1'; me.active = false; - me.min = isDefined(me.block.min) ? me.block.min : -10; - me.max = isDefined(me.block.max) ? me.block.max : 10; - me.value = - Math.round( - (parseFloat(me.device.CounterDelivToday) - - parseFloat(me.device.CounterToday)) * - 100 - ) / 100; - me.class = me.value > 0 ? 'positive' : 'negative'; - me.slice = me.value > 0 ? 'splitdial-plus' : 'splitdial-minus'; - me.unitvalue = 'kWh'; - me.subdevice = true; - me.splitdial = true; - - me.info.push({ - icon: DT_dial.display(me.block.dialicon, 0, 2, 'fas fa-sun'), - image: DT_dial.display(me.block.dialimage, 0, 2, false), - data: me.device.CounterDelivToday, - unit: '', - }, { - icon: DT_dial.display(me.block.dialicon, 1, 2, 'fas fa-bolt'), - image: DT_dial.display(me.block.dialimage, 1, 2, false), - data: me.device.CounterToday, - unit: '', - }); + if (me.device.SubType == 'Gas') { + me.min = choose(me.block.min, 0); + me.max = choose(me.block.max, 20); + me.value = parseFloat(me.device.CounterToday); + me.unitvalue = 'm3'; + } else { + me.min = choose(me.block.min, -10); + me.max = choose(me.block.max, 10); + me.value = + Math.round( + (parseFloat(me.device.CounterDelivToday) - + parseFloat(me.device.CounterToday)) * + 100 + ) / 100; + me.unitvalue = 'kWh'; + me.subdevice = true; + me.splitdial = true; + + me.info.push( + { + icon: display(me.block.dialicon, 0, 2, 'fas fa-sun'), + image: display(me.block.dialimage, 0, 2, false), + data: me.device.CounterDelivToday, + unit: '', + }, + { + icon: display(me.block.dialicon, 1, 2, 'fas fa-bolt'), + image: display(me.block.dialimage, 1, 2, false), + data: me.device.CounterToday, + unit: '', + } + ); + } return; - }, + } + + function text(me) { + me.type = 'text'; + me.value = me.device.Data; //number_format(me.device.Data, 1); + me.isSetpoint = false; + me.active = false; + me.fixed = true; + me.block.graph = false; + me.lastupdate = !me.block.last_update + ? false + : moment(me.device.LastUpdate).format(DT_dial.timeformat); + return; + } /** * Create the numbers for the dial face. * @param {object} me Core component object. */ - numbers: function(me) { + function numbers(me) { var x = me.min; var numbers = []; me.increment = (me.max - me.min) / (me.segments - 1); @@ -947,7 +1175,34 @@ var DT_dial = { x += me.increment; } return numbers; - }, -}; + } + + function getDefaultFormatting(field) { + var defaultFormatting = { + Humidity: { + decimals: 0, + unit: '%', + }, + Barometer: { + decimals: 0, + unit: 'hPa', + }, + Status: { + type: 'text', + }, + Level: { + decimals: 0, + unit: '', + }, + }; + + return defaultFormatting[field] || { decimals: 0 }; + } +})(); + Dashticz.register(DT_dial); -//# sourceURL=js/components/dial.js \ No newline at end of file + +function choose(a, b) { + return typeof a === 'undefined' ? b : a; +} +//# sourceURL=js/components/dial.js diff --git a/js/components/domoticzblock.js b/js/components/domoticzblock.js new file mode 100644 index 00000000..5577b5c2 --- /dev/null +++ b/js/components/domoticzblock.js @@ -0,0 +1,71 @@ +/* global Dashticz settings deviceUpdateHandler Domoticz*/ +//# sourceURL=js/components/domoticzblock.js +var DT_domoticzblock = (function () { + return { + name: 'domoticzblock', + canHandle: function (block) { + return block && block.idx; + }, + defaultCfg: { + width: 4, + batteryThreshold: settings.batteryThreshold, + icon: 'default', + }, + run: function (me) { + var block = me.block; + me.$mountPoint.html( + '
' + ); + me.deviceIdx = block.idx; + if (typeof block.idx === 'string') { + var idxSplit = block.idx.split('_'); + if (idxSplit.length == 2) { + var idx = parseInt(idxSplit[0]); + var subidx = parseInt(idxSplit[1]); + if (typeof idx === 'number' && typeof subidx === 'number') { + me.deviceIdx = idx; + me.subidx = subidx; + } + } + } + me.entry = me.mountPoint.slice(1); + + fixBlock(me); + addDeviceUpdateHandler(me); + }, + refresh: function (me) { + fixBlock(me); + deviceUpdateHandler(me.block); + }, + }; + + function fixBlock(me) { + //This function is needed to make it work with previous block definition + //refactoring needed in the future + var block = me.block; + if (block.icon === 'default') { + block.icon = undefined; + block.image = undefined; + } + if (block.icon) block.image = undefined; + block.$mountPoint = me.$mountPoint; + block.mountPoint = me.mountPoint; + block.entry = me.entry; + block.subidx = me.subidx; + block.device = Domoticz.getAllDevices()[me.deviceIdx]; + } + + function addDeviceUpdateHandler(me) { + var block = me.block; + Dashticz.subscribeDevice(me, me.deviceIdx, true, function (device) { + block.device = device; + deviceUpdateHandler(block); + }); + } +})(); + +Dashticz.register(DT_domoticzblock); diff --git a/vendor/flipclock/flipclock.css b/js/components/flipclock.css similarity index 85% rename from vendor/flipclock/flipclock.css rename to js/components/flipclock.css index 2914ce08..b6e7aa9b 100644 --- a/vendor/flipclock/flipclock.css +++ b/js/components/flipclock.css @@ -11,6 +11,7 @@ -ms-backface-visibility: hidden; -o-backface-visibility: hidden; backface-visibility: hidden; + padding: 0px; } .flip-clock-wrapper a { @@ -51,7 +52,9 @@ text-align: center; position: relative; width: 100%; - margin: 1em; + margin: calc(var(--flipclock-em) * 1); + display: flex; + justify-content: center; } .flip-clock-wrapper:before, @@ -63,17 +66,19 @@ clear: both; } +/* assuming flipclock-em==6px */ + /* Skeleton */ .flip-clock-wrapper ul { position: relative; float: left; - margin: 5px; - width: 60px; - height: 90px; - font-size: 80px; + margin: calc(var(--flipclock-em) * 5 / 6); + width: calc(var(--flipclock-em) * 60 / 6); + height: calc(var(--flipclock-em) * 90 / 6); + font-size: calc(var(--flipclock-em) * 80 / 6); font-weight: bold; - line-height: 87px; - border-radius: 6px; + line-height: calc(var(--flipclock-em) * 87 / 6); + border-radius: calc(var(--flipclock-em) * 6 / 6);; background: #000; } @@ -84,7 +89,8 @@ top: 0; width: 100%; height: 100%; - line-height: 87px; + line-height: calc(var(--flipclock-em) * 87 / 6); + text-decoration: none !important; } @@ -94,9 +100,9 @@ .flip-clock-wrapper ul li a { display: block; height: 100%; - -webkit-perspective: 200px; - -moz-perspective: 200px; - perspective: 200px; + -webkit-perspective: calc(var(--flipclock-em) * 200 / 6); + -moz-perspective: calc(var(--flipclock-em) * 200 / 6); + perspective: calc(var(--flipclock-em) * 200 / 6); margin: 0 !important; overflow: visible !important; cursor: default !important; } @@ -107,7 +113,7 @@ left: 0; width: 100%; height: 50%; - font-size: 80px; + font-size: calc(var(--flipclock-em) * 80 / 6); overflow: hidden; outline: 1px solid transparent; } @@ -128,11 +134,11 @@ .flip-clock-wrapper ul li a div.up:after { content: ""; position: absolute; - top: 44px; + top: calc(var(--flipclock-em) * 44 / 6); left: 0; z-index: 5; width: 100%; - height: 3px; + height: calc(var(--flipclock-em) * 3 / 6); background-color: #000; background-color: rgba(0, 0, 0, 0.4); } @@ -143,8 +149,8 @@ -o-transform-origin: 50% 0; transform-origin: 50% 0; bottom: 0; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; + border-bottom-left-radius: calc(var(--flipclock-em) * 6 / 6); + border-bottom-right-radius: calc(var(--flipclock-em) * 6 / 6); } .flip-clock-wrapper ul li a div div.inn { @@ -157,8 +163,9 @@ text-shadow: 0 1px 2px #000; text-align: center; background-color: #333; - border-radius: 6px; - font-size: 70px; } + border-radius: calc(var(--flipclock-em) * 6 / 6); + font-size: calc(var(--flipclock-em) * 70 / 6); + } .flip-clock-wrapper ul li a div.up div.inn { top: 0; } @@ -179,11 +186,10 @@ z-index: 5; } .flip-clock-divider { - float: left; display: inline-block; position: relative; - width: 20px; - height: 100px; } + width: calc(var(--flipclock-em) * 20 / 6); + height: calc(var(--flipclock-em) * 100 / 6); } .flip-clock-divider:first-child { width: 0; } @@ -191,31 +197,32 @@ .flip-clock-dot { display: block; background: #323434; - width: 10px; - height: 10px; + width: calc(var(--flipclock-em) * 10 / 6); + height: calc(var(--flipclock-em) * 10 / 6); position: absolute; border-radius: 50%; box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - left: 5px; } + left: calc(var(--flipclock-em) * 5 / 6); } .flip-clock-divider .flip-clock-label { position: absolute; - top: -1.5em; - right: -86px; +/* top: -1.5em;*/ + top: calc(var(--flipclock-em) * -1.5 ); + right: calc(var(--flipclock-em) * -86 / 6);; color: black; text-shadow: none; } .flip-clock-divider.minutes .flip-clock-label { - right: -88px; } + right: calc(var(--flipclock-em) * -88 / 6); } .flip-clock-divider.seconds .flip-clock-label { - right: -91px; } + right: calc(var(--flipclock-em) * -91 / 6);; } .flip-clock-dot.top { - top: 30px; } + top: calc(var(--flipclock-em) * 30 / 6); } .flip-clock-dot.bottom { - bottom: 30px; } + bottom: calc(var(--flipclock-em) * 30 / 6); } @-webkit-keyframes asd { 0% { diff --git a/js/components/flipclock.js b/js/components/flipclock.js new file mode 100644 index 00000000..70a47e5e --- /dev/null +++ b/js/components/flipclock.js @@ -0,0 +1,2734 @@ +/* global Dashticz settings DT_function*/ + +var DT_flipclock = { + name: 'flipclock', + init: function () { + return DT_function.loadCSS('./js/components/flipclock.css'); + }, + canHandle: function (block) { + return block && block.type && block.type === 'flipclock'; + }, + defaultCfg: function () { + return { + width: 12, + scale: 1, + showSecoonds: !settings['hide_seconds'], + clockFace: settings['shorttime'].match(/A/i) ? 12 : 24, + }; + }, + run: function (me) { + var width = me.block.size || $(me.mountPoint + ' .dt_content').width(); + document.documentElement.style.setProperty( + '--flipclock-em', + (width / 82) * me.block.scale + 'px' + ); + + FlipClock($(me.mountPoint + ' .dt_content'), { + clockFace: + me.block.clockFace == 12 ? 'TwelveHourClock' : 'TwentyFourHourClock', + showSeconds: me.block.showSeconds, + }); + }, +}; + +Dashticz.register(DT_flipclock); +//# sourceURL=js/components/flipclock.js + +/* + Base.js, version 1.1a + Copyright 2006-2010, Dean Edwards + License: http://www.opensource.org/licenses/mit-license.php +*/ + +var Base = function () { + // dummy +}; + +Base.extend = function (_instance, _static) { + // subclass + + 'use strict'; + + var extend = Base.prototype.extend; + + // build the prototype + Base._prototyping = true; + + var proto = new this(); + + extend.call(proto, _instance); + + proto.base = function () { + // call this method from any other method to invoke that method's ancestor + }; + + delete Base._prototyping; + + // create the wrapper for the constructor function + //var constructor = proto.constructor.valueOf(); //-dean + var constructor = proto.constructor; + var klass = (proto.constructor = function () { + if (!Base._prototyping) { + if (this._constructing || this.constructor == klass) { + // instantiation + this._constructing = true; + constructor.apply(this, arguments); + delete this._constructing; + } else if (arguments[0] !== null) { + // casting + return (arguments[0].extend || extend).call(arguments[0], proto); + } + } + }); + + // build the class interface + klass.ancestor = this; + klass.extend = this.extend; + klass.forEach = this.forEach; + klass.implement = this.implement; + klass.prototype = proto; + klass.toString = this.toString; + klass.valueOf = function (type) { + //return (type == "object") ? klass : constructor; //-dean + return type == 'object' ? klass : constructor.valueOf(); + }; + extend.call(klass, _static); + // class initialisation + if (typeof klass.init == 'function') klass.init(); + return klass; +}; + +Base.prototype = { + extend: function (source, value) { + if (arguments.length > 1) { + // extending with a name/value pair + var ancestor = this[source]; + if ( + ancestor && + typeof value == 'function' && // overriding a method? + // the valueOf() comparison is to avoid circular references + (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && + /\bbase\b/.test(value) + ) { + // get the underlying method + var method = value.valueOf(); + // override + value = function () { + var previous = this.base || Base.prototype.base; + this.base = ancestor; + var returnValue = method.apply(this, arguments); + this.base = previous; + return returnValue; + }; + // point to the underlying method + value.valueOf = function (type) { + return type == 'object' ? value : method; + }; + value.toString = Base.toString; + } + this[source] = value; + } else if (source) { + // extending with an object literal + var extend = Base.prototype.extend; + // if this object has a customised extend method then use it + if (!Base._prototyping && typeof this != 'function') { + extend = this.extend || extend; + } + var proto = { toSource: null }; + // do the "toString" and other methods manually + var hidden = ['constructor', 'toString', 'valueOf']; + // if we are prototyping then include the constructor + var i = Base._prototyping ? 0 : 1; + while ((key = hidden[i++])) { + if (source[key] != proto[key]) { + extend.call(this, key, source[key]); + } + } + // copy each of the source object's properties to this object + for (var key in source) { + if (!proto[key]) extend.call(this, key, source[key]); + } + } + return this; + }, +}; + +// initialise +Base = Base.extend( + { + constructor: function () { + this.extend(arguments[0]); + }, + }, + { + ancestor: Object, + version: '1.1', + + forEach: function (object, block, context) { + for (var key in object) { + if (this.prototype[key] === undefined) { + block.call(context, object[key], key, object); + } + } + }, + + implement: function () { + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == 'function') { + // if it's a function, call it + arguments[i](this.prototype); + } else { + // add the interface using the extend method + this.prototype.extend(arguments[i]); + } + } + return this; + }, + + toString: function () { + return String(this.valueOf()); + }, + } +); +/*jshint smarttabs:true */ + +var FlipClock; + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * FlipFlock Helper + * + * @param object A jQuery object or CSS select + * @param int An integer used to start the clock (no. seconds) + * @param object An object of properties to override the default + */ + + FlipClock = function (obj, digit, options) { + if (digit instanceof Object && digit instanceof Date === false) { + options = digit; + digit = 0; + } + + return new FlipClock.Factory(obj, digit, options); + }; + + /** + * The global FlipClock.Lang object + */ + + FlipClock.Lang = {}; + + /** + * The Base FlipClock class is used to extend all other FlipFlock + * classes. It handles the callbacks and the basic setters/getters + * + * @param object An object of the default properties + * @param object An object of properties to override the default + */ + + FlipClock.Base = Base.extend({ + /** + * Build Date + */ + + buildDate: '2014-12-12', + + /** + * Version + */ + + version: '0.7.7', + + /** + * Sets the default options + * + * @param object The default options + * @param object The override options + */ + + constructor: function (_default, options) { + if (typeof _default !== 'object') { + _default = {}; + } + if (typeof options !== 'object') { + options = {}; + } + this.setOptions($.extend(true, {}, _default, options)); + }, + + /** + * Delegates the callback to the defined method + * + * @param object The default options + * @param object The override options + */ + + callback: function (method) { + if (typeof method === 'function') { + var args = []; + + for (var x = 1; x <= arguments.length; x++) { + if (arguments[x]) { + args.push(arguments[x]); + } + } + + method.apply(this, args); + } + }, + + /** + * Log a string into the console if it exists + * + * @param string The name of the option + * @return mixed + */ + + log: function (str) { + if (window.console && console.log) { + console.log(str); + } + }, + + /** + * Get an single option value. Returns false if option does not exist + * + * @param string The name of the option + * @return mixed + */ + + getOption: function (index) { + if (this[index]) { + return this[index]; + } + return false; + }, + + /** + * Get all options + * + * @return bool + */ + + getOptions: function () { + return this; + }, + + /** + * Set a single option value + * + * @param string The name of the option + * @param mixed The value of the option + */ + + setOption: function (index, value) { + this[index] = value; + }, + + /** + * Set a multiple options by passing a JSON object + * + * @param object The object with the options + * @param mixed The value of the option + */ + + setOptions: function (options) { + for (var key in options) { + if (typeof options[key] !== 'undefined') { + this.setOption(key, options[key]); + } + } + }, + }); +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * The FlipClock Face class is the base class in which to extend + * all other FlockClock.Face classes. + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.Face = FlipClock.Base.extend({ + /** + * Sets whether or not the clock should start upon instantiation + */ + + autoStart: true, + + /** + * An array of jQuery objects used for the dividers (the colons) + */ + + dividers: [], + + /** + * An array of FlipClock.List objects + */ + + factory: false, + + /** + * An array of FlipClock.List objects + */ + + lists: [], + + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + this.dividers = []; + this.lists = []; + this.base(options); + this.factory = factory; + }, + + /** + * Build the clock face + */ + + build: function () { + if (this.autoStart) { + this.start(); + } + }, + + /** + * Creates a jQuery object used for the digit divider + * + * @param mixed The divider label text + * @param mixed Set true to exclude the dots in the divider. + * If not set, is false. + */ + + createDivider: function (label, css, excludeDots) { + if (typeof css == 'boolean' || !css) { + excludeDots = css; + css = label; + } + + var dots = [ + '', + '', + ].join(''); + + if (excludeDots) { + dots = ''; + } + + label = this.factory.localize(label); + + var html = [ + '', + '' + + (label ? label : '') + + '', + dots, + '', + ]; + + var $html = $(html.join('')); + + this.dividers.push($html); + + return $html; + }, + + /** + * Creates a FlipClock.List object and appends it to the DOM + * + * @param mixed The digit to select in the list + * @param object An object to override the default properties + */ + + createList: function (digit, options) { + if (typeof digit === 'object') { + options = digit; + digit = 0; + } + + var obj = new FlipClock.List(this.factory, digit, options); + + this.lists.push(obj); + + return obj; + }, + + /** + * Triggers when the clock is reset + */ + + reset: function () { + this.factory.time = new FlipClock.Time( + this.factory, + this.factory.original ? Math.round(this.factory.original) : 0, + { + minimumDigits: this.factory.minimumDigits, + } + ); + + this.flip(this.factory.original, false); + }, + + /** + * Append a newly created list to the clock + */ + + appendDigitToClock: function (obj) { + obj.$el.append(false); + }, + + /** + * Add a digit to the clock face + */ + + addDigit: function (digit) { + var obj = this.createList(digit, { + classes: { + active: this.factory.classes.active, + before: this.factory.classes.before, + flip: this.factory.classes.flip, + }, + }); + + this.appendDigitToClock(obj); + }, + + /** + * Triggers when the clock is started + */ + + start: function () {}, + + /** + * Triggers when the time on the clock stops + */ + + stop: function () {}, + + /** + * Auto increments/decrements the value of the clock face + */ + + autoIncrement: function () { + if (!this.factory.countdown) { + this.increment(); + } else { + this.decrement(); + } + }, + + /** + * Increments the value of the clock face + */ + + increment: function () { + this.factory.time.addSecond(); + }, + + /** + * Decrements the value of the clock face + */ + + decrement: function () { + if (this.factory.time.getTimeSeconds() == 0) { + this.factory.stop(); + } else { + this.factory.time.subSecond(); + } + }, + + /** + * Triggers when the numbers on the clock flip + */ + + flip: function (time, doNotAddPlayClass) { + var t = this; + + $.each(time, function (i, digit) { + var list = t.lists[i]; + + if (list) { + if (!doNotAddPlayClass && digit != list.digit) { + list.play(); + } + + list.select(digit); + } else { + t.addDigit(digit); + } + }); + }, + }); +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * The FlipClock Factory class is used to build the clock and manage + * all the public methods. + * + * @param object A jQuery object or CSS selector used to fetch + the wrapping DOM nodes + * @param mixed This is the digit used to set the clock. If an + object is passed, 0 will be used. + * @param object An object of properties to override the default + */ + + FlipClock.Factory = FlipClock.Base.extend({ + /** + * The clock's animation rate. + * + * Note, currently this property doesn't do anything. + * This property is here to be used in the future to + * programmaticaly set the clock's animation speed + */ + + animationRate: 1000, + + /** + * Auto start the clock on page load (True|False) + */ + + autoStart: true, + + /** + * The callback methods + */ + + callbacks: { + destroy: false, + create: false, + init: false, + interval: false, + start: false, + stop: false, + reset: false, + }, + + /** + * The CSS classes + */ + + classes: { + active: 'flip-clock-active', + before: 'flip-clock-before', + divider: 'flip-clock-divider', + dot: 'flip-clock-dot', + label: 'flip-clock-label', + flip: 'flip', + play: 'play', + wrapper: 'flip-clock-wrapper', + }, + + /** + * The name of the clock face class in use + */ + + clockFace: 'HourlyCounter', + + /** + * The name of the clock face class in use + */ + + countdown: false, + + /** + * The name of the default clock face class to use if the defined + * clockFace variable is not a valid FlipClock.Face object + */ + + defaultClockFace: 'HourlyCounter', + + /** + * The default language + */ + + defaultLanguage: 'english', + + /** + * The jQuery object + */ + + $el: false, + + /** + * The FlipClock.Face object + */ + + face: true, + + /** + * The language object after it has been loaded + */ + + lang: false, + + /** + * The language being used to display labels (string) + */ + + language: 'english', + + /** + * The minimum digits the clock must have + */ + + minimumDigits: 0, + + /** + * The original starting value of the clock. Used for the reset method. + */ + + original: false, + + /** + * Is the clock running? (True|False) + */ + + running: false, + + /** + * The FlipClock.Time object + */ + + time: false, + + /** + * The FlipClock.Timer object + */ + + timer: false, + + /** + * The jQuery object (depcrecated) + */ + + $wrapper: false, + + /** + * Constructor + * + * @param object The wrapping jQuery object + * @param object Number of seconds used to start the clock + * @param object An object override options + */ + + constructor: function (obj, digit, options) { + if (!options) { + options = {}; + } + + this.lists = []; + this.running = false; + this.base(options); + + this.$el = $(obj).addClass(this.classes.wrapper); + + // Depcrated support of the $wrapper property. + this.$wrapper = this.$el; + + this.original = + digit instanceof Date ? digit : digit ? Math.round(digit) : 0; + + this.time = new FlipClock.Time(this, this.original, { + minimumDigits: this.minimumDigits, + animationRate: this.animationRate, + }); + + this.timer = new FlipClock.Timer(this, options); + + this.loadLanguage(this.language); + + this.loadClockFace(this.clockFace, options); + + if (this.autoStart) { + this.start(); + } + }, + + /** + * Load the FlipClock.Face object + * + * @param object The name of the FlickClock.Face class + * @param object An object override options + */ + + loadClockFace: function (name, options) { + var face, + suffix = 'Face', + hasStopped = false; + + name = name.ucfirst() + suffix; + + if (this.face.stop) { + this.stop(); + hasStopped = true; + } + + this.$el.html(''); + + this.time.minimumDigits = this.minimumDigits; + + if (FlipClock[name]) { + face = new FlipClock[name](this, options); + } else { + face = new FlipClock[this.defaultClockFace + suffix](this, options); + } + + face.build(); + + this.face = face; + + if (hasStopped) { + this.start(); + } + + return this.face; + }, + + /** + * Load the FlipClock.Lang object + * + * @param object The name of the language to load + */ + + loadLanguage: function (name) { + var lang; + + if (FlipClock.Lang[name.ucfirst()]) { + lang = FlipClock.Lang[name.ucfirst()]; + } else if (FlipClock.Lang[name]) { + lang = FlipClock.Lang[name]; + } else { + lang = FlipClock.Lang[this.defaultLanguage]; + } + + return (this.lang = lang); + }, + + /** + * Localize strings into various languages + * + * @param string The index of the localized string + * @param object Optionally pass a lang object + */ + + localize: function (index, obj) { + var lang = this.lang; + + if (!index) { + return null; + } + + var lindex = index.toLowerCase(); + + if (typeof obj == 'object') { + lang = obj; + } + + if (lang && lang[lindex]) { + return lang[lindex]; + } + + return index; + }, + + /** + * Starts the clock + */ + + start: function (callback) { + var t = this; + + if (!t.running && (!t.countdown || (t.countdown && t.time.time > 0))) { + t.face.start(t.time); + t.timer.start(function () { + t.flip(); + + if (typeof callback === 'function') { + callback(); + } + }); + } else { + t.log('Trying to start timer when countdown already at 0'); + } + }, + + /** + * Stops the clock + */ + + stop: function (callback) { + this.face.stop(); + this.timer.stop(callback); + + for (var x in this.lists) { + if (this.lists.hasOwnProperty(x)) { + this.lists[x].stop(); + } + } + }, + + /** + * Reset the clock + */ + + reset: function (callback) { + this.timer.reset(callback); + this.face.reset(); + }, + + /** + * Sets the clock time + */ + + setTime: function (time) { + this.time.time = time; + this.flip(true); + }, + + /** + * Get the clock time + * + * @return object Returns a FlipClock.Time object + */ + + getTime: function (time) { + return this.time; + }, + + /** + * Changes the increment of time to up or down (add/sub) + */ + + setCountdown: function (value) { + var running = this.running; + + this.countdown = value ? true : false; + + if (running) { + this.stop(); + this.start(); + } + }, + + /** + * Flip the digits on the clock + * + * @param array An array of digits + */ + flip: function (doNotAddPlayClass) { + this.face.flip(false, doNotAddPlayClass); + }, + }); +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * The FlipClock List class is used to build the list used to create + * the card flip effect. This object fascilates selecting the correct + * node by passing a specific digit. + * + * @param object A FlipClock.Factory object + * @param mixed This is the digit used to set the clock. If an + * object is passed, 0 will be used. + * @param object An object of properties to override the default + */ + + FlipClock.List = FlipClock.Base.extend({ + /** + * The digit (0-9) + */ + + digit: 0, + + /** + * The CSS classes + */ + + classes: { + active: 'flip-clock-active', + before: 'flip-clock-before', + flip: 'flip', + }, + + /** + * The parent FlipClock.Factory object + */ + + factory: false, + + /** + * The jQuery object + */ + + $el: false, + + /** + * The jQuery object (deprecated) + */ + + $obj: false, + + /** + * The items in the list + */ + + items: [], + + /** + * The last digit + */ + + lastDigit: 0, + + /** + * Constructor + * + * @param object A FlipClock.Factory object + * @param int An integer use to select the correct digit + * @param object An object to override the default properties + */ + + constructor: function (factory, digit, options) { + this.factory = factory; + this.digit = digit; + this.lastDigit = digit; + this.$el = this.createList(); + + // Depcrated support of the $obj property. + this.$obj = this.$el; + + if (digit > 0) { + this.select(digit); + } + + this.factory.$el.append(this.$el); + }, + + /** + * Select the digit in the list + * + * @param int A digit 0-9 + */ + + select: function (digit) { + if (typeof digit === 'undefined') { + digit = this.digit; + } else { + this.digit = digit; + } + + if (this.digit != this.lastDigit) { + var $delete = this.$el + .find('.' + this.classes.before) + .removeClass(this.classes.before); + + this.$el + .find('.' + this.classes.active) + .removeClass(this.classes.active) + .addClass(this.classes.before); + + this.appendListItem(this.classes.active, this.digit); + + $delete.remove(); + + this.lastDigit = this.digit; + } + }, + + /** + * Adds the play class to the DOM object + */ + + play: function () { + this.$el.addClass(this.factory.classes.play); + }, + + /** + * Removes the play class to the DOM object + */ + + stop: function () { + var t = this; + + setTimeout(function () { + t.$el.removeClass(t.factory.classes.play); + }, this.factory.timer.interval); + }, + + /** + * Creates the list item HTML and returns as a string + */ + + createListItem: function (css, value) { + return [ + '
  • ', + '', + '
    ', + '
    ', + '
    ' + (value ? value : '') + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + (value ? value : '') + '
    ', + '
    ', + '
    ', + '
  • ', + ].join(''); + }, + + /** + * Append the list item to the parent DOM node + */ + + appendListItem: function (css, value) { + var html = this.createListItem(css, value); + + this.$el.append(html); + }, + + /** + * Create the list of digits and appends it to the DOM object + */ + + createList: function () { + var lastDigit = this.getPrevDigit() ? this.getPrevDigit() : this.digit; + + var html = $( + [ + '
      ', + this.createListItem(this.classes.before, lastDigit), + this.createListItem(this.classes.active, this.digit), + '
    ', + ].join('') + ); + + return html; + }, + + getNextDigit: function () { + return this.digit == 9 ? 0 : this.digit + 1; + }, + + getPrevDigit: function () { + return this.digit == 0 ? 9 : this.digit - 1; + }, + }); +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * Capitalize the first letter in a string + * + * @return string + */ + + String.prototype.ucfirst = function () { + return this.substr(0, 1).toUpperCase() + this.substr(1); + }; + + /** + * jQuery helper method + * + * @param int An integer used to start the clock (no. seconds) + * @param object An object of properties to override the default + */ + + $.fn.FlipClock = function (digit, options) { + return new FlipClock($(this), digit, options); + }; + + /** + * jQuery helper method + * + * @param int An integer used to start the clock (no. seconds) + * @param object An object of properties to override the default + */ + + $.fn.flipClock = function (digit, options) { + return $.fn.FlipClock(digit, options); + }; +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * The FlipClock Time class is used to manage all the time + * calculations. + * + * @param object A FlipClock.Factory object + * @param mixed This is the digit used to set the clock. If an + * object is passed, 0 will be used. + * @param object An object of properties to override the default + */ + + FlipClock.Time = FlipClock.Base.extend({ + /** + * The time (in seconds) or a date object + */ + + time: 0, + + /** + * The parent FlipClock.Factory object + */ + + factory: false, + + /** + * The minimum number of digits the clock face must have + */ + + minimumDigits: 0, + + /** + * Constructor + * + * @param object A FlipClock.Factory object + * @param int An integer use to select the correct digit + * @param object An object to override the default properties + */ + + constructor: function (factory, time, options) { + if (typeof options != 'object') { + options = {}; + } + + if (!options.minimumDigits) { + options.minimumDigits = factory.minimumDigits; + } + + this.base(options); + this.factory = factory; + + if (time) { + this.time = time; + } + }, + + /** + * Convert a string or integer to an array of digits + * + * @param mixed String or Integer of digits + * @return array An array of digits + */ + + convertDigitsToArray: function (str) { + var data = []; + + str = str.toString(); + + for (var x = 0; x < str.length; x++) { + if (str[x].match(/^\d*$/g)) { + data.push(str[x]); + } + } + + return data; + }, + + /** + * Get a specific digit from the time integer + * + * @param int The specific digit to select from the time + * @return mixed Returns FALSE if no digit is found, otherwise + * the method returns the defined digit + */ + + digit: function (i) { + var timeStr = this.toString(); + var length = timeStr.length; + + if (timeStr[length - i]) { + return timeStr[length - i]; + } + + return false; + }, + + /** + * Formats any array of digits into a valid array of digits + * + * @param mixed An array of digits + * @return array An array of digits + */ + + digitize: function (obj) { + var data = []; + + $.each(obj, function (i, value) { + value = value.toString(); + + if (value.length == 1) { + value = '0' + value; + } + + for (var x = 0; x < value.length; x++) { + data.push(value.charAt(x)); + } + }); + + if (data.length > this.minimumDigits) { + this.minimumDigits = data.length; + } + + if (this.minimumDigits > data.length) { + for (var x = data.length; x < this.minimumDigits; x++) { + data.unshift('0'); + } + } + + return data; + }, + + /** + * Gets a new Date object for the current time + * + * @return array Returns a Date object + */ + + getDateObject: function () { + if (this.time instanceof Date) { + return this.time; + } + + return new Date(new Date().getTime() + this.getTimeSeconds() * 1000); + }, + + /** + * Gets a digitized daily counter + * + * @return object Returns a digitized object + */ + + getDayCounter: function (includeSeconds) { + var digits = [this.getDays(), this.getHours(true), this.getMinutes(true)]; + + if (includeSeconds) { + digits.push(this.getSeconds(true)); + } + + return this.digitize(digits); + }, + + /** + * Gets number of days + * + * @param bool Should perform a modulus? If not sent, then no. + * @return int Retuns a floored integer + */ + + getDays: function (mod) { + var days = this.getTimeSeconds() / 60 / 60 / 24; + + if (mod) { + days = days % 7; + } + + return Math.floor(days); + }, + + /** + * Gets an hourly breakdown + * + * @return object Returns a digitized object + */ + + getHourCounter: function () { + var obj = this.digitize([ + this.getHours(), + this.getMinutes(true), + this.getSeconds(true), + ]); + + return obj; + }, + + /** + * Gets an hourly breakdown + * + * @return object Returns a digitized object + */ + + getHourly: function () { + return this.getHourCounter(); + }, + + /** + * Gets number of hours + * + * @param bool Should perform a modulus? If not sent, then no. + * @return int Retuns a floored integer + */ + + getHours: function (mod) { + var hours = this.getTimeSeconds() / 60 / 60; + + if (mod) { + hours = hours % 24; + } + + return Math.floor(hours); + }, + + /** + * Gets the twenty-four hour time + * + * @return object returns a digitized object + */ + + getMilitaryTime: function (date, showSeconds) { + if (typeof showSeconds === 'undefined') { + showSeconds = true; + } + + if (!date) { + date = this.getDateObject(); + } + + var data = [date.getHours(), date.getMinutes()]; + + if (showSeconds === true) { + data.push(date.getSeconds()); + } + + return this.digitize(data); + }, + + /** + * Gets number of minutes + * + * @param bool Should perform a modulus? If not sent, then no. + * @return int Retuns a floored integer + */ + + getMinutes: function (mod) { + var minutes = this.getTimeSeconds() / 60; + + if (mod) { + minutes = minutes % 60; + } + + return Math.floor(minutes); + }, + + /** + * Gets a minute breakdown + */ + + getMinuteCounter: function () { + var obj = this.digitize([this.getMinutes(), this.getSeconds(true)]); + + return obj; + }, + + /** + * Gets time count in seconds regardless of if targetting date or not. + * + * @return int Returns a floored integer + */ + + getTimeSeconds: function (date) { + if (!date) { + date = new Date(); + } + + if (this.time instanceof Date) { + if (this.factory.countdown) { + return Math.max( + this.time.getTime() / 1000 - date.getTime() / 1000, + 0 + ); + } else { + return date.getTime() / 1000 - this.time.getTime() / 1000; + } + } else { + return this.time; + } + }, + + /** + * Gets the current twelve hour time + * + * @return object Returns a digitized object + */ + + getTime: function (date, showSeconds) { + if (typeof showSeconds === 'undefined') { + showSeconds = true; + } + + if (!date) { + date = this.getDateObject(); + } + + console.log(date); + + var hours = date.getHours(); + var merid = hours > 12 ? 'PM' : 'AM'; + var data = [ + hours > 12 ? hours - 12 : hours === 0 ? 12 : hours, + date.getMinutes(), + ]; + + if (showSeconds === true) { + data.push(date.getSeconds()); + } + + return this.digitize(data); + }, + + /** + * Gets number of seconds + * + * @param bool Should perform a modulus? If not sent, then no. + * @return int Retuns a ceiled integer + */ + + getSeconds: function (mod) { + var seconds = this.getTimeSeconds(); + + if (mod) { + if (seconds == 60) { + seconds = 0; + } else { + seconds = seconds % 60; + } + } + + return Math.ceil(seconds); + }, + + /** + * Gets number of weeks + * + * @param bool Should perform a modulus? If not sent, then no. + * @return int Retuns a floored integer + */ + + getWeeks: function (mod) { + var weeks = this.getTimeSeconds() / 60 / 60 / 24 / 7; + + if (mod) { + weeks = weeks % 52; + } + + return Math.floor(weeks); + }, + + /** + * Removes a specific number of leading zeros from the array. + * This method prevents you from removing too many digits, even + * if you try. + * + * @param int Total number of digits to remove + * @return array An array of digits + */ + + removeLeadingZeros: function (totalDigits, digits) { + var total = 0; + var newArray = []; + + $.each(digits, function (i, digit) { + if (i < totalDigits) { + total += parseInt(digits[i], 10); + } else { + newArray.push(digits[i]); + } + }); + + if (total === 0) { + return newArray; + } + + return digits; + }, + + /** + * Adds X second to the current time + */ + + addSeconds: function (x) { + if (this.time instanceof Date) { + this.time.setSeconds(this.time.getSeconds() + x); + } else { + this.time += x; + } + }, + + /** + * Adds 1 second to the current time + */ + + addSecond: function () { + this.addSeconds(1); + }, + + /** + * Substracts X seconds from the current time + */ + + subSeconds: function (x) { + if (this.time instanceof Date) { + this.time.setSeconds(this.time.getSeconds() - x); + } else { + this.time -= x; + } + }, + + /** + * Substracts 1 second from the current time + */ + + subSecond: function () { + this.subSeconds(1); + }, + + /** + * Converts the object to a human readable string + */ + + toString: function () { + return this.getTimeSeconds().toString(); + }, + + /* + getYears: function() { + return Math.floor(this.time / 60 / 60 / 24 / 7 / 52); + }, + + getDecades: function() { + return Math.floor(this.getWeeks() / 10); + }*/ + }); +})(jQuery); + +/*jshint smarttabs:true */ + +/** + * FlipClock.js + * + * @author Justin Kimbrell + * @copyright 2013 - Objective HTML, LLC + * @licesnse http://www.opensource.org/licenses/mit-license.php + */ + +(function ($) { + 'use strict'; + + /** + * The FlipClock.Timer object managers the JS timers + * + * @param object The parent FlipClock.Factory object + * @param object Override the default options + */ + + FlipClock.Timer = FlipClock.Base.extend({ + /** + * Callbacks + */ + + callbacks: { + destroy: false, + create: false, + init: false, + interval: false, + start: false, + stop: false, + reset: false, + }, + + /** + * FlipClock timer count (how many intervals have passed) + */ + + count: 0, + + /** + * The parent FlipClock.Factory object + */ + + factory: false, + + /** + * Timer interval (1 second by default) + */ + + interval: 1000, + + /** + * The rate of the animation in milliseconds (not currently in use) + */ + + animationRate: 1000, + + /** + * Constructor + * + * @return void + */ + + constructor: function (factory, options) { + this.base(options); + this.factory = factory; + this.callback(this.callbacks.init); + this.callback(this.callbacks.create); + }, + + /** + * This method gets the elapsed the time as an interger + * + * @return void + */ + + getElapsed: function () { + return this.count * this.interval; + }, + + /** + * This method gets the elapsed the time as a Date object + * + * @return void + */ + + getElapsedTime: function () { + return new Date(this.time + this.getElapsed()); + }, + + /** + * This method is resets the timer + * + * @param callback This method resets the timer back to 0 + * @return void + */ + + reset: function (callback) { + clearInterval(this.timer); + this.count = 0; + this._setInterval(callback); + this.callback(this.callbacks.reset); + }, + + /** + * This method is starts the timer + * + * @param callback A function that is called once the timer is destroyed + * @return void + */ + + start: function (callback) { + this.factory.running = true; + this._createTimer(callback); + this.callback(this.callbacks.start); + }, + + /** + * This method is stops the timer + * + * @param callback A function that is called once the timer is destroyed + * @return void + */ + + stop: function (callback) { + this.factory.running = false; + this._clearInterval(callback); + this.callback(this.callbacks.stop); + this.callback(callback); + }, + + /** + * Clear the timer interval + * + * @return void + */ + + _clearInterval: function () { + clearInterval(this.timer); + }, + + /** + * Create the timer object + * + * @param callback A function that is called once the timer is created + * @return void + */ + + _createTimer: function (callback) { + this._setInterval(callback); + }, + + /** + * Destroy the timer object + * + * @param callback A function that is called once the timer is destroyed + * @return void + */ + + _destroyTimer: function (callback) { + this._clearInterval(); + this.timer = false; + this.callback(callback); + this.callback(this.callbacks.destroy); + }, + + /** + * This method is called each time the timer interval is ran + * + * @param callback A function that is called once the timer is destroyed + * @return void + */ + + _interval: function (callback) { + this.callback(this.callbacks.interval); + this.callback(callback); + this.count++; + }, + + /** + * This sets the timer interval + * + * @param callback A function that is called once the timer is destroyed + * @return void + */ + + _setInterval: function (callback) { + var t = this; + + t._interval(callback); + + t.timer = setInterval(function () { + t._interval(callback); + }, this.interval); + }, + }); +})(jQuery); + +(function ($) { + /** + * Twenty-Four Hour Clock Face + * + * This class will generate a twenty-four our clock for FlipClock.js + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.TwentyFourHourClockFace = FlipClock.Face.extend({ + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + this.base(factory, options); + }, + + /** + * Build the clock face + * + * @param object Pass the time that should be used to display on the clock. + */ + + build: function (time) { + var t = this; + var children = this.factory.$el.find('ul'); + + if (!this.factory.time.time) { + this.factory.original = new Date(); + + this.factory.time = new FlipClock.Time( + this.factory, + this.factory.original + ); + } + + var time = time + ? time + : this.factory.time.getMilitaryTime(false, this.showSeconds); + + if (time.length > children.length) { + $.each(time, function (i, digit) { + t.createList(digit); + }); + } + + this.createDivider(); + this.createDivider(); + + $(this.dividers[0]).insertBefore(this.lists[this.lists.length - 2].$el); + $(this.dividers[1]).insertBefore(this.lists[this.lists.length - 4].$el); + + this.base(); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + this.autoIncrement(); + + time = time + ? time + : this.factory.time.getMilitaryTime(false, this.showSeconds); + + this.base(time, doNotAddPlayClass); + }, + }); +})(jQuery); +(function ($) { + /** + * Counter Clock Face + * + * This class will generate a generice flip counter. The timer has been + * disabled. clock.increment() and clock.decrement() have been added. + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.CounterFace = FlipClock.Face.extend({ + /** + * Tells the counter clock face if it should auto-increment + */ + + shouldAutoIncrement: false, + + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + if (typeof options != 'object') { + options = {}; + } + + factory.autoStart = options.autoStart ? true : false; + + if (options.autoStart) { + this.shouldAutoIncrement = true; + } + + factory.increment = function () { + factory.countdown = false; + factory.setTime(factory.getTime().getTimeSeconds() + 1); + }; + + factory.decrement = function () { + factory.countdown = true; + var time = factory.getTime().getTimeSeconds(); + if (time > 0) { + factory.setTime(time - 1); + } + }; + + factory.setValue = function (digits) { + factory.setTime(digits); + }; + + factory.setCounter = function (digits) { + factory.setTime(digits); + }; + + this.base(factory, options); + }, + + /** + * Build the clock face + */ + + build: function () { + var t = this; + var children = this.factory.$el.find('ul'); + var time = this.factory.getTime().digitize([this.factory.getTime().time]); + + if (time.length > children.length) { + $.each(time, function (i, digit) { + var list = t.createList(digit); + + list.select(digit); + }); + } + + $.each(this.lists, function (i, list) { + list.play(); + }); + + this.base(); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + if (this.shouldAutoIncrement) { + this.autoIncrement(); + } + + if (!time) { + time = this.factory.getTime().digitize([this.factory.getTime().time]); + } + + this.base(time, doNotAddPlayClass); + }, + + /** + * Reset the clock face + */ + + reset: function () { + this.factory.time = new FlipClock.Time( + this.factory, + this.factory.original ? Math.round(this.factory.original) : 0 + ); + + this.flip(); + }, + }); +})(jQuery); +(function ($) { + /** + * Daily Counter Clock Face + * + * This class will generate a daily counter for FlipClock.js. A + * daily counter will track days, hours, minutes, and seconds. If + * the number of available digits is exceeded in the count, a new + * digit will be created. + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.DailyCounterFace = FlipClock.Face.extend({ + showSeconds: true, + + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + this.base(factory, options); + }, + + /** + * Build the clock face + */ + + build: function (time) { + var t = this; + var children = this.factory.$el.find('ul'); + var offset = 0; + + time = time ? time : this.factory.time.getDayCounter(this.showSeconds); + + if (time.length > children.length) { + $.each(time, function (i, digit) { + t.createList(digit); + }); + } + + if (this.showSeconds) { + $(this.createDivider('Seconds')).insertBefore( + this.lists[this.lists.length - 2].$el + ); + } else { + offset = 2; + } + + $(this.createDivider('Minutes')).insertBefore( + this.lists[this.lists.length - 4 + offset].$el + ); + $(this.createDivider('Hours')).insertBefore( + this.lists[this.lists.length - 6 + offset].$el + ); + $(this.createDivider('Days', true)).insertBefore(this.lists[0].$el); + + this.base(); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + if (!time) { + time = this.factory.time.getDayCounter(this.showSeconds); + } + + this.autoIncrement(); + + this.base(time, doNotAddPlayClass); + }, + }); +})(jQuery); +(function ($) { + /** + * Hourly Counter Clock Face + * + * This class will generate an hourly counter for FlipClock.js. An + * hour counter will track hours, minutes, and seconds. If number of + * available digits is exceeded in the count, a new digit will be + * created. + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.HourlyCounterFace = FlipClock.Face.extend({ + // clearExcessDigits: true, + + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + this.base(factory, options); + }, + + /** + * Build the clock face + */ + + build: function (excludeHours, time) { + var t = this; + var children = this.factory.$el.find('ul'); + + time = time ? time : this.factory.time.getHourCounter(); + + if (time.length > children.length) { + $.each(time, function (i, digit) { + t.createList(digit); + }); + } + + $(this.createDivider('Seconds')).insertBefore( + this.lists[this.lists.length - 2].$el + ); + $(this.createDivider('Minutes')).insertBefore( + this.lists[this.lists.length - 4].$el + ); + + if (!excludeHours) { + $(this.createDivider('Hours', true)).insertBefore(this.lists[0].$el); + } + + this.base(); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + if (!time) { + time = this.factory.time.getHourCounter(); + } + + this.autoIncrement(); + + this.base(time, doNotAddPlayClass); + }, + + /** + * Append a newly created list to the clock + */ + + appendDigitToClock: function (obj) { + this.base(obj); + + this.dividers[0].insertAfter(this.dividers[0].next()); + }, + }); +})(jQuery); +(function ($) { + /** + * Minute Counter Clock Face + * + * This class will generate a minute counter for FlipClock.js. A + * minute counter will track minutes and seconds. If an hour is + * reached, the counter will reset back to 0. (4 digits max) + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.MinuteCounterFace = FlipClock.HourlyCounterFace.extend({ + clearExcessDigits: false, + + /** + * Constructor + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + constructor: function (factory, options) { + this.base(factory, options); + }, + + /** + * Build the clock face + */ + + build: function () { + this.base(true, this.factory.time.getMinuteCounter()); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + if (!time) { + time = this.factory.time.getMinuteCounter(); + } + + this.base(time, doNotAddPlayClass); + }, + }); +})(jQuery); +(function ($) { + /** + * Twelve Hour Clock Face + * + * This class will generate a twelve hour clock for FlipClock.js + * + * @param object The parent FlipClock.Factory object + * @param object An object of properties to override the default + */ + + FlipClock.TwelveHourClockFace = FlipClock.TwentyFourHourClockFace.extend({ + /** + * The meridium jQuery DOM object + */ + + meridium: false, + + /** + * The meridium text as string for easy access + */ + + meridiumText: 'AM', + + /** + * Build the clock face + * + * @param object Pass the time that should be used to display on the clock. + */ + + build: function () { + var t = this; + + var time = this.factory.time.getTime(false, this.showSeconds); + + this.base(time); + this.meridiumText = this.getMeridium(); + this.meridium = $( + [ + '', + ].join('') + ); + + this.meridium.insertAfter(this.lists[this.lists.length - 1].$el); + }, + + /** + * Flip the clock face + */ + + flip: function (time, doNotAddPlayClass) { + if (this.meridiumText != this.getMeridium()) { + this.meridiumText = this.getMeridium(); + this.meridium.find('a').html(this.meridiumText); + } + this.base( + this.factory.time.getTime(false, this.showSeconds), + doNotAddPlayClass + ); + }, + + /** + * Get the current meridium + * + * @return string Returns the meridium (AM|PM) + */ + + getMeridium: function () { + return new Date().getHours() >= 12 ? 'PM' : 'AM'; + }, + + /** + * Is it currently in the post-medirium? + * + * @return bool Returns true or false + */ + + isPM: function () { + return this.getMeridium() == 'PM' ? true : false; + }, + + /** + * Is it currently before the post-medirium? + * + * @return bool Returns true or false + */ + + isAM: function () { + return this.getMeridium() == 'AM' ? true : false; + }, + }); +})(jQuery); +(function ($) { + /** + * FlipClock Arabic Language Pack + * + * This class will be used to translate tokens into the Arabic language. + * + */ + + FlipClock.Lang.Arabic = { + years: 'سنوات', + months: 'شهور', + days: 'أيام', + hours: 'ساعات', + minutes: 'دقائق', + seconds: 'ثواني', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['ar'] = FlipClock.Lang.Arabic; + FlipClock.Lang['ar-ar'] = FlipClock.Lang.Arabic; + FlipClock.Lang['arabic'] = FlipClock.Lang.Arabic; +})(jQuery); +(function ($) { + /** + * FlipClock Danish Language Pack + * + * This class will used to translate tokens into the Danish language. + * + */ + + FlipClock.Lang.Danish = { + years: 'År', + months: 'Måneder', + days: 'Dage', + hours: 'Timer', + minutes: 'Minutter', + seconds: 'Sekunder', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['da'] = FlipClock.Lang.Danish; + FlipClock.Lang['da-dk'] = FlipClock.Lang.Danish; + FlipClock.Lang['danish'] = FlipClock.Lang.Danish; +})(jQuery); +(function ($) { + /** + * FlipClock German Language Pack + * + * This class will used to translate tokens into the German language. + * + */ + + FlipClock.Lang.German = { + years: 'Jahre', + months: 'Monate', + days: 'Tage', + hours: 'Stunden', + minutes: 'Minuten', + seconds: 'Sekunden', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['de'] = FlipClock.Lang.German; + FlipClock.Lang['de-de'] = FlipClock.Lang.German; + FlipClock.Lang['german'] = FlipClock.Lang.German; +})(jQuery); +(function ($) { + /** + * FlipClock English Language Pack + * + * This class will used to translate tokens into the English language. + * + */ + + FlipClock.Lang.English = { + years: 'Years', + months: 'Months', + days: 'Days', + hours: 'Hours', + minutes: 'Minutes', + seconds: 'Seconds', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['en'] = FlipClock.Lang.English; + FlipClock.Lang['en-us'] = FlipClock.Lang.English; + FlipClock.Lang['english'] = FlipClock.Lang.English; +})(jQuery); +(function ($) { + /** + * FlipClock Spanish Language Pack + * + * This class will used to translate tokens into the Spanish language. + * + */ + + FlipClock.Lang.Spanish = { + years: 'Años', + months: 'Meses', + days: 'Días', + hours: 'Horas', + minutes: 'Minutos', + seconds: 'Segundos', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['es'] = FlipClock.Lang.Spanish; + FlipClock.Lang['es-es'] = FlipClock.Lang.Spanish; + FlipClock.Lang['spanish'] = FlipClock.Lang.Spanish; +})(jQuery); +(function ($) { + /** + * FlipClock Finnish Language Pack + * + * This class will used to translate tokens into the Finnish language. + * + */ + + FlipClock.Lang.Finnish = { + years: 'Vuotta', + months: 'Kuukautta', + days: 'Päivää', + hours: 'Tuntia', + minutes: 'Minuuttia', + seconds: 'Sekuntia', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['fi'] = FlipClock.Lang.Finnish; + FlipClock.Lang['fi-fi'] = FlipClock.Lang.Finnish; + FlipClock.Lang['finnish'] = FlipClock.Lang.Finnish; +})(jQuery); + +(function ($) { + /** + * FlipClock Canadian French Language Pack + * + * This class will used to translate tokens into the Canadian French language. + * + */ + + FlipClock.Lang.French = { + years: 'Ans', + months: 'Mois', + days: 'Jours', + hours: 'Heures', + minutes: 'Minutes', + seconds: 'Secondes', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['fr'] = FlipClock.Lang.French; + FlipClock.Lang['fr-ca'] = FlipClock.Lang.French; + FlipClock.Lang['french'] = FlipClock.Lang.French; +})(jQuery); + +(function ($) { + /** + * FlipClock Italian Language Pack + * + * This class will used to translate tokens into the Italian language. + * + */ + + FlipClock.Lang.Italian = { + years: 'Anni', + months: 'Mesi', + days: 'Giorni', + hours: 'Ore', + minutes: 'Minuti', + seconds: 'Secondi', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['it'] = FlipClock.Lang.Italian; + FlipClock.Lang['it-it'] = FlipClock.Lang.Italian; + FlipClock.Lang['italian'] = FlipClock.Lang.Italian; +})(jQuery); + +(function ($) { + /** + * FlipClock Latvian Language Pack + * + * This class will used to translate tokens into the Latvian language. + * + */ + + FlipClock.Lang.Latvian = { + years: 'Gadi', + months: 'Mēneši', + days: 'Dienas', + hours: 'Stundas', + minutes: 'Minūtes', + seconds: 'Sekundes', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['lv'] = FlipClock.Lang.Latvian; + FlipClock.Lang['lv-lv'] = FlipClock.Lang.Latvian; + FlipClock.Lang['latvian'] = FlipClock.Lang.Latvian; +})(jQuery); +(function ($) { + /** + * FlipClock Dutch Language Pack + * + * This class will used to translate tokens into the Dutch language. + */ + + FlipClock.Lang.Dutch = { + years: 'Jaren', + months: 'Maanden', + days: 'Dagen', + hours: 'Uren', + minutes: 'Minuten', + seconds: 'Seconden', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['nl'] = FlipClock.Lang.Dutch; + FlipClock.Lang['nl-be'] = FlipClock.Lang.Dutch; + FlipClock.Lang['dutch'] = FlipClock.Lang.Dutch; +})(jQuery); + +(function ($) { + /** + * FlipClock Norwegian-Bokmål Language Pack + * + * This class will used to translate tokens into the Norwegian language. + * + */ + + FlipClock.Lang.Norwegian = { + years: 'År', + months: 'Måneder', + days: 'Dager', + hours: 'Timer', + minutes: 'Minutter', + seconds: 'Sekunder', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['no'] = FlipClock.Lang.Norwegian; + FlipClock.Lang['nb'] = FlipClock.Lang.Norwegian; + FlipClock.Lang['no-nb'] = FlipClock.Lang.Norwegian; + FlipClock.Lang['norwegian'] = FlipClock.Lang.Norwegian; +})(jQuery); + +(function ($) { + /** + * FlipClock Portuguese Language Pack + * + * This class will used to translate tokens into the Portuguese language. + * + */ + + FlipClock.Lang.Portuguese = { + years: 'Anos', + months: 'Meses', + days: 'Dias', + hours: 'Horas', + minutes: 'Minutos', + seconds: 'Segundos', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['pt'] = FlipClock.Lang.Portuguese; + FlipClock.Lang['pt-br'] = FlipClock.Lang.Portuguese; + FlipClock.Lang['portuguese'] = FlipClock.Lang.Portuguese; +})(jQuery); +(function ($) { + /** + * FlipClock Russian Language Pack + * + * This class will used to translate tokens into the Russian language. + * + */ + + FlipClock.Lang.Russian = { + years: 'лет', + months: 'месяцев', + days: 'дней', + hours: 'часов', + minutes: 'минут', + seconds: 'секунд', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['ru'] = FlipClock.Lang.Russian; + FlipClock.Lang['ru-ru'] = FlipClock.Lang.Russian; + FlipClock.Lang['russian'] = FlipClock.Lang.Russian; +})(jQuery); +(function ($) { + /** + * FlipClock Swedish Language Pack + * + * This class will used to translate tokens into the Swedish language. + * + */ + + FlipClock.Lang.Swedish = { + years: 'År', + months: 'Månader', + days: 'Dagar', + hours: 'Timmar', + minutes: 'Minuter', + seconds: 'Sekunder', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['sv'] = FlipClock.Lang.Swedish; + FlipClock.Lang['sv-se'] = FlipClock.Lang.Swedish; + FlipClock.Lang['swedish'] = FlipClock.Lang.Swedish; +})(jQuery); + +(function ($) { + /** + * FlipClock Chinese Language Pack + * + * This class will used to translate tokens into the Chinese language. + * + */ + + FlipClock.Lang.Chinese = { + years: '年', + months: '月', + days: '日', + hours: '时', + minutes: '分', + seconds: '秒', + }; + + /* Create various aliases for convenience */ + + FlipClock.Lang['zh'] = FlipClock.Lang.Chinese; + FlipClock.Lang['zh-cn'] = FlipClock.Lang.Chinese; + FlipClock.Lang['chinese'] = FlipClock.Lang.Chinese; +})(jQuery); diff --git a/js/components/frame.js b/js/components/frame.js index 2991b96b..0cf1ffa6 100644 --- a/js/components/frame.js +++ b/js/components/frame.js @@ -30,7 +30,7 @@ var DT_frame = { }, refresh: function (me) { if (typeof me.block.frameurl !== 'undefined') { - $(me.mountPoint) + me.$mountPoint .find('iframe') .attr( 'src', diff --git a/js/components/garbage.js b/js/components/garbage.js index 68369bc6..466838e3 100644 --- a/js/components/garbage.js +++ b/js/components/garbage.js @@ -31,9 +31,12 @@ var DT_garbage = (function () { mapping: settings['garbage_mapping'], date_separator: ': ', layout: 1, - maxdays: 32 + maxdays: 32, + ignoressl: false, + }, + run: function (me) { + me.order = Object.keys(me.block.garbage); }, - run: function () {}, refresh: function (me) { me.trashToday = false; me.trashTomorrow = false; @@ -113,6 +116,8 @@ var DT_garbage = (function () { } function getIcalData(me, url) { + //todo: add recurrence handling + // https://github.com/mifi/ical-expander return $.get(getPrefixUrl(me) + url).then(function (data) { var jcalData = ICAL.parse(data); var vcalendar = new ICAL.Component(jcalData); @@ -153,6 +158,7 @@ var DT_garbage = (function () { uniqueAddressID: data['dataList'][0]['UniqueId'], startDate: me.date.start.format('YYYY-MM-DD'), endDate: me.date.end.format('YYYY-MM-DD'), + community: data['dataList'][0]['Community'] }); }) .then(function (data) { @@ -347,7 +353,8 @@ var DT_garbage = (function () { '&nr=' + me.block.housenumber + '&t=' + - (me.block.housenumberSuffix || ''); + (me.block.housenumberSuffix || '') + + (me.block.ignoressl ? '&ignoressl=true':''); return $.getJSON(cURI).then(function (data) { data = data .filter(function (element) { @@ -515,54 +522,6 @@ var DT_garbage = (function () { }); } - // https://gemeente.groningen.nl/afvalwijzer/groningen/9746AG/18/2018/ - // eslint-disable-next-line no-unused-vars - function getGroningenData(me) { - return $.get( - getPrefixUrl(me) + - 'https://gemeente.groningen.nl/afvalwijzer/groningen/' + - me.block.zipcode + - '/' + - me.block.housenumber + - '/' + - moment().format('YYYY') - ).then(function (data) { - var returnDates = []; - data = data - .replace(//g, '') - .replace(/(?:.|\n|\r)+?<\/head>/g, '') - .replace(/