diff --git a/dist/css/album.css b/dist/css/album.css deleted file mode 100644 index b608cd8..0000000 --- a/dist/css/album.css +++ /dev/null @@ -1,2 +0,0 @@ -@media screen and (max-width:768px){.description{text-align:center}} -/*# sourceMappingURL=album.css.map */ diff --git a/dist/css/album.css.map b/dist/css/album.css.map deleted file mode 100644 index 7b91439..0000000 --- a/dist/css/album.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/album.scss"],"names":[],"mappings":"AAMA,oCACE,aACE,iBACF,CAAC","file":"album.css","sourcesContent":["@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Main **/\n\n@media screen and (max-width: 768px) {\n .description {\n text-align: center\n }\n}\n"]} \ No newline at end of file diff --git a/dist/css/dashboard.css b/dist/css/dashboard.css deleted file mode 100644 index 591b48f..0000000 --- a/dist/css/dashboard.css +++ /dev/null @@ -1,2 +0,0 @@ -body{-webkit-animation:none;animation:none}#dashboard{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.menu-label{color:#b5b5b5}.menu-list a{color:#1f89e5;border:1px solid transparent;margin-top:-1px}.menu-list a.is-active{color:#fff;background:#1f89e5;border-color:#1f89e5}.menu-list a:not(.is-active):hover{color:#1f89e5;background:none;border-color:#1f89e5}.menu-list a[disabled]{color:#7a7a7a;pointer-events:none}.menu-list a.is-loading:after{-webkit-animation:spinAround .5s linear infinite;animation:spinAround .5s linear infinite;border-radius:290486px;border-color:transparent transparent #f5f5f5 #f5f5f5;border-style:solid;border-width:2px;content:"";display:block;height:1em;width:1em;right:.5em;top:calc(50% - .5em);position:absolute!important}.menu-list li ul{border-left:0;padding-left:0}.menu-list li ul li{border-left:2px solid #b5b5b5;padding-left:.75em}#page.fade-in,.menu-list #albumsContainer li{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.pagination{margin-bottom:1.25rem}.pagination-link:not([disabled]),.pagination-next:not([disabled]),.pagination-previous:not([disabled]){background-color:#000}.pagination-link:not([disabled]):hover,.pagination-next:not([disabled]):hover,.pagination-previous:not([disabled]):hover{background-color:#f5f5f5}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{opacity:1}.pagination-link.is-current{color:#000;background-color:#f5f5f5;border-color:#f5f5f5}.pagination-link.is-current.is-loading:after{border-bottom-color:#4a4a4a;border-left-color:#4a4a4a}li[data-action=page-ellipsis]{cursor:pointer}.label{color:#ededed}#page{min-width:0}.is-linethrough{text-decoration:line-through}#dashboard.is-loading #menu .menu-list a,#dashboard.is-loading [data-action]{cursor:progress}#dashboard.is-loading .column.bulk-operations [data-action],#dashboard.is-loading .column.exclusive-operations [data-action],#dashboard.is-loading .table [data-action],#dashboard.is-loading [data-action$=-help]{cursor:pointer}#statistics tr :first-child{width:50%}.expirydate{color:#ededed}.table .originalname{max-width:200px;text-overflow:ellipsis;overflow:hidden}.image-container .checkbox{position:absolute;top:11px;left:11px}.image-container .controls{display:flex;position:absolute;top:11px;right:11px}.image-container .controls .button{border-radius:0}.image-container .controls .button:not(:active):not(:hover){color:#fff;background-color:#000}.no-touch .image-container .checkbox{opacity:.5}.no-touch .image-container .controls,.no-touch .image-container .details{opacity:0}.no-touch .image-container:hover .checkbox,.no-touch .image-container:hover .controls,.no-touch .image-container:hover .details{opacity:1} -/*# sourceMappingURL=dashboard.css.map */ diff --git a/dist/css/dashboard.css.map b/dist/css/dashboard.css.map deleted file mode 100644 index 9cd2743..0000000 --- a/dist/css/dashboard.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/dashboard.scss","../node_modules/bulma/sass/utilities/initial-variables.sass","css/_variables.scss"],"names":[],"mappings":"AAMA,KACE,sBACF,CADE,cACF,CAEA,WACE,mCACF,CADE,2BACF,CAEA,YACE,aCN4B,CDS9B,aAEI,aEZqB,CFarB,4BAA6B,CAC7B,eAAgB,CAJpB,uBAOM,UCVyB,CDWzB,kBElBmB,CFmBnB,oBEnBmB,CFUzB,mCAaM,aEvBmB,CFwBnB,eAAgB,CAChB,oBEzBmB,CFUzB,uBAmBM,aC7BwB,CD8BxB,mBACF,CArBJ,8BAwBM,gDAA0C,CAA1C,wCAA0C,CAE1C,sBAAuB,CAEvB,oDAA6B,CAA7B,kBAA6B,CAA7B,gBAA6B,CAC7B,UAAW,CACX,aAAc,CACd,UAAW,CACX,SAAU,CACV,UAA2B,CAC3B,oBAA0B,CAC1B,2BACF,CApCJ,iBAwCI,aAAc,CACd,cAAe,CAzCnB,oBA4CM,6BCrDwB,CDsDxB,kBACF,CAQJ,6CACE,mCACF,CADE,2BACF,CAEA,YACE,qBACF,CAEA,uGAII,qBE/EkB,CF2EtB,yHAOM,wBC1EwB,CDmE9B,qFAYI,SACF,CAGF,4BACE,UE5FoB,CF6FpB,wBCrF4B,CDsF5B,oBCtF4B,CDmF9B,6CAMI,2BC/F0B,CDgG1B,yBChG0B,CDoG9B,8BACE,cACF,CAEA,OACE,aCrG6B,CDwG/B,MAEE,WACF,CAEA,gBACE,4BACF,CAEA,6EAGI,eACF,CAJF,mNAUI,cACF,CAGF,4BACE,SACF,CAEA,YACE,aCpI6B,CDuI/B,qBACE,eAAgB,CAChB,sBAAuB,CACvB,eACF,CAIA,2BAEI,iBAAkB,CAClB,QAAS,CACT,SACF,CALF,2BAQI,YAAa,CACb,iBAAkB,CAClB,QAAS,CACT,UAAW,CAXf,mCAcM,eAAgB,CAdtB,4DAiBQ,UC5JuB,CD6JvB,qBAAoC,CAM5C,qCAEI,UACF,CAHF,yEAOI,SACF,CARF,gIAcM,SACF","file":"dashboard.css","sourcesContent":["@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Main **/\n\nbody {\n animation: none\n}\n\n#dashboard {\n animation: fadeInOpacity 0.5s\n}\n\n.menu-label {\n color: $grey-light\n}\n\n.menu-list {\n a {\n color: $link;\n border: 1px solid transparent;\n margin-top: -1px;\n\n &.is-active {\n color: $white;\n background: $link;\n border-color: $link\n }\n\n &:not(.is-active):hover {\n color: $link;\n background: none;\n border-color: $link\n }\n\n &[disabled] {\n color: $grey;\n pointer-events: none\n }\n\n &.is-loading::after {\n animation: spinAround 0.5s infinite linear;\n border: 2px solid $white-ter;\n border-radius: 290486px;\n border-right-color: transparent;\n border-top-color: transparent;\n content: \"\";\n display: block;\n height: 1em;\n width: 1em;\n right: calc(0% + (1em / 2));\n top: calc(50% - (1em / 2));\n position: absolute !important\n }\n }\n\n li ul {\n border-left: 0;\n padding-left: 0;\n\n li {\n border-left: 2px solid $grey-light;\n padding-left: 0.75em\n }\n }\n\n #albumsContainer li {\n animation: fadeInOpacity 0.5s\n }\n}\n\n#page.fade-in {\n animation: fadeInOpacity 0.5s\n}\n\n.pagination {\n margin-bottom: 1.25rem\n}\n\n.pagination-previous,\n.pagination-next,\n.pagination-link {\n &:not([disabled]) {\n background-color: $pagination-background-color;\n\n &:hover {\n background-color: $pagination-hover-background-color\n }\n }\n\n &[disabled] {\n opacity: 1\n }\n}\n\n.pagination-link.is-current {\n color: $pagination-background-color;\n background-color: $pagination-color;\n border-color: $pagination-border-color;\n\n &.is-loading::after {\n border-bottom-color: $grey-dark;\n border-left-color: $grey-dark\n }\n}\n\nli[data-action=\"page-ellipsis\"] {\n cursor: pointer\n}\n\n.label {\n color: $grey-lightest\n}\n\n#page {\n /* fix overflow issue with flex */\n min-width: 0\n}\n\n.is-linethrough {\n text-decoration: line-through\n}\n\n#dashboard.is-loading {\n *[data-action],\n #menu .menu-list a {\n cursor: progress\n }\n\n *[data-action$=\"-help\"],\n .table *[data-action],\n .column.bulk-operations *[data-action],\n .column.exclusive-operations *[data-action] {\n cursor: pointer\n }\n}\n\n#statistics tr *:nth-child(1) {\n width: 50%\n}\n\n.expirydate {\n color: $grey-lightest\n}\n\n.table .originalname {\n max-width: 200px;\n text-overflow: ellipsis;\n overflow: hidden\n}\n\n/** Thumbs extension **/\n\n.image-container {\n .checkbox {\n position: absolute;\n top: 11px;\n left: 11px\n }\n\n .controls {\n display: flex;\n position: absolute;\n top: 11px;\n right: 11px;\n\n .button {\n border-radius: 0;\n\n &:not(:active):not(:hover) {\n color: $white;\n background-color: rgba(0, 0, 0, 143)\n }\n }\n }\n}\n\n.no-touch .image-container {\n .checkbox {\n opacity: 0.5\n }\n\n .controls,\n .details {\n opacity: 0\n }\n\n &:hover {\n .checkbox,\n .controls,\n .details {\n opacity: 1\n }\n }\n}\n","// Colors\n\n$black: hsl(0, 0%, 4%) !default;\n$black-bis: hsl(0, 0%, 7%) !default;\n$black-ter: hsl(0, 0%, 14%) !default;\n\n$grey-darker: hsl(0, 0%, 21%) !default;\n$grey-dark: hsl(0, 0%, 29%) !default;\n$grey: hsl(0, 0%, 48%) !default;\n$grey-light: hsl(0, 0%, 71%) !default;\n$grey-lighter: hsl(0, 0%, 86%) !default;\n$grey-lightest: hsl(0, 0%, 93%) !default;\n\n$white-ter: hsl(0, 0%, 96%) !default;\n$white-bis: hsl(0, 0%, 98%) !default;\n$white: hsl(0, 0%, 100%) !default;\n\n$orange: hsl(14, 100%, 53%) !default;\n$yellow: hsl(48, 100%, 67%) !default;\n$green: hsl(141, 53%, 53%) !default;\n$turquoise: hsl(171, 100%, 41%) !default;\n$cyan: hsl(204, 71%, 53%) !default;\n$blue: hsl(217, 71%, 53%) !default;\n$purple: hsl(271, 100%, 71%) !default;\n$red: hsl(348, 86%, 61%) !default;\n\n// Typography\n\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif !default;\n$family-monospace: monospace !default;\n$render-mode: optimizeLegibility !default;\n\n$size-1: 3rem !default;\n$size-2: 2.5rem !default;\n$size-3: 2rem !default;\n$size-4: 1.5rem !default;\n$size-5: 1.25rem !default;\n$size-6: 1rem !default;\n$size-7: 0.75rem !default;\n\n$weight-light: 300 !default;\n$weight-normal: 400 !default;\n$weight-medium: 500 !default;\n$weight-semibold: 600 !default;\n$weight-bold: 700 !default;\n\n// Spacing\n\n$block-spacing: 1.5rem !default;\n\n// Responsiveness\n\n// The container horizontal gap, which acts as the offset for breakpoints\n$gap: 32px !default;\n// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16\n$tablet: 769px !default;\n// 960px container + 4rem\n$desktop: 960px + (2 * $gap) !default;\n// 1152px container + 4rem\n$widescreen: 1152px + (2 * $gap) !default;\n$widescreen-enabled: true !default;\n// 1344px container + 4rem\n$fullhd: 1344px + (2 * $gap) !default;\n$fullhd-enabled: true !default;\n\n// Miscellaneous\n\n$easing: ease-out !default;\n$radius-small: 2px !default;\n$radius: 4px !default;\n$radius-large: 6px !default;\n$radius-rounded: 290486px !default;\n$speed: 86ms !default;\n\n// Flags\n\n$variable-columns: true !default;\n$rtl: false !default;\n","@charset \"utf-8\";\n\n/* stylelint-disable-next-line value-keyword-case */\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Ubuntu\", \"Roboto\", \"Oxygen\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif;\n\n$black: hsl(0, 0%, 0%);\n$green: hsl(141, 42%, 53%);\n$cyan: hsl(217, 89%, 61%);\n$blue: hsl(208, 79%, 51%);\n$red: hsl(348, 100%, 61%);\n\n/** Bulma: Variables **/\n@import \"../../node_modules/bulma/sass/utilities/initial-variables.sass\";\n@import \"../../node_modules/bulma/sass/utilities/functions.sass\";\n@import \"../../node_modules/bulma/sass/utilities/derived-variables.scss\";\n\n$scheme-main: $black;\n$text: $white-ter;\n\n$strong-color: $grey-lighter;\n\n$link-hover: $link-light;\n\n$hr-background-color: $grey-light;\n\n$border-hover: $link;\n$input-focus-border-color: $link-light;\n\n$title-color: $white-ter;\n$subtitle-color: $grey-lightest;\n$subtitle-strong-color: $grey-lightest;\n\n$input-background-color: $scheme-main;\n$input-border-color: $grey;\n$input-color: $text;\n$input-placeholder-color: $grey-lightest;\n\n$input-disabled-background-color: $grey-dark;\n$input-disabled-border-color: $input-border-color;\n$input-disabled-color: $input-color;\n$input-disabled-placeholder-color: $grey-lightest;\n\n$pagination-background-color: $scheme-main;\n$pagination-border-color: $text;\n$pagination-color: $text;\n\n$pagination-hover-background-color: $pagination-color;\n$pagination-hover-border-color: $pagination-border-color;\n$pagination-hover-color: $scheme-main;\n\n$pagination-disabled-background-color: $grey-dark;\n$pagination-disabled-border-color: $grey;\n$pagination-disabled-color: hsl(0, 0%, 64%);\n\n$tabs-link-color: $text;\n$tabs-link-hover-color: $tabs-link-color;\n$tabs-boxed-link-active-border-color: $grey;\n$tabs-boxed-link-hover-background-color: $grey-darker;\n$tabs-boxed-link-hover-border-bottom-color: $tabs-boxed-link-active-border-color\n"]} \ No newline at end of file diff --git a/dist/css/home.css b/dist/css/home.css deleted file mode 100644 index ca55454..0000000 --- a/dist/css/home.css +++ /dev/null @@ -1,2 +0,0 @@ -#b{width:200px;height:200px;border-radius:100%;display:inline-block;margin-bottom:40px;vertical-align:top;-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.logo{max-height:200px}.logo.is-2x{display:none}#dropzone *{pointer-events:none}#panel,#tokenContainer{display:none}#maxSize{font-size:1rem}.dz-preview .dz-details{display:flex}.dz-preview .dz-details .dz-filename,.dz-preview .dz-details .dz-size{flex:1}.dz-preview .dz-error-mark,.dz-preview .dz-success-mark,.dz-preview img{display:none}.uploads{display:flex;flex-direction:column}.uploads.is-reversed{flex-direction:column-reverse}.uploads>div{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s;margin:.75rem!important}.uploads>div:first-child{margin-top:1.5rem}.uploads>div>.icon:not(.icon-block){color:#1f89e5}.uploads>div>.icon.icon-block{color:#ff3860}.uploads.is-reversed>div{flex:0 0 auto}.uploads.nojs{margin-bottom:0}.uploads .descriptive-progress{color:#ededed}.uploads img{max-width:200px}.name{font-size:1rem;color:#f5f5f5}.link>a,.name{word-break:break-all}.clipboard-mobile{margin-top:5px}#albumDiv{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}#albumDiv .control{text-align:inherit}#linksColumn{margin-top:-.25rem;margin-left:-.25rem;margin-right:-.25rem;-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}#linksColumn .column{padding:.25rem}#linksColumn>span{padding:0 .3rem;color:#b5b5b5}.git-commit a{display:inline-block;word-break:break-all}.hero .tabs ul{border-bottom:1px solid #7a7a7a}#tabs{margin-bottom:1rem}#tabs,#tabs .tab-content{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}#tabs .tab-content{margin-bottom:-.75rem}#tab-config.tab-content form{margin-bottom:.75rem}#urlMaxSize{font-weight:700}input[type=file].is-fullwidth{width:100%}.render{position:fixed;right:0;bottom:0;font-size:1rem;color:#ededed;cursor:pointer;-webkit-animation:floatUp 1.5s cubic-bezier(0,.71,.29,1) .5s 1 normal both;animation:floatUp 1.5s cubic-bezier(0,.71,.29,1) .5s 1 normal both}.render.button{border-bottom-left-radius:0;border-bottom-right-radius:0;right:1%;opacity:.25;transition:opacity .25s}.render.button:hover{opacity:1}#newsfeed{position:absolute;top:0;right:0;left:0;padding:1.5rem 1.5rem 0}#newsfeed .column:last-child{-webkit-animation:floatUp 1.5s cubic-bezier(0,.71,.29,1) .5s 1 normal both;animation:floatUp 1.5s cubic-bezier(0,.71,.29,1) .5s 1 normal both}#newsfeed .notification{display:block;padding:.75rem 2.25rem .75rem 1.125rem;margin-bottom:1.125rem}#newsfeed .notification>.delete{top:.75rem}#newsfeed .notification .content{font-size:.75rem}#newsfeed .news-date.is-recent-week,#newsfeed .news-title{font-weight:700} -/*# sourceMappingURL=home.css.map */ diff --git a/dist/css/home.css.map b/dist/css/home.css.map deleted file mode 100644 index 439406a..0000000 --- a/dist/css/home.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/home.scss","css/_variables.scss","../node_modules/bulma/sass/utilities/initial-variables.sass"],"names":[],"mappings":"AAMA,GACE,WAAY,CACZ,YAAa,CACb,kBAAmB,CACnB,oBAAqB,CACrB,kBAAmB,CACnB,kBAAmB,CACnB,mCACF,CADE,2BACF,CAEA,MACE,gBAAiB,CADnB,YAII,YACF,CAGF,YACE,mBACF,CAEA,uBAEE,YACF,CAEA,SACE,cACF,CAEA,wBAEI,YAAa,CAFjB,sEAMM,MACF,CAPJ,wEAaI,YACF,CAGF,SACE,YAAa,CACb,qBAAsB,CAFxB,qBAKI,6BACF,CANF,aASI,mCAA6B,CAA7B,2BAA6B,CAC7B,uBAA0B,CAV9B,yBAaM,iBACF,CAdJ,oCAiBM,aC/DmB,CD8CzB,8BAqBM,aClEmB,CD6CzB,yBA0BI,aACF,CA3BF,cA8BI,eACF,CA/BF,+BAkCI,aE7E2B,CF2C/B,aAsCI,eACF,CAGF,MACE,cAAe,CACf,aAEF,CAEA,cAHE,oBAKF,CAEA,kBACE,cACF,CAEA,UACE,mCAA6B,CAA7B,2BAA6B,CAD/B,mBAII,kBACF,CAGF,aACE,kBAAoB,CACpB,mBAAqB,CACrB,oBAAsB,CACtB,mCAA6B,CAA7B,2BAA6B,CAJ/B,qBAOI,cACF,CARF,kBAWI,eAAiB,CACjB,aEzH0B,CF6H9B,cACE,oBAAqB,CACrB,oBACF,CAEA,eACE,+BEpI4B,CFuI9B,MACE,kBAC6B,CAF/B,yBAEE,mCAA6B,CAA7B,2BAKA,CAPF,mBAKI,qBAEF,CAGF,6BACE,oBACF,CAEA,YACE,eACF,CAEA,8BACE,UACF,CAIA,QACE,cAAe,CACf,OAAQ,CACR,QAAS,CACT,cAAe,CACf,aEjK6B,CFkK7B,cAAe,CACf,0EAAyE,CAAzE,kEAAyE,CAP3E,eAUI,2BAA4B,CAC5B,4BAA6B,CAC7B,QAAS,CACT,WAAa,CACb,uBAAyB,CAd7B,qBAiBM,SACF,CAMJ,UACE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,MAAO,CACP,uBAA+B,CALjC,6BAQI,0EAAyE,CAAzE,kEAAyE,CAR7E,wBAYI,aAAc,CACd,sCAAyC,CACzC,sBAAuB,CAd3B,gCAiBM,UACF,CAlBJ,iCAqBM,gBACF,CAtBJ,0DA8BI,eACF","file":"home.css","sourcesContent":["@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Main **/\n\n#b {\n width: 200px;\n height: 200px;\n border-radius: 100%;\n display: inline-block;\n margin-bottom: 40px;\n vertical-align: top;\n animation: fadeInOpacity 0.5s\n}\n\n.logo {\n max-height: 200px;\n\n &.is-2x {\n display: none\n }\n}\n\n#dropzone * {\n pointer-events: none\n}\n\n#tokenContainer,\n#panel {\n display: none\n}\n\n#maxSize {\n font-size: 1rem\n}\n\n.dz-preview {\n .dz-details {\n display: flex;\n\n .dz-size,\n .dz-filename {\n flex: 1\n }\n }\n\n img,\n .dz-success-mark,\n .dz-error-mark {\n display: none\n }\n}\n\n.uploads {\n display: flex;\n flex-direction: column;\n\n &.is-reversed {\n flex-direction: column-reverse\n }\n\n > div {\n animation: fadeInOpacity 0.5s;\n margin: 0.75rem !important;\n\n &:first-child {\n margin-top: 1.5rem\n }\n\n > .icon:not(.icon-block) {\n color: $blue\n }\n\n > .icon.icon-block {\n color: $danger\n }\n }\n\n &.is-reversed > div {\n flex: 0 0 auto\n }\n\n &.nojs {\n margin-bottom: 0\n }\n\n .descriptive-progress {\n color: $grey-lightest\n }\n\n img {\n max-width: 200px\n }\n}\n\n.name {\n font-size: 1rem;\n color: $white-ter;\n word-break: break-all\n}\n\n.link > a {\n word-break: break-all\n}\n\n.clipboard-mobile {\n margin-top: 5px\n}\n\n#albumDiv {\n animation: fadeInOpacity 0.5s;\n\n .control {\n text-align: inherit\n }\n}\n\n#linksColumn {\n margin-top: -0.25rem;\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n animation: fadeInOpacity 0.5s;\n\n .column {\n padding: 0.25rem\n }\n\n > span {\n padding: 0 0.3rem;\n color: $grey-light\n }\n}\n\n.git-commit a {\n display: inline-block;\n word-break: break-all\n}\n\n.hero .tabs ul {\n border-bottom: 1px solid $tabs-boxed-link-active-border-color\n}\n\n#tabs {\n margin-bottom: 1rem;\n animation: fadeInOpacity 0.5s;\n\n .tab-content {\n margin-bottom: -0.75rem;\n animation: fadeInOpacity 0.5s\n }\n}\n\n#tab-config.tab-content form {\n margin-bottom: 0.75rem\n}\n\n#urlMaxSize {\n font-weight: bold\n}\n\ninput[type=\"file\"].is-fullwidth {\n width: 100%\n}\n\n/** Render **/\n\n.render {\n position: fixed;\n right: 0;\n bottom: 0;\n font-size: 1rem;\n color: $grey-lightest;\n cursor: pointer;\n animation: floatUp 1.5s cubic-bezier(0, 0.71, 0.29, 1) 0.5s 1 normal both;\n\n &.button {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n right: 1%;\n opacity: 0.25;\n transition: opacity 0.25s;\n\n &:hover {\n opacity: 1\n }\n }\n}\n\n/** Newsfeed **/\n\n#newsfeed {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n padding: 1.5rem 1.5rem 0 1.5rem;\n\n .column:last-child {\n animation: floatUp 1.5s cubic-bezier(0, 0.71, 0.29, 1) 0.5s 1 normal both\n }\n\n .notification {\n display: block;\n padding: 0.75rem 2.25rem 0.75rem 1.125rem;\n margin-bottom: 1.125rem;\n\n > .delete {\n top: 0.75rem\n }\n\n .content {\n font-size: 0.75rem\n }\n }\n\n .news-title {\n font-weight: bold\n }\n\n .news-date.is-recent-week {\n font-weight: bold\n }\n}\n","@charset \"utf-8\";\n\n/* stylelint-disable-next-line value-keyword-case */\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Ubuntu\", \"Roboto\", \"Oxygen\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif;\n\n$black: hsl(0, 0%, 0%);\n$green: hsl(141, 42%, 53%);\n$cyan: hsl(217, 89%, 61%);\n$blue: hsl(208, 79%, 51%);\n$red: hsl(348, 100%, 61%);\n\n/** Bulma: Variables **/\n@import \"../../node_modules/bulma/sass/utilities/initial-variables.sass\";\n@import \"../../node_modules/bulma/sass/utilities/functions.sass\";\n@import \"../../node_modules/bulma/sass/utilities/derived-variables.scss\";\n\n$scheme-main: $black;\n$text: $white-ter;\n\n$strong-color: $grey-lighter;\n\n$link-hover: $link-light;\n\n$hr-background-color: $grey-light;\n\n$border-hover: $link;\n$input-focus-border-color: $link-light;\n\n$title-color: $white-ter;\n$subtitle-color: $grey-lightest;\n$subtitle-strong-color: $grey-lightest;\n\n$input-background-color: $scheme-main;\n$input-border-color: $grey;\n$input-color: $text;\n$input-placeholder-color: $grey-lightest;\n\n$input-disabled-background-color: $grey-dark;\n$input-disabled-border-color: $input-border-color;\n$input-disabled-color: $input-color;\n$input-disabled-placeholder-color: $grey-lightest;\n\n$pagination-background-color: $scheme-main;\n$pagination-border-color: $text;\n$pagination-color: $text;\n\n$pagination-hover-background-color: $pagination-color;\n$pagination-hover-border-color: $pagination-border-color;\n$pagination-hover-color: $scheme-main;\n\n$pagination-disabled-background-color: $grey-dark;\n$pagination-disabled-border-color: $grey;\n$pagination-disabled-color: hsl(0, 0%, 64%);\n\n$tabs-link-color: $text;\n$tabs-link-hover-color: $tabs-link-color;\n$tabs-boxed-link-active-border-color: $grey;\n$tabs-boxed-link-hover-background-color: $grey-darker;\n$tabs-boxed-link-hover-border-bottom-color: $tabs-boxed-link-active-border-color\n","// Colors\n\n$black: hsl(0, 0%, 4%) !default;\n$black-bis: hsl(0, 0%, 7%) !default;\n$black-ter: hsl(0, 0%, 14%) !default;\n\n$grey-darker: hsl(0, 0%, 21%) !default;\n$grey-dark: hsl(0, 0%, 29%) !default;\n$grey: hsl(0, 0%, 48%) !default;\n$grey-light: hsl(0, 0%, 71%) !default;\n$grey-lighter: hsl(0, 0%, 86%) !default;\n$grey-lightest: hsl(0, 0%, 93%) !default;\n\n$white-ter: hsl(0, 0%, 96%) !default;\n$white-bis: hsl(0, 0%, 98%) !default;\n$white: hsl(0, 0%, 100%) !default;\n\n$orange: hsl(14, 100%, 53%) !default;\n$yellow: hsl(48, 100%, 67%) !default;\n$green: hsl(141, 53%, 53%) !default;\n$turquoise: hsl(171, 100%, 41%) !default;\n$cyan: hsl(204, 71%, 53%) !default;\n$blue: hsl(217, 71%, 53%) !default;\n$purple: hsl(271, 100%, 71%) !default;\n$red: hsl(348, 86%, 61%) !default;\n\n// Typography\n\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif !default;\n$family-monospace: monospace !default;\n$render-mode: optimizeLegibility !default;\n\n$size-1: 3rem !default;\n$size-2: 2.5rem !default;\n$size-3: 2rem !default;\n$size-4: 1.5rem !default;\n$size-5: 1.25rem !default;\n$size-6: 1rem !default;\n$size-7: 0.75rem !default;\n\n$weight-light: 300 !default;\n$weight-normal: 400 !default;\n$weight-medium: 500 !default;\n$weight-semibold: 600 !default;\n$weight-bold: 700 !default;\n\n// Spacing\n\n$block-spacing: 1.5rem !default;\n\n// Responsiveness\n\n// The container horizontal gap, which acts as the offset for breakpoints\n$gap: 32px !default;\n// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16\n$tablet: 769px !default;\n// 960px container + 4rem\n$desktop: 960px + (2 * $gap) !default;\n// 1152px container + 4rem\n$widescreen: 1152px + (2 * $gap) !default;\n$widescreen-enabled: true !default;\n// 1344px container + 4rem\n$fullhd: 1344px + (2 * $gap) !default;\n$fullhd-enabled: true !default;\n\n// Miscellaneous\n\n$easing: ease-out !default;\n$radius-small: 2px !default;\n$radius: 4px !default;\n$radius-large: 6px !default;\n$radius-rounded: 290486px !default;\n$speed: 86ms !default;\n\n// Flags\n\n$variable-columns: true !default;\n$rtl: false !default;\n"]} \ No newline at end of file diff --git a/dist/css/style.css b/dist/css/style.css deleted file mode 100644 index 06adf64..0000000 --- a/dist/css/style.css +++ /dev/null @@ -1,3 +0,0 @@ -@-webkit-keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.button,.delete,.file,.is-unselectable,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select:not(.is-multiple):not(.is-loading):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.content:not(:last-child),.highlight:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before{background-color:#000;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{background-color:rgba(0,0,0,.3)}.delete:active{background-color:rgba(0,0,0,.4)}.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading:after,.control.is-loading:after,.loader,.select.is-loading:after{-webkit-animation:spinAround .5s linear infinite;animation:spinAround .5s linear infinite;border-radius:290486px;border-color:transparent transparent #dbdbdb #dbdbdb;border-style:solid;border-width:2px;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding:calc(.5em - 1px) calc(.75em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.pagination-previous:active,.pagination-previous:focus,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:none}.button[disabled],.file-cta[disabled],.file-name[disabled],.input[disabled],.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed} -/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#000;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Ubuntu,Roboto,Oxygen,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#f5f5f5;font-size:1em;font-weight:400;line-height:1.5}a{color:#1f89e5;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#edf5fd}code{background-color:#f5f5f5;color:#ff3860;font-size:.875em;font-weight:400;padding:.25em .5em}hr{background-color:#b5b5b5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#dbdbdb;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}.button,table th{color:#363636}.button{background-color:#000;border-color:#dbdbdb;border-width:1px;cursor:pointer;justify-content:center;padding:calc(.5em - 1px) 1em;text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#edf5fd}.button.is-focused,.button:focus{border-color:#1f89e5;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(31,137,229,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#f5f5f5;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#f5f5f5;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff;border-color:transparent;color:#000}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#000}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#000}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){box-shadow:0 0 0 .125em hsla(0,0%,100%,.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#000}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#000;color:#fff}.button.is-white.is-inverted.is-hovered,.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#000;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading:after{border-color:transparent transparent #000 #000!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined.is-focused,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:#fff;border-color:#fff;color:#000}.button.is-white.is-outlined.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-outlined.is-loading.is-focused:after,.button.is-white.is-outlined.is-loading.is-hovered:after,.button.is-white.is-outlined.is-loading:focus:after,.button.is-white.is-outlined.is-loading:hover:after{border-color:transparent transparent #000 #000!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#000;color:#000}.button.is-white.is-inverted.is-outlined.is-focused,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#000;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-white.is-inverted.is-outlined.is-loading:focus:after,.button.is-white.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#000;box-shadow:none;color:#000}.button.is-black,.button.is-black.is-hovered,.button.is-black:hover{background-color:#000;border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:#fff}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,0,0,.25)}.button.is-black.is-active,.button.is-black:active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#000;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#000}.button.is-black.is-inverted.is-hovered,.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#000}.button.is-black.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined{background-color:transparent;border-color:#000;color:#000}.button.is-black.is-outlined.is-focused,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#000;border-color:#000;color:#fff}.button.is-black.is-outlined.is-loading:after{border-color:transparent transparent #000 #000!important}.button.is-black.is-outlined.is-loading.is-focused:after,.button.is-black.is-outlined.is-loading.is-hovered:after,.button.is-black.is-outlined.is-loading:focus:after,.button.is-black.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#000;box-shadow:none;color:#000}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined.is-focused,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:#fff;color:#000}.button.is-black.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-black.is-inverted.is-outlined.is-loading:focus:after,.button.is-black.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #000 #000!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em hsla(0,0%,96.1%,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{color:#f5f5f5}.button.is-light.is-inverted,.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined.is-focused,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading:after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-outlined.is-loading.is-focused:after,.button.is-light.is-outlined.is-loading.is-hovered:after,.button.is-light.is-outlined.is-loading:focus:after,.button.is-light.is-outlined.is-loading:hover:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined.is-focused,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-light.is-inverted.is-outlined.is-loading:focus:after,.button.is-light.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#fff}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined.is-focused,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading:after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-outlined.is-loading.is-focused:after,.button.is-dark.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-outlined.is-loading:focus:after,.button.is-dark.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined.is-focused,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-inverted.is-outlined.is-loading:focus:after,.button.is-dark.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-hovered,.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined.is-focused,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading:after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-outlined.is-loading.is-focused:after,.button.is-primary.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-outlined.is-loading:focus:after,.button.is-primary.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined.is-focused,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-inverted.is-outlined.is-loading:focus:after,.button.is-primary.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light.is-hovered,.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#1f89e5;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#1a82dd;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(31,137,229,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#197bd2;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#1f89e5;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#1f89e5}.button.is-link.is-inverted.is-hovered,.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1f89e5}.button.is-link.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#1f89e5;color:#1f89e5}.button.is-link.is-outlined.is-focused,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#1f89e5;border-color:#1f89e5;color:#fff}.button.is-link.is-outlined.is-loading:after{border-color:transparent transparent #1f89e5 #1f89e5!important}.button.is-link.is-outlined.is-loading.is-focused:after,.button.is-link.is-outlined.is-loading.is-hovered:after,.button.is-link.is-outlined.is-loading:focus:after,.button.is-link.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#1f89e5;box-shadow:none;color:#1f89e5}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined.is-focused,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#1f89e5}.button.is-link.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-link.is-inverted.is-outlined.is-loading:focus:after,.button.is-link.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #1f89e5 #1f89e5!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#edf5fd;color:#1671c0}.button.is-link.is-light.is-hovered,.button.is-link.is-light:hover{background-color:#e1effc;border-color:transparent;color:#1671c0}.button.is-link.is-light.is-active,.button.is-link.is-light:active{background-color:#d6e9fa;border-color:transparent;color:#1671c0}.button.is-info{background-color:#4387f4;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#377ff3;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(67,135,244,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#2b77f3;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#4387f4;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#4387f4}.button.is-info.is-inverted.is-hovered,.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#4387f4}.button.is-info.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#4387f4;color:#4387f4}.button.is-info.is-outlined.is-focused,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#4387f4;border-color:#4387f4;color:#fff}.button.is-info.is-outlined.is-loading:after{border-color:transparent transparent #4387f4 #4387f4!important}.button.is-info.is-outlined.is-loading.is-focused:after,.button.is-info.is-outlined.is-loading.is-hovered:after,.button.is-info.is-outlined.is-loading:focus:after,.button.is-info.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#4387f4;box-shadow:none;color:#4387f4}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined.is-focused,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#4387f4}.button.is-info.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-info.is-inverted.is-outlined.is-loading:focus:after,.button.is-info.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #4387f4 #4387f4!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#ecf3fe;color:#0c53c6}.button.is-info.is-light.is-hovered,.button.is-info.is-light:hover{background-color:#e0ebfd;border-color:transparent;color:#0c53c6}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#d4e3fc;border-color:transparent;color:#0c53c6}.button.is-success{background-color:#55b978;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#4cb671;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(85,185,120,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#47ae6b;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#55b978;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#55b978}.button.is-success.is-inverted.is-hovered,.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#55b978}.button.is-success.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#55b978;color:#55b978}.button.is-success.is-outlined.is-focused,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#55b978;border-color:#55b978;color:#fff}.button.is-success.is-outlined.is-loading:after{border-color:transparent transparent #55b978 #55b978!important}.button.is-success.is-outlined.is-loading.is-focused:after,.button.is-success.is-outlined.is-loading.is-hovered:after,.button.is-success.is-outlined.is-loading:focus:after,.button.is-success.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#55b978;box-shadow:none;color:#55b978}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined.is-focused,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#55b978}.button.is-success.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-success.is-inverted.is-outlined.is-loading:focus:after,.button.is-success.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #55b978 #55b978!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#f1f9f4;color:#327b4c}.button.is-success.is-light.is-hovered,.button.is-success.is-light:hover{background-color:#e7f5ec;border-color:transparent;color:#327b4c}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#def2e5;border-color:transparent;color:#327b4c}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{color:#ffdd57}.button.is-warning.is-inverted,.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined.is-focused,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading:after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-outlined.is-loading.is-focused:after,.button.is-warning.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-outlined.is-loading:focus:after,.button.is-warning.is-outlined.is-loading:hover:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined.is-focused,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-inverted.is-outlined.is-loading:focus:after,.button.is-warning.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light.is-hovered,.button.is-warning.is-light:hover{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#ff3860;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#ff2b56;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,56,96,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ff1f4b;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#ff3860;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#ff3860}.button.is-danger.is-inverted.is-hovered,.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ff3860}.button.is-danger.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#ff3860;color:#ff3860}.button.is-danger.is-outlined.is-focused,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#ff3860;border-color:#ff3860;color:#fff}.button.is-danger.is-outlined.is-loading:after{border-color:transparent transparent #ff3860 #ff3860!important}.button.is-danger.is-outlined.is-loading.is-focused:after,.button.is-danger.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-outlined.is-loading:focus:after,.button.is-danger.is-outlined.is-loading:hover:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#ff3860;box-shadow:none;color:#ff3860}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined.is-focused,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#ff3860}.button.is-danger.is-inverted.is-outlined.is-loading.is-focused:after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-inverted.is-outlined.is-loading:focus:after,.button.is-danger.is-inverted.is-outlined.is-loading:hover:after{border-color:transparent transparent #ff3860 #ff3860!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#ffebef;color:#db002c}.button.is-danger.is-light.is-hovered,.button.is-danger.is-light:hover{background-color:#ffdee4;border-color:transparent;color:#db002c}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#ffd1da;border-color:transparent;color:#db002c}.button.is-small{border-radius:2px;font-size:.75rem}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#000;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading:after{position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:1.25em;padding-right:1.25em}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:2px;font-size:.75rem}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen{max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd{max-width:1344px}}@media screen and (min-width:1216px){.container{max-width:1152px}}@media screen and (min-width:1408px){.container{max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#000}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#000}.notification.is-black{background-color:#000;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#1f89e5;color:#fff}.notification.is-link.is-light{background-color:#edf5fd;color:#1671c0}.notification.is-info{background-color:#4387f4;color:#fff}.notification.is-info.is-light{background-color:#ecf3fe;color:#0c53c6}.notification.is-success{background-color:#55b978;color:#fff}.notification.is-success.is-light{background-color:#f1f9f4;color:#327b4c}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#ff3860;color:#fff}.notification.is-danger.is-light{background-color:#ffebef;color:#db002c}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#f5f5f5}.progress::-moz-progress-bar{background-color:#f5f5f5}.progress::-ms-fill{background-color:#f5f5f5;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(90deg,#fff 30%,#ededed 0)}.progress.is-black::-webkit-progress-value{background-color:#000}.progress.is-black::-moz-progress-bar{background-color:#000}.progress.is-black::-ms-fill{background-color:#000}.progress.is-black:indeterminate{background-image:linear-gradient(90deg,#000 30%,#ededed 0)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(90deg,#f5f5f5 30%,#ededed 0)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(90deg,#363636 30%,#ededed 0)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(90deg,#00d1b2 30%,#ededed 0)}.progress.is-link::-webkit-progress-value{background-color:#1f89e5}.progress.is-link::-moz-progress-bar{background-color:#1f89e5}.progress.is-link::-ms-fill{background-color:#1f89e5}.progress.is-link:indeterminate{background-image:linear-gradient(90deg,#1f89e5 30%,#ededed 0)}.progress.is-info::-webkit-progress-value{background-color:#4387f4}.progress.is-info::-moz-progress-bar{background-color:#4387f4}.progress.is-info::-ms-fill{background-color:#4387f4}.progress.is-info:indeterminate{background-image:linear-gradient(90deg,#4387f4 30%,#ededed 0)}.progress.is-success::-webkit-progress-value{background-color:#55b978}.progress.is-success::-moz-progress-bar{background-color:#55b978}.progress.is-success::-ms-fill{background-color:#55b978}.progress.is-success:indeterminate{background-image:linear-gradient(90deg,#55b978 30%,#ededed 0)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(90deg,#ffdd57 30%,#ededed 0)}.progress.is-danger::-webkit-progress-value{background-color:#ff3860}.progress.is-danger::-moz-progress-bar{background-color:#ff3860}.progress.is-danger::-ms-fill{background-color:#ff3860}.progress.is-danger:indeterminate{background-image:linear-gradient(90deg,#ff3860 30%,#ededed 0)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(90deg,#f5f5f5 30%,#ededed 0);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.table{color:#363636}.table td,.table th{border:solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#000}.table td.is-black,.table th.is-black{background-color:#000;border-color:#000;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#1f89e5;border-color:#1f89e5;color:#fff}.table td.is-info,.table th.is-info{background-color:#4387f4;border-color:#4387f4;color:#fff}.table td.is-success,.table th.is-success{background-color:#55b978;border-color:#55b978;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#ff3860;border-color:#ff3860;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover,.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(2n){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(2n){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.subtitle sup,.title sub,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#f5f5f5;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#ededed;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#ededed;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#000;border-color:#7a7a7a;border-radius:4px;color:#f5f5f5}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:#ededed}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:#ededed}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:#ededed}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:#ededed}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#1f89e5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#edf5fd;box-shadow:0 0 0 .125em rgba(31,137,229,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#4a4a4a;border-color:#7a7a7a;box-shadow:none;color:#f5f5f5}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:#ededed}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:#ededed}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:#ededed}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:#ededed}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(0,0,0,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em hsla(0,0%,100%,.25)}.is-black.input,.is-black.textarea{border-color:#000}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(0,0,0,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em hsla(0,0%,96.1%,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#1f89e5}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(31,137,229,.25)}.is-info.input,.is-info.textarea{border-color:#4387f4}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(67,135,244,.25)}.is-success.input,.is-success.textarea{border-color:#55b978}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(85,185,120,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffdd57}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.is-danger.input,.is-danger.textarea{border-color:#ff3860}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(255,56,96,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:290486px;padding-left:calc(1.125em - 1px);padding-right:calc(1.125em - 1px)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:auto}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#f5f5f5;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading):after{border-color:#1f89e5;right:1.125em;z-index:4}.select.is-rounded select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#363636}.select.is-white:not(:hover):after,.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em hsla(0,0%,100%,.25)}.select.is-black:not(:hover):after,.select.is-black select,.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(0,0,0,.25)}.select.is-light:not(:hover):after,.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em hsla(0,0%,96.1%,.25)}.select.is-dark:not(:hover):after,.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover):after,.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover):after,.select.is-link select{border-color:#1f89e5}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#197bd2}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(31,137,229,.25)}.select.is-info:not(:hover):after,.select.is-info select{border-color:#4387f4}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#2b77f3}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(67,135,244,.25)}.select.is-success:not(:hover):after,.select.is-success select{border-color:#55b978}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#47ae6b}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(85,185,120,.25)}.select.is-warning:not(:hover):after,.select.is-warning select{border-color:#ffdd57}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd83d}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.select.is-danger:not(:hover):after,.select.is-danger select{border-color:#ff3860}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ff1f4b}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(255,56,96,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled:after{border-color:#f5f5f5}.select.is-fullwidth,.select.is-fullwidth select{width:100%}.select.is-loading:after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#000}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#000}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em hsla(0,0%,100%,.25);color:#000}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#000}.file.is-black .file-cta,.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,0,0,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em hsla(0,0%,96.1%,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#1f89e5;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#1a82dd;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(31,137,229,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#197bd2;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#4387f4;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#377ff3;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(67,135,244,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#2b77f3;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#55b978;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#4cb671;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(85,185,120,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#47ae6b;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,221,87,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#ff3860;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#ff2b56;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,56,96,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ff1f4b;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#f5f5f5}.file-name{border:1px solid #dbdbdb;border-left-width:0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#000}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#1f89e5}.help.is-info{color:#4387f4}.help.is-success{color:#55b978}.help.is-warning{color:#ffdd57}.help.is-danger{color:#ff3860}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media print,screen and (min-width:769px){.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media print,screen and (min-width:769px){.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#f5f5f5}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading:after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile,.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media print,screen and (min-width:769px){.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media print,screen and (min-width:769px){.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media print,screen and (min-width:769px){.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{display:flex}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#f5f5f5;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#1f89e5;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#000}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#000;color:#fff}.message.is-black .message-body{border-color:#000}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#edf5fd}.message.is-link .message-header{background-color:#1f89e5;color:#fff}.message.is-link .message-body{border-color:#1f89e5;color:#1671c0}.message.is-info{background-color:#ecf3fe}.message.is-info .message-header{background-color:#4387f4;color:#fff}.message.is-info .message-body{border-color:#4387f4;color:#0c53c6}.message.is-success{background-color:#f1f9f4}.message.is-success .message-header{background-color:#55b978;color:#fff}.message.is-success .message-body{border-color:#55b978;color:#327b4c}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#ffebef}.message.is-danger .message-header{background-color:#ff3860;color:#fff}.message.is-danger .message-body{border-color:#ff3860;color:#db002c}.message-header{align-items:center;background-color:#f5f5f5;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-radius:4px;border:solid #dbdbdb;border-width:0 0 0 4px;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#000}.message-body pre code{background-color:transparent}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#f5f5f5;color:#f5f5f5;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#f5f5f5;color:#000}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#1f89e5}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(0,0,0,.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#4a4a4a;border-color:#7a7a7a;box-shadow:none;color:#a3a3a3;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#1f89e5;border-color:#1f89e5;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-list li,.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom:1px solid #dbdbdb;color:#f5f5f5;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#f5f5f5}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#1f89e5;color:#1f89e5}.tabs ul{align-items:center;border-bottom:1px solid #dbdbdb;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-center,.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#363636;border-bottom-color:#7a7a7a}.tabs.is-boxed li.is-active a{background-color:#000;border-color:#7a7a7a;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border:1px solid #dbdbdb;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#1f89e5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#1f89e5;border-color:#1f89e5;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media print,screen and (min-width:769px){.column.is-narrow,.column.is-narrow-tablet{flex:none}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:.75rem}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1*var(--columnGap));margin-right:calc(-1*var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media print,screen and (min-width:769px){.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media print,screen and (min-width:769px){.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black,a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#000!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#1f89e5!important}a.has-text-link:focus,a.has-text-link:hover{color:#166ebb!important}.has-background-link{background-color:#1f89e5!important}.has-text-link-light{color:#edf5fd!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#bfddf8!important}.has-background-link-light{background-color:#edf5fd!important}.has-text-link-dark{color:#1671c0!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#248be5!important}.has-background-link-dark{background-color:#1671c0!important}.has-text-info{color:#4387f4!important}a.has-text-info:focus,a.has-text-info:hover{color:#1368f1!important}.has-background-info{background-color:#4387f4!important}.has-text-info-light{color:#ecf3fe!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#bcd4fb!important}.has-background-info-light{background-color:#ecf3fe!important}.has-text-info-dark{color:#0c53c6!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#1368f1!important}.has-background-info-dark{background-color:#0c53c6!important}.has-text-success{color:#55b978!important}a.has-text-success:focus,a.has-text-success:hover{color:#409c60!important}.has-background-success{background-color:#55b978!important}.has-text-success-light{color:#f1f9f4!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#ccead7!important}.has-background-success-light{background-color:#f1f9f4!important}.has-text-success-dark{color:#327b4c!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#419f62!important}.has-background-success-dark{background-color:#327b4c!important}.has-text-warning{color:#ffdd57!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd324!important}.has-background-warning{background-color:#ffdd57!important}.has-text-warning-light{color:#fffbeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#fff1b8!important}.has-background-warning-light{background-color:#fffbeb!important}.has-text-warning-dark{color:#947600!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79f00!important}.has-background-warning-dark{background-color:#947600!important}.has-text-danger{color:#ff3860!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ff0537!important}.has-background-danger{background-color:#ff3860!important}.has-text-danger-light{color:#ffebef!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#ffb8c6!important}.has-background-danger-light{background-color:#ffebef!important}.has-text-danger-dark{color:#db002c!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ff0f3f!important}.has-background-danger-dark{background-color:#db002c!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-clearfix:after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.mx-0{margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4,.mx-4{margin-left:1rem!important}.mx-4{margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6,.mx-6{margin-left:3rem!important}.mx-6{margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.px-0{padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3,.px-3{padding-left:.75rem!important}.px-3{padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4,.px-4{padding-left:1rem!important}.px-4{padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5,.px-5{padding-left:1.5rem!important}.px-5{padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6,.px-6{padding-left:3rem!important}.px-6{padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media print,screen and (min-width:769px){.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media print,screen and (min-width:769px){.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media print,screen and (min-width:769px){.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media print,screen and (min-width:769px){.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media print,screen and (min-width:769px){.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary,.is-family-sans-serif,.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Ubuntu,Roboto,Oxygen,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif!important}.is-family-code,.is-family-monospace{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media print,screen and (min-width:769px){.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media print,screen and (min-width:769px){.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media print,screen and (min-width:769px){.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media print,screen and (min-width:769px){.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media print,screen and (min-width:769px){.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media print,screen and (min-width:769px){.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media print,screen and (min-width:769px){.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#000}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#000}.hero.is-white .subtitle{color:rgba(0,0,0,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#000}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(0,0,0,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#000}.hero.is-white .tabs a{color:#000;opacity:.9}.hero.is-white .tabs a:hover,.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#000}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#000;border-color:#000;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6,#fff 71%,#fff)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6,#fff 71%,#fff)}}.hero.is-black{background-color:#000;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#000}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover,.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#000}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000,#000 71%,#0d0d0d)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000,#000 71%,#0d0d0d)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover,.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9,#f5f5f5 71%,#fff)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9,#f5f5f5 71%,#fff)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover,.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a,#363636 71%,#46403f)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a,#363636 71%,#46403f)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover,.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c,#00d1b2 71%,#00e7eb)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c,#00d1b2 71%,#00e7eb)}}.hero.is-link{background-color:#1f89e5;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#1f89e5}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#197bd2;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover,.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1f89e5}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#0c8ec6,#1f89e5 71%,#3176ed)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#0c8ec6,#1f89e5 71%,#3176ed)}}.hero.is-info{background-color:#4387f4;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#4387f4}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#2b77f3;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover,.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4387f4}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#068efe,#4387f4 71%,#577afa)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#068efe,#4387f4 71%,#577afa)}}.hero.is-success{background-color:#55b978;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#55b978}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#47ae6b;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover,.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#55b978}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#35a74a,#55b978 71%,#62c696)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#35a74a,#55b978 71%,#62c696)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover,.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffaf24,#ffdd57 71%,#fffa70)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffaf24,#ffdd57 71%,#fffa70)}}.hero.is-danger{background-color:#ff3860;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:hsla(0,0%,100%,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#ff3860}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:hsla(0,0%,100%,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover,.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(0,0,0,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ff3860}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#ff0561,#ff3860 71%,#ff5257)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ff0561,#ff3860 71%,#ff5257)}}.hero.is-small .hero-body{padding:1.5rem}@media print,screen and (min-width:769px){.hero.is-medium .hero-body{padding:9rem 1.5rem}}@media print,screen and (min-width:769px){.hero.is-large .hero-body{padding:18rem 1.5rem}}.hero.is-fullheight-with-navbar .hero-body,.hero.is-fullheight .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media print,screen and (min-width:769px){.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0}.hero-body,.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}@-webkit-keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}@keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}@-webkit-keyframes floatUp{0%{opacity:0;transform:scale(.86)}25%{opacity:1}67%{transform:scale(1)}to{transform:scale(1)}}@keyframes floatUp{0%{opacity:0;transform:scale(.86)}25%{opacity:1}67%{transform:scale(1)}to{transform:scale(1)}}html{overflow-y:auto}body{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.message-body code,code{background-color:#000;border-radius:5px;font-size:1rem}.input::-moz-placeholder,.textarea::-moz-placeholder{color:#ededed}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:#ededed}.input:-moz-placeholder,.textarea:-moz-placeholder{color:#ededed}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:#ededed}.label{color:#f5f5f5;font-weight:400}.help{color:#ededed}.progress{background-color:#7a7a7a}.button.is-info.is-hovered [class*=" icon-"]:before,.button.is-info.is-hovered [class^=icon-]:before,.button.is-info:hover [class*=" icon-"]:before,.button.is-info:hover [class^=icon-]:before{fill:#fff}.button.is-wrappable{white-space:break-spaces;min-height:2.25em;height:auto}.button.is-dangerish{background-color:#ff7043;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-dangerish.is-hovered,.button.is-dangerish:not([disabled]):hover{background-color:#ff8a65;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-dangerish.is-active,.button.is-dangerish:not([disabled]):active{background-color:#ff5722;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-dangerish.is-outlined{background-color:transparent;border-color:#ff7043;color:#ff7043}.button.is-dangerish.is-outlined.is-focused,.button.is-dangerish.is-outlined.is-hovered,.button.is-dangerish.is-outlined:not([disabled]):focus,.button.is-dangerish.is-outlined:not([disabled]):hover{background-color:#ff7043;border-color:#ff7043;color:rgba(0,0,0,.7)}.checkbox:hover,.radio:hover{color:#b5b5b5}.select:not(.is-multiple):not(.is-loading):after,.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#f5f5f5}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#7a7a7a}.message{background-color:#2f2f2f}.message-body{color:#f5f5f5;border:0}.table{color:#ededed;background-color:#000}.table.is-narrow{font-size:.75rem}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#2f2f2f}.table td,.table th{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #7a7a7a}.table th{color:#f5f5f5;height:2.25em;font-weight:400}.table th.capitalize{text-transform:capitalize}.table thead td,.table thead th{color:#f5f5f5;background-color:#383838;border-bottom:0;height:31px}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:1px}.table .cell-indent{padding-left:2.25em}.delete:after,.delete:before{background-color:#f5f5f5}.cc-window{font-family:inherit!important}.cc-link{padding:0!important}.section.has-extra-bottom-padding{padding-bottom:6.5rem}a.floating-home-button{display:flex;position:fixed;right:1.5rem;bottom:1.5rem;border-radius:100%;background-color:#1f89e5;color:#fff;width:3.5rem;height:3.5rem;justify-content:center;align-items:center;transition:background-color .25s,color .25s}a.floating-home-button:hover{background-color:#edf5fd;color:#000}a.floating-home-button>.icon{margin-top:-2px}.hero.is-fullheight>.hero-body{min-height:100vh;height:100%}.hero.is-fullheight>.hero-body>.container{width:100%} -/*# sourceMappingURL=style.css.map */ diff --git a/dist/css/style.css.map b/dist/css/style.css.map deleted file mode 100644 index 7c56065..0000000 --- a/dist/css/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/bulma/sass/utilities/animations.sass","../node_modules/bulma/sass/utilities/mixins.sass","../node_modules/bulma/sass/utilities/initial-variables.sass","css/_variables.scss","../node_modules/bulma/sass/utilities/controls.sass","../node_modules/bulma/sass/base/minireset.sass","../node_modules/bulma/sass/base/generic.sass","../node_modules/bulma/sass/utilities/functions.sass","../node_modules/bulma/sass/elements/button.sass","../node_modules/bulma/sass/elements/container.sass","../node_modules/bulma/sass/elements/content.sass","../node_modules/bulma/sass/elements/icon.sass","../node_modules/bulma/sass/elements/notification.sass","../node_modules/bulma/sass/elements/progress.sass","../node_modules/bulma/sass/elements/table.sass","../node_modules/bulma/sass/elements/title.sass","../node_modules/bulma/sass/elements/other.sass","../node_modules/bulma/sass/form/shared.sass","../node_modules/bulma/sass/form/input-textarea.sass","../node_modules/bulma/sass/form/checkbox-radio.sass","../node_modules/bulma/sass/form/select.sass","../node_modules/bulma/sass/form/file.sass","../node_modules/bulma/sass/form/tools.sass","../node_modules/bulma/sass/components/level.sass","../node_modules/bulma/sass/components/menu.sass","../node_modules/bulma/sass/components/message.sass","../node_modules/bulma/sass/components/pagination.sass","../node_modules/bulma/sass/components/tabs.sass","../node_modules/bulma/sass/grid/columns.sass","../node_modules/bulma/sass/grid/tiles.sass","../node_modules/bulma/sass/helpers/color.sass","../node_modules/bulma/sass/helpers/float.sass","../node_modules/bulma/sass/helpers/other.sass","../node_modules/bulma/sass/helpers/overflow.sass","../node_modules/bulma/sass/helpers/position.sass","../node_modules/bulma/sass/helpers/spacing.sass","../node_modules/bulma/sass/helpers/typography.sass","../node_modules/bulma/sass/helpers/visibility.sass","../node_modules/bulma/sass/layout/hero.sass","../node_modules/bulma/sass/layout/section.sass","css/style.scss"],"names":[],"mappings":"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CM0JrB,iBN1JqB,CM2JrB,ULrKY,CKyCtB,8CA+HY,wDAA8D,CA/H1E,0NAqIc,wDAA4E,CArI1F,uFAwIU,4BAA6B,CAC7B,iBNxKqB,CMyKrB,eAAgB,CAChB,UN1KqB,CM+B/B,yCA6IQ,4BAA6B,CAC7B,iBLvLc,CKwLd,ULxLc,CKyCtB,sMAoJU,qBL7LY,CK8LZ,UNpLqB,CM+B/B,0QA4Jc,wDAA8D,CA5J5E,+GA+JU,4BAA6B,CAC7B,iBLzMY,CK0MZ,eAAgB,CAChB,UL3MY,CKyCtB,oEAgFQ,qBDjByB,CCkBzB,wBAAyB,CACzB,UNjHuB,CM+B/B,mDAqFQ,wBAAyB,CACzB,UNrHuB,CM+B/B,6EAwFU,uCLjIY,CKyCtB,mDA2FQ,qBD5ByB,CC6BzB,wBAAyB,CACzB,UN5HuB,CM+B/B,+DAgGQ,qBLzIc,CK0Id,wBAAyB,CACzB,eAAgB,CAlGxB,6BAoGQ,qBNnIuB,CMoIvB,UL9Ic,CKyCtB,2EAwGU,wBDzCuB,CC/DjC,uFA2GU,qBN1IqB,CM2IrB,wBAAyB,CACzB,eAAgB,CAChB,ULvJY,CKyCtB,kCAiHU,wDAA4E,CAjHtF,6BAmHQ,4BAA6B,CAC7B,iBL7Jc,CK8Jd,UL9Jc,CKyCtB,sJA0HU,qBLnKY,CKoKZ,iBLpKY,CKqKZ,UN3JqB,CM+B/B,8CA+HY,wDAA8D,CA/H1E,0NAqIc,wDAA4E,CArI1F,uFAwIU,4BAA6B,CAC7B,iBLlLY,CKmLZ,eAAgB,CAChB,ULpLY,CKyCtB,yCA6IQ,4BAA6B,CAC7B,iBN7KuB,CM8KvB,UN9KuB,CM+B/B,sMAoJU,qBNnLqB,CMoLrB,UL9LY,CKyCtB,0QA4Jc,wDAA8D,CA5J5E,+GA+JU,4BAA6B,CAC7B,iBN/LqB,CMgMrB,eAAgB,CAChB,UNjMqB,CM+B/B,iBA2EM,wBN5GwB,CM6GxB,wBAAyB,CACzB,oBD3Ce,CClCrB,mDAgFQ,qBDjByB,CCkBzB,wBAAyB,CACzB,oBDhDa,CClCrB,mDAqFQ,wBAAyB,CACzB,oBDpDa,CClCrB,6EAwFU,4CNzHoB,CMiC9B,mDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,oBD3Da,CClCrB,+DAgGQ,wBNjIsB,CMkItB,wBAAyB,CACzB,eAAgB,CAlGxB,6BAqGQ,aNtIsB,CMiC9B,wGAoGQ,+BDrCyB,CC/DjC,uFA2GU,+BDzEW,CC0EX,wBAAyB,CACzB,eAAgB,CAChB,aN/IoB,CMiC9B,kCAiHU,4EAA4E,CAjHtF,6BAmHQ,4BAA6B,CAC7B,oBNrJsB,CMsJtB,aNtJsB,CMiC9B,sJA0HU,wBN3JoB,CM4JpB,oBN5JoB,CM6JpB,oBD1FW,CClCrB,8CA+HY,8DAA8D,CA/H1E,0NAqIc,4EAA4E,CArI1F,uFAwIU,4BAA6B,CAC7B,oBN1KoB,CM2KpB,eAAgB,CAChB,aN5KoB,CMiC9B,yCA6IQ,4BAA6B,CAC7B,2BD5Ga,CC6Gb,oBD7Ga,CClCrB,sMAoJU,+BDlHW,CCmHX,aNtLoB,CMiC9B,0QA4Jc,8DAA8D,CA5J5E,+GA+JU,4BAA6B,CAC7B,2BD9HW,CC+HX,eAAgB,CAChB,oBDhIW,CClCrB,gBA2EM,wBNnHwB,CMoHxB,wBAAyB,CACzB,UDzCU,CCpChB,iDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,iDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,2EAwFU,0CNhIoB,CMwC9B,iDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,6DAgGQ,wBNxIsB,CMyItB,wBAAyB,CACzB,eAAgB,CAlGxB,4BAoGQ,qBDhEQ,CCiER,aN7IsB,CMwC9B,yEAwGU,wBDzCuB,CC/DjC,qFA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aNtJoB,CMwC9B,iCAiHU,wDAA4E,CAjHtF,4BAmHQ,4BAA6B,CAC7B,oBN5JsB,CM6JtB,aN7JsB,CMwC9B,kJA0HU,wBNlKoB,CMmKpB,oBNnKoB,CMoKpB,UDxFM,CCpChB,6CA+HY,8DAA8D,CA/H1E,sNAqIc,wDAA4E,CArI1F,qFAwIU,4BAA6B,CAC7B,oBNjLoB,CMkLpB,eAAgB,CAChB,aNnLoB,CMwC9B,wCA6IQ,4BAA6B,CAC7B,iBD1GQ,CC2GR,UD3GQ,CCpChB,kMAoJU,qBDhHM,CCiHN,aN7LoB,CMwC9B,sQA4Jc,8DAA8D,CA5J5E,6GA+JU,4BAA6B,CAC7B,iBD5HM,CC6HN,eAAgB,CAChB,UD9HM,CCpChB,mBA2EM,wBNrG4B,CMsG5B,wBAAyB,CACzB,UDzCU,CCpChB,uDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,uDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,iFAwFU,2CNlHwB,CM0BlC,uDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,mEAgGQ,wBN1H0B,CM2H1B,wBAAyB,CACzB,eAAgB,CAlGxB,+BAoGQ,qBDhEQ,CCiER,aN/H0B,CM0BlC,+EAwGU,wBDzCuB,CC/DjC,2FA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aNxIwB,CM0BlC,oCAiHU,wDAA4E,CAjHtF,+BAmHQ,4BAA6B,CAC7B,oBN9I0B,CM+I1B,aN/I0B,CM0BlC,8JA0HU,wBNpJwB,CMqJxB,oBNrJwB,CMsJxB,UDxFM,CCpChB,gDA+HY,8DAA8D,CA/H1E,kOAqIc,wDAA4E,CArI1F,2FAwIU,4BAA6B,CAC7B,oBNnKwB,CMoKxB,eAAgB,CAChB,aNrKwB,CM0BlC,2CA6IQ,4BAA6B,CAC7B,iBD1GQ,CC2GR,UD3GQ,CCpChB,8MAoJU,qBDhHM,CCiHN,aN/KwB,CM0BlC,kRA4Jc,8DAA8D,CA5J5E,mHA+JU,4BAA6B,CAC7B,iBD5HM,CC6HN,eAAgB,CAChB,UD9HM,CCpChB,4BAwKU,wBD7HsC,CC8HtC,aDrH2D,CCpDrE,yEA4KY,wBD7GqB,CC8GrB,wBAAyB,CACzB,aD1HyD,CCpDrE,yEAiLY,wBDlHqB,CCmHrB,wBAAyB,CACzB,aD/HyD,CCpDrE,gBA2EM,wBLjHmB,CKkHnB,wBAAyB,CACzB,UDzCU,CCpChB,iDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,iDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,2EAwFU,4CL9He,CKsCzB,iDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,6DAgGQ,wBLtIiB,CKuIjB,wBAAyB,CACzB,eAAgB,CAlGxB,4BAoGQ,qBDhEQ,CCiER,aL3IiB,CKsCzB,yEAwGU,wBDzCuB,CC/DjC,qFA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aLpJe,CKsCzB,iCAiHU,wDAA4E,CAjHtF,4BAmHQ,4BAA6B,CAC7B,oBL1JiB,CK2JjB,aL3JiB,CKsCzB,kJA0HU,wBLhKe,CKiKf,oBLjKe,CKkKf,UDxFM,CCpChB,6CA+HY,8DAA8D,CA/H1E,sNAqIc,wDAA4E,CArI1F,qFAwIU,4BAA6B,CAC7B,oBL/Ke,CKgLf,eAAgB,CAChB,aLjLe,CKsCzB,wCA6IQ,4BAA6B,CAC7B,iBD1GQ,CC2GR,UD3GQ,CCpChB,kMAoJU,qBDhHM,CCiHN,aL3Le,CKsCzB,sQA4Jc,8DAA8D,CA5J5E,6GA+JU,4BAA6B,CAC7B,iBD5HM,CC6HN,eAAgB,CAChB,UD9HM,CCpChB,yBAwKU,wBD7HsC,CC8HtC,aDrH2D,CCpDrE,mEA4KY,wBD7GqB,CC8GrB,wBAAyB,CACzB,aD1HyD,CCpDrE,mEAiLY,wBDlHqB,CCmHrB,wBAAyB,CACzB,aD/HyD,CCpDrE,gBA2EM,wBLlHmB,CKmHnB,wBAAyB,CACzB,UDzCU,CCpChB,iDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,iDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,2EAwFU,4CL/He,CKuCzB,iDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,6DAgGQ,wBLvIiB,CKwIjB,wBAAyB,CACzB,eAAgB,CAlGxB,4BAoGQ,qBDhEQ,CCiER,aL5IiB,CKuCzB,yEAwGU,wBDzCuB,CC/DjC,qFA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aLrJe,CKuCzB,iCAiHU,wDAA4E,CAjHtF,4BAmHQ,4BAA6B,CAC7B,oBL3JiB,CK4JjB,aL5JiB,CKuCzB,kJA0HU,wBLjKe,CKkKf,oBLlKe,CKmKf,UDxFM,CCpChB,6CA+HY,8DAA8D,CA/H1E,sNAqIc,wDAA4E,CArI1F,qFAwIU,4BAA6B,CAC7B,oBLhLe,CKiLf,eAAgB,CAChB,aLlLe,CKuCzB,wCA6IQ,4BAA6B,CAC7B,iBD1GQ,CC2GR,UD3GQ,CCpChB,kMAoJU,qBDhHM,CCiHN,aL5Le,CKuCzB,sQA4Jc,8DAA8D,CA5J5E,6GA+JU,4BAA6B,CAC7B,iBD5HM,CC6HN,eAAgB,CAChB,UD9HM,CCpChB,yBAwKU,wBD7HsC,CC8HtC,aDrH2D,CCpDrE,mEA4KY,wBD7GqB,CC8GrB,wBAAyB,CACzB,aD1HyD,CCpDrE,mEAiLY,wBDlHqB,CCmHrB,wBAAyB,CACzB,aD/HyD,CCpDrE,mBA2EM,wBLnHoB,CKoHpB,wBAAyB,CACzB,UDzCU,CCpChB,uDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,uDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,iFAwFU,4CLhIgB,CKwC1B,uDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,mEAgGQ,wBLxIkB,CKyIlB,wBAAyB,CACzB,eAAgB,CAlGxB,+BAoGQ,qBDhEQ,CCiER,aL7IkB,CKwC1B,+EAwGU,wBDzCuB,CC/DjC,2FA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aLtJgB,CKwC1B,oCAiHU,wDAA4E,CAjHtF,+BAmHQ,4BAA6B,CAC7B,oBL5JkB,CK6JlB,aL7JkB,CKwC1B,8JA0HU,wBLlKgB,CKmKhB,oBLnKgB,CKoKhB,UDxFM,CCpChB,gDA+HY,8DAA8D,CA/H1E,kOAqIc,wDAA4E,CArI1F,2FAwIU,4BAA6B,CAC7B,oBLjLgB,CKkLhB,eAAgB,CAChB,aLnLgB,CKwC1B,2CA6IQ,4BAA6B,CAC7B,iBD1GQ,CC2GR,UD3GQ,CCpChB,8MAoJU,qBDhHM,CCiHN,aL7LgB,CKwC1B,kRA4Jc,8DAA8D,CA5J5E,mHA+JU,4BAA6B,CAC7B,iBD5HM,CC6HN,eAAgB,CAChB,UD9HM,CCpChB,4BAwKU,wBD7HsC,CC8HtC,aDrH2D,CCpDrE,yEA4KY,wBD7GqB,CC8GrB,wBAAyB,CACzB,aD1HyD,CCpDrE,yEAiLY,wBDlHqB,CCmHrB,wBAAyB,CACzB,aD/HyD,CCpDrE,mBA2EM,wBNvG4B,CMwG5B,wBAAyB,CACzB,oBD3Ce,CClCrB,uDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,oBDhDa,CClCrB,uDAqFQ,wBAAyB,CACzB,oBDpDa,CClCrB,iFAwFU,4CNpHwB,CM4BlC,uDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,oBD3Da,CClCrB,mEAgGQ,wBN5H0B,CM6H1B,wBAAyB,CACzB,eAAgB,CAlGxB,+BAqGQ,aNjI0B,CM4BlC,8GAoGQ,+BDrCyB,CC/DjC,2FA2GU,+BDzEW,CC0EX,wBAAyB,CACzB,eAAgB,CAChB,aN1IwB,CM4BlC,oCAiHU,4EAA4E,CAjHtF,+BAmHQ,4BAA6B,CAC7B,oBNhJ0B,CMiJ1B,aNjJ0B,CM4BlC,8JA0HU,wBNtJwB,CMuJxB,oBNvJwB,CMwJxB,oBD1FW,CClCrB,gDA+HY,8DAA8D,CA/H1E,kOAqIc,4EAA4E,CArI1F,2FAwIU,4BAA6B,CAC7B,oBNrKwB,CMsKxB,eAAgB,CAChB,aNvKwB,CM4BlC,2CA6IQ,4BAA6B,CAC7B,2BD5Ga,CC6Gb,oBD7Ga,CClCrB,8MAoJU,+BDlHW,CCmHX,aNjLwB,CM4BlC,kRA4Jc,8DAA8D,CA5J5E,mHA+JU,4BAA6B,CAC7B,2BD9HW,CC+HX,eAAgB,CAChB,oBDhIW,CClCrB,4BAwKU,wBD7HsC,CC8HtC,aDrH2D,CCpDrE,yEA4KY,wBD7GqB,CC8GrB,wBAAyB,CACzB,aD1HyD,CCpDrE,yEAiLY,wBDlHqB,CCmHrB,wBAAyB,CACzB,aD/HyD,CCpDrE,kBA2EM,wBLhHmB,CKiHnB,wBAAyB,CACzB,UDzCU,CCpChB,qDAgFQ,wBDjByB,CCkBzB,wBAAyB,CACzB,UD9CQ,CCpChB,qDAqFQ,wBAAyB,CACzB,UDlDQ,CCpChB,+EAwFU,2CL7He,CKqCzB,qDA2FQ,wBD5ByB,CC6BzB,wBAAyB,CACzB,UDzDQ,CCpChB,iEAgGQ,wBLrIiB,CKsIjB,wBAAyB,CACzB,eAAgB,CAlGxB,8BAoGQ,qBDhEQ,CCiER,aL1IiB,CKqCzB,6EAwGU,wBDzCuB,CC/DjC,yFA2GU,qBDvEM,CCwEN,wBAAyB,CACzB,eAAgB,CAChB,aLnJe,CKqCzB,m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kCAuCU,wBL2CsC,CK1CtC,aLmD2D,CK3FrE,yBAgCM,wBVrB4B,CUsB5B,oBLwCe,CKzErB,kCAuCU,wBL2CsC,CK1CtC,aLmD2D,CK3FrE,wBAgCM,wBT9BmB,CS+BnB,UL0CU,CK3EhB,iCAuCU,wBL2CsC,CK1CtC,aLmD2D,CM5FrE,UAEE,oBAAqB,CACrB,uBAAwB,CACxB,WAAY,CACZ,sBX4DuB,CW3DvB,aAAc,CACd,WXwBW,CWvBX,eAAgB,CAChB,SAAU,CACV,UAAW,CAVb,gCAYI,wBXP2B,CWL/B,kCAcI,wBXP0B,CWP9B,6BAgBI,wBXT0B,CWP9B,oBAkBI,wBXX0B,CWY1B,WAAY,CAnBhB,2CAyBQ,qBXhBuB,CWT/B,sCA2BQ,qBXlBuB,CWT/B,6BA6BQ,qBXpBuB,CWT/B,iCA+BQ,0DAA2F,CA/BnG,2CAyBQ,qBV1Bc,CUCtB,sCA2BQ,qBV5Bc,CUCtB,6BA6BQ,qBV9Bc,CUCtB,iCA+BQ,0DAA2F,CA/BnG,2CAyBQ,wBXlBsB,CWP9B,sCA2BQ,wBXpBsB,CWP9B,6BA6BQ,wBXtBsB,CWP9B,iCA+BQ,6DAA2F,CA/BnG,0CAyBQ,wBXzBsB,CWA9B,qCA2BQ,wBX3BsB,CWA9B,4BA6BQ,wBX7BsB,CWA9B,gCA+BQ,6DAA2F,CA/BnG,6CAyBQ,wBXX0B,CWdlC,wCA2BQ,wBXb0B,CWdlC,+BA6BQ,wBXf0B,CWdlC,mCA+BQ,6DAA2F,CA/BnG,0CAyBQ,wBVvBiB,CUFzB,qCA2BQ,wBVzBiB,CUFzB,4BA6BQ,wBV3BiB,CUFzB,gCA+BQ,6DAA2F,CA/BnG,0CAyBQ,wBVxBiB,CUDzB,qCA2BQ,wBV1BiB,CUDzB,4BA6BQ,wBV5BiB,CUDzB,gCA+BQ,6DAA2F,CA/BnG,6CAyBQ,wBVzBkB,CUA1B,wCA2BQ,wBV3BkB,CUA1B,+BA6BQ,wBV7BkB,CUA1B,mCA+BQ,6DAA2F,CA/BnG,6CAyBQ,wBXb0B,CWZlC,wCA2BQ,wBXf0B,CWZlC,+BA6BQ,wBXjB0B,CWZlC,mCA+BQ,6DAA2F,CA/BnG,4CAyBQ,wBVtBiB,CUHzB,uCA2BQ,wBVxBiB,CUHzB,8BA6BQ,wBV1BiB,CUHzB,kCA+BQ,6DA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iBAAkB,CAClB,kBAAmB,CCerB,gCAxBE,qBdxBoB,CcyBpB,oBftB4B,CeuB5B,iBfsCU,CerCV,afnB4B,CDsD1B,sFgBjCA,afvB2B,CDwD3B,iHgBjCA,afvB2B,CDwD3B,mFgBjCA,afvB2B,CDwD3B,kGgBjCA,afvB2B,CewB7B,mHAEE,oBd7BqB,Cc8BvB,sOAIE,oBV+C4C,CU9C5C,4CdnCqB,CcoCvB,yLAEE,wBfvC0B,CewC1B,oBfvC0B,CewC1B,eAAgB,CAChB,afpC0B,CDsD1B,uTgBhBE,afxCyB,CDwD3B,sXgBhBE,afxCyB,CDwD3B,gTgBhBE,afxCyB,CDwD3B,mVgBhBE,afxCyB,CgBP/B,iBAEE,iDfDoB,CeEpB,cAAe,CACf,UAAW,CACX,qCACE,eAAgB,CAIhB,mCACE,iBhBAyB,CgBD1B,gNAMG,2ChBLuB,CgBD3B,mCACE,iBfVgB,CeSjB,gNAMG,uCffc,CeSlB,mCACE,oBhBFwB,CgBCzB,gNAMG,4ChBPsB,CgBC1B,iCACE,oBhBTwB,CgBQzB,wMAMG,0ChBdsB,CgBQ1B,uCACE,oBhBK4B,CgBN7B,gOAMG,2ChBA0B,CgBN9B,iCACE,oBfPmB,CeMpB,wMAMG,4CfZiB,CeMrB,iCACE,oBfRmB,CeOpB,wMAMG,4CfbiB,CeOrB,uCACE,oBfToB,CeQrB,gOAMG,4CfdkB,CeQtB,uCACE,oBhBG4B,CgBJ7B,gOAMG,4ChBF0B,CgBJ9B,qCACE,oBfNmB,CeKpB,wNAMG,2CfXiB,CeavB,mCdsBA,iBFwBgB,CEvBhB,gBFPc,CgBdd,qCduBA,iBFXc,CgBVd,mCduBA,gBFda,CgBNb,2CACE,aAAc,CACd,UAAW,CACb,qCACE,cAAe,CACf,UAAW,CAEf,kBAGI,sBhBgCqB,CgB/BrB,gCAA4D,CAC5D,iCAA6D,CALjE,iBAOI,4BAA6B,CAC7B,wBAAyB,CACzB,eAAgB,CAChB,cAAe,CACf,eAAgB,CAEpB,UAEE,aAAc,CACd,cAAe,CACf,cAAe,CACf,yBd7CkE,Cc8ClE,eAAgB,CANlB,sBAQI,eAxDsB,CAyDtB,cAxDqB,CA+CzB,gBAWI,WAAe,CAXnB,yBAcI,WAAY,CC/DhB,iBACE,cAAe,CACf,oBAAqB,CACrB,gBAAiB,CACjB,iBAAkB,CAClB,6BACE,cAAe,CACjB,6BACE,ajBF0B,CiBG5B,4FAEE,ajBE0B,CiBD1B,kBAAmB,CAKvB,clB+HI,gBkB5HqC,CCpBzC,QACE,oBAAqB,CACrB,cAAe,CACf,iBAAkB,CAClB,kBAAmB,CAJrB,0BAMI,YhBDkB,CgBLtB,iDAUM,oBjBFmB,CFgJrB,amB7I+B,CAC7B,SAAU,CAZhB,0BAeM,sBlBwDmB,CDyErB,gBmBhIsC,CAhB1C,eAmBI,cAAe,CACf,aAAc,CACd,aAAc,CACd,cAAe,CACf,YAAa,CAvBjB,2BAyBM,YAAa,CAzBnB,+BnBgJI,mBmBlHwC,CA9B5C,yBAgCM,WAAY,CACZ,SAAU,CAjChB,gCAmCQ,gBAAkB,CAnC1B,uDAuCM,oBlBjCwB,CkBN9B,2DA+CQ,iBlBhCuB,CkBf/B,iEAkDU,oBb2DuB,Ca7GjC,kIAuDU,2ClBxCqB,CkBf/B,4HAkDU,iBb2DuB,Ca7GjC,kIAuDU,uCjBlDY,CiBLtB,2DA+CQ,oBlBlCsB,CkBb9B,iEAkDU,oBb2DuB,Ca7GjC,kIAuDU,4ClB1CoB,CkBb9B,yDA+CQ,oBlBzCsB,CkBN9B,+DAkDU,oBb2DuB,Ca7GjC,8HAuDU,0ClBjDoB,CkBN9B,+DA+CQ,oBlB3B0B,CkBpBlC,qEAkDU,oBb2DuB,Ca7GjC,0IAuDU,2ClBnCwB,CkBpBlC,yDA+CQ,oBjBvCiB,CiBRzB,+DAkDU,oBb2DuB,Ca7GjC,8HAuDU,4CjB/Ce,CiBRzB,yDA+CQ,oBjBxCiB,CiBPzB,+DAkDU,oBb2DuB,Ca7GjC,8HAuDU,4CjBhDe,CiBPzB,+DA+CQ,oBjBzCkB,CiBN1B,qEAkDU,oBb2DuB,Ca7GjC,0IAuDU,4CjBjDgB,CiBN1B,+DA+CQ,oBlB7B0B,CkBlBlC,qEAkDU,oBb2DuB,Ca7GjC,0IAuDU,4ClBrCwB,CkBlBlC,6DA+CQ,oBjBtCiB,CiBTzB,mEAkDU,oBb2DuB,Ca7GjC,sIAuDU,2CjB9Ce,CiBTzB,iBhB4CE,iBFwBgB,CEvBhB,gBFPc,CkBtChB,kBhB+CE,iBFXc,CkBpChB,iBhBiDE,gBFda,CkBnCf,0BAkEM,oBlBrDwB,CkBb9B,iDAsEM,UAAW,CAtEjB,yBA0EM,YAAa,CACb,iBAAkB,CnB6EpB,YmB5E+B,CAC7B,UAAY,CACZ,cAAe,CA9ErB,kCAgFM,gBlB1CU,CkBtChB,mCAkFM,iBlB9CU,CkBpChB,kCAoFM,gBlBjDS,CmBtBf,MAEE,mBAAoB,CACpB,YAAa,CACb,0BAA2B,CAC3B,iBAAkB,CALpB,yBAYQ,qBnBVuB,CmBWvB,wBAAyB,CACzB,UlBtBc,CkBQtB,mEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UlB5BY,CkBQtB,mEAwBU,wBAAyB,CACzB,uCnBvBqB,CmBwBrB,UlBlCY,CkBQtB,mEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UlBxCY,CkBQtB,4FAYQ,qBlBpBc,CkBqBd,wBAAyB,CACzB,UnBZuB,CmBF/B,mEAwBU,wBAAyB,CACzB,mClBjCY,CkBkCZ,UnBxBqB,CmBF/B,mEA8BU,qBdkEuB,CcjEvB,wBAAyB,CACzB,UnB9BqB,CmBF/B,yBAYQ,wBnBZsB,CmBatB,wBAAyB,CACzB,oBdqDa,CcnErB,mEAkBU,qBd8EuB,Cc7EvB,wBAAyB,CACzB,oBd+CW,CcnErB,mEAwBU,wBAAyB,CACzB,wCnBzBoB,CmB0BpB,oBdyCW,CcnErB,mEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,oBdmCW,CcnErB,wBAYQ,wBnBnBsB,CmBoBtB,wBAAyB,CACzB,UduDQ,CcrEhB,iEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,iEAwBU,wBAAyB,CACzB,sCnBhCoB,CmBiCpB,Ud2CM,CcrEhB,iEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,2BAYQ,wBnBL0B,CmBM1B,wBAAyB,CACzB,UduDQ,CcrEhB,uEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,uEAwBU,wBAAyB,CACzB,uCnBlBwB,CmBmBxB,Ud2CM,CcrEhB,uEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,wBAYQ,wBlBjBiB,CkBkBjB,wBAAyB,CACzB,UduDQ,CcrEhB,iEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,iEAwBU,wBAAyB,CACzB,wClB9Be,CkB+Bf,Ud2CM,CcrEhB,iEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,wBAYQ,wBlBlBiB,CkBmBjB,wBAAyB,CACzB,UduDQ,CcrEhB,iEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,iEAwBU,wBAAyB,CACzB,wClB/Be,CkBgCf,Ud2CM,CcrEhB,iEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,2BAYQ,wBlBnBkB,CkBoBlB,wBAAyB,CACzB,UduDQ,CcrEhB,uEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,uEAwBU,wBAAyB,CACzB,wClBhCgB,CkBiChB,Ud2CM,CcrEhB,uEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,2BAYQ,wBnBP0B,CmBQ1B,wBAAyB,CACzB,oBdqDa,CcnErB,uEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,oBd+CW,CcnErB,uEAwBU,wBAAyB,CACzB,wCnBpBwB,CmBqBxB,oBdyCW,CcnErB,uEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,oBdmCW,CcnErB,0BAYQ,wBlBhBiB,CkBiBjB,wBAAyB,CACzB,UduDQ,CcrEhB,qEAkBU,wBd8EuB,Cc7EvB,wBAAyB,CACzB,UdiDM,CcrEhB,qEAwBU,wBAAyB,CACzB,uClB7Be,CkB8Bf,Ud2CM,CcrEhB,qEA8BU,wBdkEuB,CcjEvB,wBAAyB,CACzB,UdqCM,CcrEhB,eAmCI,gBnBVY,CmBzBhB,gBAqCI,iBnBdY,CmBvBhB,+BAwCQ,cAAe,CAxCvB,eA0CI,gBnBpBW,CmBtBf,8BA6CQ,cAAe,CA7CvB,yBAiDM,4BAA6B,CAC7B,yBAA0B,CAlDhC,0BAoDM,2BAA4B,CAC5B,wBAAyB,CArD/B,kCAwDQ,iBnBAI,CmBxDZ,mCA0DQ,YAAa,CA1DrB,2BA6DM,qBAAsB,CA7D5B,yBA+DM,q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wB,CsBsB9B,uBAYM,wBrBhCmB,CqBiCnB,UjByCU,CiBtDhB,iBvBoHI,6BCtI0B,CsBmCxB,YAnC0B,CvBsI5B,kBuBrIkC,CAqCtC,YACE,atBzC4B,CsB0C5B,eApC2B,CAqC3B,mBApC+B,CAqC/B,wBAAyB,CAJ3B,8BAMI,cAtCoB,CAgCxB,6BAQI,iBAxCoB,CCKxB,SAEE,wBvBV4B,CuBW5B,iBvB6CU,CuB5CV,cvBYW,CuBhBb,gBAMI,kBAAmB,CANvB,sDAQI,kBAAmB,CACnB,yBAA0B,CAT9B,kBAYI,gBvBKY,CuBjBhB,mBAcI,iBvBCY,CuBfhB,kBAgBI,gBvBFW,CuBdf,kBAsCM,qBAH+C,CAnCrD,kCAwCQ,qBvB9CuB,CuB+CvB,UtBzDc,CsBgBtB,gCA2CQ,iBvBjDuB,CuBM/B,kBAsCM,wBAH+C,CAnCrD,kCAwCQ,qBtBxDc,CsByDd,UvB/CuB,CuBM/B,gCA2CQ,iBtB3Dc,CsBgBtB,kBAsCM,wBAH+C,CAnCrD,kCAwCQ,wBvBhDsB,CuBiDtB,oBlBkBa,CkB3DrB,gCA2CQ,oBvBnDsB,CuBQ9B,iBAsCM,wBAH+C,CAnCrD,iCAwCQ,wBvBvDsB,CuBwDtB,UlBoBQ,CkB7DhB,+BA2CQ,oBvB1DsB,CuBe9B,oBAsCM,wBlB8B0C,CkBpEhD,oCAwCQ,wBvBzC0B,CuB0C1B,UlBoBQ,CkB7DhB,kCA2CQ,oBvB5C0B,CuB6C1B,alBiC6D,CkB7ErE,iBAsCM,wBlB8B0C,CkBpEhD,iCAwCQ,wBtBrDiB,CsBsDjB,UlBoBQ,CkB7DhB,+BA2CQ,oBtBxDiB,CsByDjB,alBiC6D,CkB7ErE,iBAsCM,wBlB8B0C,CkBpEhD,iCAwCQ,wBtBtDiB,CsBuDjB,UlBoBQ,CkB7DhB,+BA2CQ,oBtBzDiB,CsB0DjB,alBiC6D,CkB7ErE,oBAsCM,wBlB8B0C,CkBpEhD,oCAwCQ,wBtBvDkB,CsBwDlB,UlBoBQ,CkB7DhB,kCA2CQ,oBtB1DkB,CsB2DlB,alBiC6D,CkB7ErE,oBAsCM,wBlB8B0C,CkBpEhD,oCAwCQ,wBvB3C0B,CuB4C1B,oBlBkBa,CkB3DrB,kCA2CQ,oBvB9C0B,CuB+C1B,al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G,CrCUjH,oCqC3EF,oCAoEc,8DAAyG,CAAG,CApE1H,eAeM,wBpCRwB,CoCSxB,oB/B0De,C+B1ErB,mHAmBQ,aAAc,CAnBtB,sBAqBQ,oB/BqDa,C+B1ErB,yBAuBQ,oB/BmDa,C+B1ErB,wEA0BU,oB/BgDW,CNanB,qCqCvFF,4BA6BU,wBpCtBoB,CoCsBS,CA7BvC,wDAgCQ,oB/B0Ca,C+B1ErB,kJAqCU,wB/BkEuB,C+BjEvB,oB/BoCW,C+B1ErB,uBAyCU,oB/BiCW,C+BhCX,UAAY,CA1CtB,iEA+CY,SAAU,CA/CtB,iEAmDY,oB/BuBS,C+B1ErB,6EAqDc,+BnCtDQ,CmCCtB,kMAyDc,+B/BiBO,C+BhBP,2B/BgBO,C+BfP,apCpDgB,CoCP9B,uBAiEU,iEAAyG,CrCUjH,oCqC3EF,oCAoEc,iEAAyG,CAAG,CApE1H,cAeM,wBpCfwB,CoCgBxB,U/B4DU,C+B5EhB,iHAmBQ,aAAc,CAnBtB,qBAqBQ,U/BuDQ,C+B5EhB,wBAuBQ,wB/BqDQ,C+B5EhB,sEA0BU,U/BkDM,CNWd,qCqCvFF,2BA6BU,wBpC7BoB,CoC6BS,CA7BvC,sDAgCQ,wB/B4CQ,C+B5EhB,8IAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,sBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,+DA+CY,SAAU,CA/CtB,+DAmDY,U/ByBI,C+B5EhB,2EAqDc,+BnCtDQ,CmCCtB,8LAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,apC3DgB,CoCA9B,sBAiEU,oEAAyG,CrCUjH,oCqC3EF,mCAoEc,oEAAyG,CAAG,CApE1H,iBAeM,wBpCD4B,CoCE5B,U/B4DU,C+B5EhB,uHAmBQ,aAAc,CAnBtB,wBAqBQ,U/BuDQ,C+B5EhB,2BAuBQ,wB/BqDQ,C+B5EhB,4EA0BU,U/BkDM,CNWd,qCqCvFF,8BA6BU,wBpCfwB,CoCeK,CA7BvC,4DAgCQ,wB/B4CQ,C+B5EhB,0JAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,yBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,qEA+CY,SAAU,CA/CtB,qEAmDY,U/ByBI,C+B5EhB,iFAqDc,+BnCtDQ,CmCCtB,0MAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,apC7CoB,CoCdlC,yBAiEU,oEAAyG,CrCUjH,oCqC3EF,sCAoEc,oEAAyG,CAAG,CApE1H,cAeM,wBnCbmB,CmCcnB,U/B4DU,C+B5EhB,iHAmBQ,aAAc,CAnBtB,qBAqBQ,U/BuDQ,C+B5EhB,wBAuBQ,wB/BqDQ,C+B5EhB,sEA0BU,U/BkDM,CNWd,qCqCvFF,2BA6BU,wBnC3Be,CmC2Bc,CA7BvC,sDAgCQ,wB/B4CQ,C+B5EhB,8IAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,sBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,+DA+CY,SAAU,CA/CtB,+DAmDY,U/ByBI,C+B5EhB,2EAqDc,+BnCtDQ,CmCCtB,8LAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,anCzDW,CmCFzB,sBAiEU,oEAAyG,CrCUjH,oCqC3EF,mCAoEc,oEAAyG,CAAG,CApE1H,cAeM,wBnCdmB,CmCenB,U/B4DU,C+B5EhB,iHAmBQ,aAAc,CAnBtB,qBAqBQ,U/BuDQ,C+B5EhB,wBAuBQ,wB/BqDQ,C+B5EhB,sEA0BU,U/BkDM,CNWd,qCqCvFF,2BA6BU,wBnC5Be,CmC4Bc,CA7BvC,sDAgCQ,wB/B4CQ,C+B5EhB,8IAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,sBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,+DA+CY,SAAU,CA/CtB,+DAmDY,U/ByBI,C+B5EhB,2EAqDc,+BnCtDQ,CmCCtB,8LAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,anC1DW,CmCDzB,sBAiEU,oEAAyG,CrCUjH,oCqC3EF,mCAoEc,oEAAyG,CAAG,CApE1H,iBAeM,wBnCfoB,CmCgBpB,U/B4DU,C+B5EhB,uHAmBQ,aAAc,CAnBtB,wBAqBQ,U/BuDQ,C+B5EhB,2BAuBQ,wB/BqDQ,C+B5EhB,4EA0BU,U/BkDM,CNWd,qCqCvFF,8BA6BU,wBnC7BgB,CmC6Ba,CA7BvC,4DAgCQ,wB/B4CQ,C+B5EhB,0JAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,yBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,qEA+CY,SAAU,CA/CtB,qEAmDY,U/ByBI,C+B5EhB,iFAqDc,+BnCtDQ,CmCCtB,0MAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,anC3DY,CmCA1B,yBAiEU,oEAAyG,CrCUjH,oCqC3EF,sCAoEc,oEAAyG,CAAG,CApE1H,iBAeM,wBpCH4B,CoCI5B,oB/B0De,C+B1ErB,uHAmBQ,aAAc,CAnBtB,wBAqBQ,oB/BqDa,C+B1ErB,2BAuBQ,oB/BmDa,C+B1ErB,4EA0BU,oB/BgDW,CNanB,qCqCvFF,8BA6BU,wBpCjBwB,CoCiBK,CA7BvC,4DAgCQ,oB/B0Ca,C+B1ErB,0JAqCU,wB/BkEuB,C+BjEvB,oB/BoCW,C+B1ErB,yBAyCU,oB/BiCW,C+BhCX,UAAY,CA1CtB,qEA+CY,SAAU,CA/CtB,qEAmDY,oB/BuBS,C+B1ErB,iFAqDc,+BnCtDQ,CmCCtB,0MAyDc,+B/BiBO,C+BhBP,2B/BgBO,C+BfP,apC/CoB,CoCZlC,yBAiEU,oEAAyG,CrCUjH,oCqC3EF,sCAoEc,oEAAyG,CAAG,CApE1H,gBAeM,wBnCZmB,CmCanB,U/B4DU,C+B5EhB,qHAmBQ,aAAc,CAnBtB,uBAqBQ,U/BuDQ,C+B5EhB,0BAuBQ,wB/BqDQ,C+B5EhB,0EA0BU,U/BkDM,CNWd,qCqCvFF,6BA6BU,wBnC1Be,CmC0Bc,CA7BvC,0DAgCQ,wB/B4CQ,C+B5EhB,sJAqCU,wB/BkEuB,C+BjEvB,U/BsCM,C+B5EhB,wBAyCU,U/BmCM,C+BlCN,UAAY,CA1CtB,mEA+CY,SAAU,CA/CtB,mEAmDY,U/ByBI,C+B5EhB,+EAqDc,+BnCtDQ,CmCCtB,sMAyDc,qB/BmBE,C+BlBF,iB/BkBE,C+BjBF,anCxDW,CmCHzB,wBAiEU,oEAAyG,CrCUjH,oCqC3EF,qCAoEc,oEAAyG,CAAG,CApE1H,0BAwEM,cA7E0B,CrCoF9B,0CqC/EF,2BA4EQ,mBAhF8B,CAgFO,CrCG3C,0CqC/EF,0BAgFQ,oBAnF8B,CAmFM,CAhF5C,yGAqFM,kBAAmB,CACnB,YAAa,CAtFnB,0IAwFQ,WAAY,CACZ,aAAc,CAzFtB,oBA2FI,eAAgB,CA3FpB,oBA6FI,gBAAiB,CAIrB,YAEE,eAAgB,CAFlB,kBAII,QAAS,CACT,eAAgB,CAChB,cAAe,CACf,iBAAkB,CAClB,OAAQ,CACR,kCAAqC,CATzC,2BAYI,UAAY,CrClCd,oCqCsBF,YAeI,YAAa,CAAK,CAEtB,cACE,iBAAkB,CrCxClB,oCqCuCF,sBAKM,YAAa,CALnB,uCAOQ,oBAAsB,CAAG,CrC1C/B,0CqCmCF,cASI,YAAa,CACb,sBAAuB,CAV3B,uCrCwBI,mBqCZwC,CAAI,CAIhD,sBAEE,WAAY,CACZ,aAAc,CAEhB,WACE,WAAY,CACZ,aA/I6B,CCI/B,oBD4IE,mBChJ2B,CtCiG3B,qCsC7FF,mBAMM,mBAT8B,CAGpC,kBAQM,oBAV8B,CAUI,CCyCxC,iCACE,GACE,SACF,CAEA,GACE,SACF,CAAA,CAGF,yBACE,GACE,SACF,CAEA,GACE,SACF,CAAA,CAGF,2BACE,GACE,SAAU,CACV,oBAAsB,CAGxB,IACE,SACF,CAEA,IACE,kBAAmB,CAGrB,GACE,kBAAmB,CAAA,CAIvB,mBACE,GACE,SAAU,CACV,oBAAsB,CAGxB,IACE,SACF,CAEA,IACE,kBAAmB,CAGrB,GACE,kBAAmB,CAAA,CnCzDvB,KmCgEE,eACF,ClCnDA,KkCsDE,mCACF,CADE,2BACF,CAEA,wBAEE,qBrCtHoB,CqCuHpB,iBAAkB,CAClB,cACF,CAEA,qDAEE,atCvH6B,CsC0H/B,uEAEE,atC5H6B,CsC+H/B,mDAEE,atCjI6B,CsCoI/B,6DAEE,atCtI6B,CoBN/B,OkBgJE,atCxI4B,CsCyI5B,eACF,ClBnIA,MkBsIE,atC/I6B,CWL/B,U2BwJE,wBtCtJ4B,CsCyJ9B,gMAIE,SACF,CAEA,qBAEI,wBAAyB,CACzB,iBAAkB,CAClB,WACF,CALF,qBASI,wBAAyB,CACzB,wBAAyB,CACzB,oBAAyB,CAX7B,2EAeM,wBAAyB,CACzB,wBAAyB,CACzB,oBAAyB,CAjB/B,2EAsBM,wBAAyB,CACzB,wBAAyB,CACzB,oBAAyB,CAxB/B,iCA4BM,4BAA6B,CAC7B,oBAAqB,CACrB,aAAc,CA9BpB,sMAoCQ,wBAAyB,CACzB,oBAAqB,CACrB,oBAAyB,CAMjC,6BAEE,atC7M4B,CkBT9B,wGoB8NE,oBtCjN4B,CkBb9B,uEoBmOE,oBtC3N4B,CuBa9B,SekNE,wBACF,CfjJA,ceoJE,atC9N4B,CsC+N5B,QACF,C1BpNA,O0BuNE,atCrO6B,CsCsO7B,qBrC5OoB,CqC0OtB,iBAKI,gBACF,C1B5NF,qD0B+NI,wBACF,C1BhOF,oB0BoOI,kBAAmB,CACnB,qBAAsB,CACtB,+BtCvP0B,CYiB9B,U0B0OI,atCtP0B,CsCuP1B,aAAc,CACd,eAAmB,CAtBvB,qBAyBM,yBACF,C1BhPJ,gC0BsPM,atClQwB,CsCmQxB,wBAAyB,CACzB,eAAgB,CAChB,WACF,C1B1PJ,4D0BgQM,uBACF,CA3CJ,oBA+CI,mBACF,CAGF,6BAGI,wBtCxR0B,CsC8R9B,WACE,6BACF,CAEA,SACE,mBACF,CAGA,kCACE,qBACF,CAIA,uBACE,YAAa,CACb,cAAe,CACf,YAAa,CACb,aAAc,CACd,kBAAmB,CACnB,wBrCxTuB,CqCyTvB,UtClT6B,CsCmT7B,YAAa,CACb,aAAc,CACd,sBAAuB,CACvB,kBAAmB,CACnB,2CAA+C,CAZjD,6BAeI,wBjChP4C,CiCiP5C,UrCrUkB,CqCqTtB,6BAoBI,eACF,CAGF,+BAGI,gBAAiB,CACjB,WAEwD,CAN5D,0CAQM,UACF","file":"style.css","sourcesContent":["@keyframes spinAround {\n from {\n transform: rotate(0deg); }\n to {\n transform: rotate(359deg); } }\n","@import \"initial-variables\";\n\n@mixin clearfix {\n &::after {\n clear: both;\n content: \" \";\n display: table; } }\n\n@mixin center($width, $height: 0) {\n position: absolute;\n @if $height != 0 {\n left: calc(50% - (#{$width} / 2));\n top: calc(50% - (#{$height} / 2)); }\n @else {\n left: calc(50% - (#{$width} / 2));\n top: calc(50% - (#{$width} / 2)); } }\n\n@mixin fa($size, $dimensions) {\n display: inline-block;\n font-size: $size;\n height: $dimensions;\n line-height: $dimensions;\n text-align: center;\n vertical-align: top;\n width: $dimensions; }\n\n@mixin hamburger($dimensions) {\n cursor: pointer;\n display: block;\n height: $dimensions;\n position: relative;\n width: $dimensions;\n span {\n background-color: currentColor;\n display: block;\n height: 1px;\n left: calc(50% - 8px);\n position: absolute;\n transform-origin: center;\n transition-duration: $speed;\n transition-property: background-color, opacity, transform;\n transition-timing-function: $easing;\n width: 16px;\n &:nth-child(1) {\n top: calc(50% - 6px); }\n &:nth-child(2) {\n top: calc(50% - 1px); }\n &:nth-child(3) {\n top: calc(50% + 4px); } }\n &:hover {\n background-color: bulmaRgba(black, 0.05); }\n // Modifers\n &.is-active {\n span {\n &:nth-child(1) {\n transform: translateY(5px) rotate(45deg); }\n &:nth-child(2) {\n opacity: 0; }\n &:nth-child(3) {\n transform: translateY(-5px) rotate(-45deg); } } } }\n\n@mixin overflow-touch {\n -webkit-overflow-scrolling: touch; }\n\n@mixin placeholder {\n $placeholders: ':-moz' ':-webkit-input' '-moz' '-ms-input';\n @each $placeholder in $placeholders {\n &:#{$placeholder}-placeholder {\n @content; } } }\n\n// Responsiveness\n\n@mixin from($device) {\n @media screen and (min-width: $device) {\n @content; } }\n\n@mixin until($device) {\n @media screen and (max-width: $device - 1px) {\n @content; } }\n\n@mixin mobile {\n @media screen and (max-width: $tablet - 1px) {\n @content; } }\n\n@mixin tablet {\n @media screen and (min-width: $tablet), print {\n @content; } }\n\n@mixin tablet-only {\n @media screen and (min-width: $tablet) and (max-width: $desktop - 1px) {\n @content; } }\n\n@mixin touch {\n @media screen and (max-width: $desktop - 1px) {\n @content; } }\n\n@mixin desktop {\n @media screen and (min-width: $desktop) {\n @content; } }\n\n@mixin desktop-only {\n @if $widescreen-enabled {\n @media screen and (min-width: $desktop) and (max-width: $widescreen - 1px) {\n @content; } } }\n\n@mixin until-widescreen {\n @if $widescreen-enabled {\n @media screen and (max-width: $widescreen - 1px) {\n @content; } } }\n\n@mixin widescreen {\n @if $widescreen-enabled {\n @media screen and (min-width: $widescreen) {\n @content; } } }\n\n@mixin widescreen-only {\n @if $widescreen-enabled and $fullhd-enabled {\n @media screen and (min-width: $widescreen) and (max-width: $fullhd - 1px) {\n @content; } } }\n\n@mixin until-fullhd {\n @if $fullhd-enabled {\n @media screen and (max-width: $fullhd - 1px) {\n @content; } } }\n\n@mixin fullhd {\n @if $fullhd-enabled {\n @media screen and (min-width: $fullhd) {\n @content; } } }\n\n@mixin ltr {\n @if not $rtl {\n @content; } }\n\n@mixin rtl {\n @if $rtl {\n @content; } }\n\n@mixin ltr-property($property, $spacing, $right: true) {\n $normal: if($right, \"right\", \"left\");\n $opposite: if($right, \"left\", \"right\");\n @if $rtl {\n #{$property}-#{$opposite}: $spacing; }\n @else {\n #{$property}-#{$normal}: $spacing; } }\n\n@mixin ltr-position($spacing, $right: true) {\n $normal: if($right, \"right\", \"left\");\n $opposite: if($right, \"left\", \"right\");\n @if $rtl {\n #{$opposite}: $spacing; }\n @else {\n #{$normal}: $spacing; } }\n\n// Placeholders\n\n@mixin unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n\n%unselectable {\n @include unselectable; }\n\n@mixin arrow($color: transparent) {\n border: 3px solid $color;\n border-radius: 2px;\n border-right: 0;\n border-top: 0;\n content: \" \";\n display: block;\n height: 0.625em;\n margin-top: -0.4375em;\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: rotate(-45deg);\n transform-origin: center;\n width: 0.625em; }\n\n%arrow {\n @include arrow; }\n\n@mixin block($spacing: $block-spacing) {\n &:not(:last-child) {\n margin-bottom: $spacing; } }\n\n%block {\n @include block; }\n\n@mixin delete {\n @extend %unselectable;\n -moz-appearance: none;\n -webkit-appearance: none;\n background-color: bulmaRgba($scheme-invert, 0.2);\n border: none;\n border-radius: $radius-rounded;\n cursor: pointer;\n pointer-events: auto;\n display: inline-block;\n flex-grow: 0;\n flex-shrink: 0;\n font-size: 0;\n height: 20px;\n max-height: 20px;\n max-width: 20px;\n min-height: 20px;\n min-width: 20px;\n outline: none;\n position: relative;\n vertical-align: top;\n width: 20px;\n &::before,\n &::after {\n background-color: $scheme-main;\n content: \"\";\n display: block;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\n transform-origin: center center; }\n &::before {\n height: 2px;\n width: 50%; }\n &::after {\n height: 50%;\n width: 2px; }\n &:hover,\n &:focus {\n background-color: bulmaRgba($scheme-invert, 0.3); }\n &:active {\n background-color: bulmaRgba($scheme-invert, 0.4); }\n // Sizes\n &.is-small {\n height: 16px;\n max-height: 16px;\n max-width: 16px;\n min-height: 16px;\n min-width: 16px;\n width: 16px; }\n &.is-medium {\n height: 24px;\n max-height: 24px;\n max-width: 24px;\n min-height: 24px;\n min-width: 24px;\n width: 24px; }\n &.is-large {\n height: 32px;\n max-height: 32px;\n max-width: 32px;\n min-height: 32px;\n min-width: 32px;\n width: 32px; } }\n\n%delete {\n @include delete; }\n\n@mixin loader {\n animation: spinAround 500ms infinite linear;\n border: 2px solid $grey-lighter;\n border-radius: $radius-rounded;\n border-right-color: transparent;\n border-top-color: transparent;\n content: \"\";\n display: block;\n height: 1em;\n position: relative;\n width: 1em; }\n\n%loader {\n @include loader; }\n\n@mixin overlay($offset: 0) {\n bottom: $offset;\n left: $offset;\n position: absolute;\n right: $offset;\n top: $offset; }\n\n%overlay {\n @include overlay; }\n","// Colors\n\n$black: hsl(0, 0%, 4%) !default;\n$black-bis: hsl(0, 0%, 7%) !default;\n$black-ter: hsl(0, 0%, 14%) !default;\n\n$grey-darker: hsl(0, 0%, 21%) !default;\n$grey-dark: hsl(0, 0%, 29%) !default;\n$grey: hsl(0, 0%, 48%) !default;\n$grey-light: hsl(0, 0%, 71%) !default;\n$grey-lighter: hsl(0, 0%, 86%) !default;\n$grey-lightest: hsl(0, 0%, 93%) !default;\n\n$white-ter: hsl(0, 0%, 96%) !default;\n$white-bis: hsl(0, 0%, 98%) !default;\n$white: hsl(0, 0%, 100%) !default;\n\n$orange: hsl(14, 100%, 53%) !default;\n$yellow: hsl(48, 100%, 67%) !default;\n$green: hsl(141, 53%, 53%) !default;\n$turquoise: hsl(171, 100%, 41%) !default;\n$cyan: hsl(204, 71%, 53%) !default;\n$blue: hsl(217, 71%, 53%) !default;\n$purple: hsl(271, 100%, 71%) !default;\n$red: hsl(348, 86%, 61%) !default;\n\n// Typography\n\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif !default;\n$family-monospace: monospace !default;\n$render-mode: optimizeLegibility !default;\n\n$size-1: 3rem !default;\n$size-2: 2.5rem !default;\n$size-3: 2rem !default;\n$size-4: 1.5rem !default;\n$size-5: 1.25rem !default;\n$size-6: 1rem !default;\n$size-7: 0.75rem !default;\n\n$weight-light: 300 !default;\n$weight-normal: 400 !default;\n$weight-medium: 500 !default;\n$weight-semibold: 600 !default;\n$weight-bold: 700 !default;\n\n// Spacing\n\n$block-spacing: 1.5rem !default;\n\n// Responsiveness\n\n// The container horizontal gap, which acts as the offset for breakpoints\n$gap: 32px !default;\n// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16\n$tablet: 769px !default;\n// 960px container + 4rem\n$desktop: 960px + (2 * $gap) !default;\n// 1152px container + 4rem\n$widescreen: 1152px + (2 * $gap) !default;\n$widescreen-enabled: true !default;\n// 1344px container + 4rem\n$fullhd: 1344px + (2 * $gap) !default;\n$fullhd-enabled: true !default;\n\n// Miscellaneous\n\n$easing: ease-out !default;\n$radius-small: 2px !default;\n$radius: 4px !default;\n$radius-large: 6px !default;\n$radius-rounded: 290486px !default;\n$speed: 86ms !default;\n\n// Flags\n\n$variable-columns: true !default;\n$rtl: false !default;\n","@charset \"utf-8\";\n\n/* stylelint-disable-next-line value-keyword-case */\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Ubuntu\", \"Roboto\", \"Oxygen\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif;\n\n$black: hsl(0, 0%, 0%);\n$green: hsl(141, 42%, 53%);\n$cyan: hsl(217, 89%, 61%);\n$blue: hsl(208, 79%, 51%);\n$red: hsl(348, 100%, 61%);\n\n/** Bulma: Variables **/\n@import \"../../node_modules/bulma/sass/utilities/initial-variables.sass\";\n@import \"../../node_modules/bulma/sass/utilities/functions.sass\";\n@import \"../../node_modules/bulma/sass/utilities/derived-variables.scss\";\n\n$scheme-main: $black;\n$text: $white-ter;\n\n$strong-color: $grey-lighter;\n\n$link-hover: $link-light;\n\n$hr-background-color: $grey-light;\n\n$border-hover: $link;\n$input-focus-border-color: $link-light;\n\n$title-color: $white-ter;\n$subtitle-color: $grey-lightest;\n$subtitle-strong-color: $grey-lightest;\n\n$input-background-color: $scheme-main;\n$input-border-color: $grey;\n$input-color: $text;\n$input-placeholder-color: $grey-lightest;\n\n$input-disabled-background-color: $grey-dark;\n$input-disabled-border-color: $input-border-color;\n$input-disabled-color: $input-color;\n$input-disabled-placeholder-color: $grey-lightest;\n\n$pagination-background-color: $scheme-main;\n$pagination-border-color: $text;\n$pagination-color: $text;\n\n$pagination-hover-background-color: $pagination-color;\n$pagination-hover-border-color: $pagination-border-color;\n$pagination-hover-color: $scheme-main;\n\n$pagination-disabled-background-color: $grey-dark;\n$pagination-disabled-border-color: $grey;\n$pagination-disabled-color: hsl(0, 0%, 64%);\n\n$tabs-link-color: $text;\n$tabs-link-hover-color: $tabs-link-color;\n$tabs-boxed-link-active-border-color: $grey;\n$tabs-boxed-link-hover-background-color: $grey-darker;\n$tabs-boxed-link-hover-border-bottom-color: $tabs-boxed-link-active-border-color\n","$control-radius: $radius !default;\n$control-radius-small: $radius-small !default;\n\n$control-border-width: 1px !default;\n\n$control-height: 2.5em !default;\n$control-line-height: 1.5 !default;\n\n$control-padding-vertical: calc(0.5em - #{$control-border-width}) !default;\n$control-padding-horizontal: calc(0.75em - #{$control-border-width}) !default;\n\n@mixin control {\n -moz-appearance: none;\n -webkit-appearance: none;\n align-items: center;\n border: $control-border-width solid transparent;\n border-radius: $control-radius;\n box-shadow: none;\n display: inline-flex;\n font-size: $size-normal;\n height: $control-height;\n justify-content: flex-start;\n line-height: $control-line-height;\n padding-bottom: $control-padding-vertical;\n padding-left: $control-padding-horizontal;\n padding-right: $control-padding-horizontal;\n padding-top: $control-padding-vertical;\n position: relative;\n vertical-align: top;\n // States\n &:focus,\n &.is-focused,\n &:active,\n &.is-active {\n outline: none; }\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed; } }\n\n%control {\n @include control; }\n\n// The controls sizes use mixins so they can be used at different breakpoints\n@mixin control-small {\n border-radius: $control-radius-small;\n font-size: $size-small; }\n@mixin control-medium {\n font-size: $size-medium; }\n@mixin control-large {\n font-size: $size-large; }\n","/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */\n// Blocks\nhtml,\nbody,\np,\nol,\nul,\nli,\ndl,\ndt,\ndd,\nblockquote,\nfigure,\nfieldset,\nlegend,\ntextarea,\npre,\niframe,\nhr,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin: 0;\n padding: 0; }\n\n// Headings\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: 100%;\n font-weight: normal; }\n\n// List\nul {\n list-style: none; }\n\n// Form\nbutton,\ninput,\nselect,\ntextarea {\n margin: 0; }\n\n// Box sizing\nhtml {\n box-sizing: border-box; }\n\n* {\n &,\n &::before,\n &::after {\n box-sizing: inherit; } }\n\n// Media\nimg,\nvideo {\n height: auto;\n max-width: 100%; }\n\n// Iframe\niframe {\n border: 0; }\n\n// Table\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0;\n &:not([align]) {\n text-align: inherit; } }\n","$body-background-color: $scheme-main !default;\n$body-size: 16px !default;\n$body-min-width: 300px !default;\n$body-rendering: optimizeLegibility !default;\n$body-family: $family-primary !default;\n$body-overflow-x: hidden !default;\n$body-overflow-y: scroll !default;\n\n$body-color: $text !default;\n$body-font-size: 1em !default;\n$body-weight: $weight-normal !default;\n$body-line-height: 1.5 !default;\n\n$code-family: $family-code !default;\n$code-padding: 0.25em 0.5em 0.25em !default;\n$code-weight: normal !default;\n$code-size: 0.875em !default;\n\n$small-font-size: 0.875em !default;\n\n$hr-background-color: $background !default;\n$hr-height: 2px !default;\n$hr-margin: 1.5rem 0 !default;\n\n$strong-color: $text-strong !default;\n$strong-weight: $weight-bold !default;\n\n$pre-font-size: 0.875em !default;\n$pre-padding: 1.25rem 1.5rem !default;\n$pre-code-font-size: 1em !default;\n\nhtml {\n background-color: $body-background-color;\n font-size: $body-size;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n min-width: $body-min-width;\n overflow-x: $body-overflow-x;\n overflow-y: $body-overflow-y;\n text-rendering: $body-rendering;\n text-size-adjust: 100%; }\n\narticle,\naside,\nfigure,\nfooter,\nheader,\nhgroup,\nsection {\n display: block; }\n\nbody,\nbutton,\ninput,\nselect,\ntextarea {\n font-family: $body-family; }\n\ncode,\npre {\n -moz-osx-font-smoothing: auto;\n -webkit-font-smoothing: auto;\n font-family: $code-family; }\n\nbody {\n color: $body-color;\n font-size: $body-font-size;\n font-weight: $body-weight;\n line-height: $body-line-height; }\n\n// Inline\n\na {\n color: $link;\n cursor: pointer;\n text-decoration: none;\n strong {\n color: currentColor; }\n &:hover {\n color: $link-hover; } }\n\ncode {\n background-color: $code-background;\n color: $code;\n font-size: $code-size;\n font-weight: $code-weight;\n padding: $code-padding; }\n\nhr {\n background-color: $hr-background-color;\n border: none;\n display: block;\n height: $hr-height;\n margin: $hr-margin; }\n\nimg {\n height: auto;\n max-width: 100%; }\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n vertical-align: baseline; }\n\nsmall {\n font-size: $small-font-size; }\n\nspan {\n font-style: inherit;\n font-weight: inherit; }\n\nstrong {\n color: $strong-color;\n font-weight: $strong-weight; }\n\n// Block\n\nfieldset {\n border: none; }\n\npre {\n @include overflow-touch;\n background-color: $pre-background;\n color: $pre;\n font-size: $pre-font-size;\n overflow-x: auto;\n padding: $pre-padding;\n white-space: pre;\n word-wrap: normal;\n code {\n background-color: transparent;\n color: currentColor;\n font-size: $pre-code-font-size;\n padding: 0; } }\n\ntable {\n td,\n th {\n vertical-align: top;\n &:not([align]) {\n text-align: inherit; } }\n th {\n color: $text-strong; } }\n","@function mergeColorMaps($bulma-colors, $custom-colors) {\n // We return at least Bulma's hard-coded colors\n $merged-colors: $bulma-colors;\n\n // We want a map as input\n @if type-of($custom-colors) == 'map' {\n @each $name, $components in $custom-colors {\n // The color name should be a string\n // and the components either a single color\n // or a colors list with at least one element\n @if type-of($name) == 'string' and (type-of($components) == 'list' or type-of($components) == 'color') and length($components) >= 1 {\n $color-base: null;\n $color-invert: null;\n $color-light: null;\n $color-dark: null;\n $value: null;\n\n // The param can either be a single color\n // or a list of 2 colors\n @if type-of($components) == 'color' {\n $color-base: $components;\n $color-invert: findColorInvert($color-base);\n $color-light: findLightColor($color-base);\n $color-dark: findDarkColor($color-base); }\n @else if type-of($components) == 'list' {\n $color-base: nth($components, 1);\n // If Invert, Light and Dark are provided\n @if length($components) > 3 {\n $color-invert: nth($components, 2);\n $color-light: nth($components, 3);\n $color-dark: nth($components, 4);\n } // If only Invert and Light are provided\n @else if length($components) > 2 {\n $color-invert: nth($components, 2);\n $color-light: nth($components, 3);\n $color-dark: findDarkColor($color-base);\n } // If only Invert is provided\n @else {\n $color-invert: nth($components, 2);\n $color-light: findLightColor($color-base);\n $color-dark: findDarkColor($color-base); } }\n\n $value: ($color-base, $color-invert, $color-light, $color-dark);\n\n // We only want to merge the map if the color base is an actual color\n @if type-of($color-base) == 'color' {\n // We merge this colors elements as map with Bulma's colors map\n // (we can override them this way, no multiple definition for the same name)\n // $merged-colors: map_merge($merged-colors, ($name: ($color-base, $color-invert, $color-light, $color-dark)))\n $merged-colors: map_merge($merged-colors, ($name: $value)); } } } }\n\n @return $merged-colors; }\n\n@function powerNumber($number, $exp) {\n $value: 1;\n @if $exp > 0 {\n @for $i from 1 through $exp {\n $value: $value * $number; } }\n @else if $exp < 0 {\n @for $i from 1 through -$exp {\n $value: $value / $number; } }\n @return $value; }\n\n@function colorLuminance($color) {\n @if type-of($color) != 'color' {\n @return 0.55; }\n $color-rgb: ('red': red($color),'green': green($color),'blue': blue($color));\n @each $name, $value in $color-rgb {\n $adjusted: 0;\n $value: $value / 255;\n @if $value < 0.03928 {\n $value: $value / 12.92; }\n @else {\n $value: ($value + .055) / 1.055;\n $value: powerNumber($value, 2); }\n $color-rgb: map-merge($color-rgb, ($name: $value)); }\n @return (map-get($color-rgb, 'red') * .2126) + (map-get($color-rgb, 'green') * .7152) + (map-get($color-rgb, 'blue') * .0722); }\n\n@function findColorInvert($color) {\n @if (colorLuminance($color) > 0.55) {\n @return rgba(#000, 0.7); }\n @else {\n @return #fff; } }\n\n@function findLightColor($color) {\n @if type-of($color) == 'color' {\n $l: 96%;\n @if lightness($color) > 96% {\n $l: lightness($color); }\n @return change-color($color, $lightness: $l); }\n @return $background; }\n\n@function findDarkColor($color) {\n @if type-of($color) == 'color' {\n $base-l: 29%;\n $luminance: colorLuminance($color);\n $luminance-delta: (0.53 - $luminance);\n $target-l: round($base-l + ($luminance-delta * 53));\n @return change-color($color, $lightness: max($base-l, $target-l)); }\n @return $text-strong; }\n\n@function bulmaRgba($color, $alpha) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return rgba($color, $alpha); }\n\n@function bulmaDarken($color, $amount) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return darken($color, $amount); }\n\n@function bulmaLighten($color, $amount) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return lighten($color, $amount); }\n","$button-color: $text-strong !default;\n$button-background-color: $scheme-main !default;\n$button-family: false !default;\n\n$button-border-color: $border !default;\n$button-border-width: $control-border-width !default;\n\n$button-padding-vertical: calc(0.5em - #{$button-border-width}) !default;\n$button-padding-horizontal: 1em !default;\n\n$button-hover-color: $link-hover !default;\n$button-hover-border-color: $link-hover-border !default;\n\n$button-focus-color: $link-focus !default;\n$button-focus-border-color: $link-focus-border !default;\n$button-focus-box-shadow-size: 0 0 0 0.125em !default;\n$button-focus-box-shadow-color: bulmaRgba($link, 0.25) !default;\n\n$button-active-color: $link-active !default;\n$button-active-border-color: $link-active-border !default;\n\n$button-text-color: $text !default;\n$button-text-decoration: underline !default;\n$button-text-hover-background-color: $background !default;\n$button-text-hover-color: $text-strong !default;\n\n$button-disabled-background-color: $scheme-main !default;\n$button-disabled-border-color: $border !default;\n$button-disabled-shadow: none !default;\n$button-disabled-opacity: 0.5 !default;\n\n$button-static-color: $text-light !default;\n$button-static-background-color: $scheme-main-ter !default;\n$button-static-border-color: $border !default;\n\n// The button sizes use mixins so they can be used at different breakpoints\n@mixin button-small {\n border-radius: $radius-small;\n font-size: $size-small; }\n@mixin button-normal {\n font-size: $size-normal; }\n@mixin button-medium {\n font-size: $size-medium; }\n@mixin button-large {\n font-size: $size-large; }\n\n.button {\n @extend %control;\n @extend %unselectable;\n background-color: $button-background-color;\n border-color: $button-border-color;\n border-width: $button-border-width;\n color: $button-color;\n cursor: pointer;\n @if $button-family {\n font-family: $button-family; }\n justify-content: center;\n padding-bottom: $button-padding-vertical;\n padding-left: $button-padding-horizontal;\n padding-right: $button-padding-horizontal;\n padding-top: $button-padding-vertical;\n text-align: center;\n white-space: nowrap;\n strong {\n color: inherit; }\n .icon {\n &,\n &.is-small,\n &.is-medium,\n &.is-large {\n height: 1.5em;\n width: 1.5em; }\n &:first-child:not(:last-child) {\n @include ltr-property(\"margin\", calc(#{-1 / 2 * $button-padding-horizontal} - #{$button-border-width}), false);\n @include ltr-property(\"margin\", $button-padding-horizontal / 4); }\n &:last-child:not(:first-child) {\n @include ltr-property(\"margin\", $button-padding-horizontal / 4, false);\n @include ltr-property(\"margin\", calc(#{-1 / 2 * $button-padding-horizontal} - #{$button-border-width})); }\n &:first-child:last-child {\n margin-left: calc(#{-1 / 2 * $button-padding-horizontal} - #{$button-border-width});\n margin-right: calc(#{-1 / 2 * $button-padding-horizontal} - #{$button-border-width}); } }\n // States\n &:hover,\n &.is-hovered {\n border-color: $button-hover-border-color;\n color: $button-hover-color; }\n &:focus,\n &.is-focused {\n border-color: $button-focus-border-color;\n color: $button-focus-color;\n &:not(:active) {\n box-shadow: $button-focus-box-shadow-size $button-focus-box-shadow-color; } }\n &:active,\n &.is-active {\n border-color: $button-active-border-color;\n color: $button-active-color; }\n // Colors\n &.is-text {\n background-color: transparent;\n border-color: transparent;\n color: $button-text-color;\n text-decoration: $button-text-decoration;\n &:hover,\n &.is-hovered,\n &:focus,\n &.is-focused {\n background-color: $button-text-hover-background-color;\n color: $button-text-hover-color; }\n &:active,\n &.is-active {\n background-color: bulmaDarken($button-text-hover-background-color, 5%);\n color: $button-text-hover-color; }\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none; } }\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n $color-invert: nth($pair, 2);\n &.is-#{$name} {\n background-color: $color;\n border-color: transparent;\n color: $color-invert;\n &:hover,\n &.is-hovered {\n background-color: bulmaDarken($color, 2.5%);\n border-color: transparent;\n color: $color-invert; }\n &:focus,\n &.is-focused {\n border-color: transparent;\n color: $color-invert;\n &:not(:active) {\n box-shadow: $button-focus-box-shadow-size bulmaRgba($color, 0.25); } }\n &:active,\n &.is-active {\n background-color: bulmaDarken($color, 5%);\n border-color: transparent;\n color: $color-invert; }\n &[disabled],\n fieldset[disabled] & {\n background-color: $color;\n border-color: transparent;\n box-shadow: none; }\n &.is-inverted {\n background-color: $color-invert;\n color: $color;\n &:hover,\n &.is-hovered {\n background-color: bulmaDarken($color-invert, 5%); }\n &[disabled],\n fieldset[disabled] & {\n background-color: $color-invert;\n border-color: transparent;\n box-shadow: none;\n color: $color; } }\n &.is-loading {\n &::after {\n border-color: transparent transparent $color-invert $color-invert !important; } }\n &.is-outlined {\n background-color: transparent;\n border-color: $color;\n color: $color;\n &:hover,\n &.is-hovered,\n &:focus,\n &.is-focused {\n background-color: $color;\n border-color: $color;\n color: $color-invert; }\n &.is-loading {\n &::after {\n border-color: transparent transparent $color $color !important; }\n &:hover,\n &.is-hovered,\n &:focus,\n &.is-focused {\n &::after {\n border-color: transparent transparent $color-invert $color-invert !important; } } }\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n border-color: $color;\n box-shadow: none;\n color: $color; } }\n &.is-inverted.is-outlined {\n background-color: transparent;\n border-color: $color-invert;\n color: $color-invert;\n &:hover,\n &.is-hovered,\n &:focus,\n &.is-focused {\n background-color: $color-invert;\n color: $color; }\n &.is-loading {\n &:hover,\n &.is-hovered,\n &:focus,\n &.is-focused {\n &::after {\n border-color: transparent transparent $color $color !important; } } }\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n border-color: $color-invert;\n box-shadow: none;\n color: $color-invert; } }\n // If light and dark colors are provided\n @if length($pair) >= 4 {\n $color-light: nth($pair, 3);\n $color-dark: nth($pair, 4);\n &.is-light {\n background-color: $color-light;\n color: $color-dark;\n &:hover,\n &.is-hovered {\n background-color: bulmaDarken($color-light, 2.5%);\n border-color: transparent;\n color: $color-dark; }\n &:active,\n &.is-active {\n background-color: bulmaDarken($color-light, 5%);\n border-color: transparent;\n color: $color-dark; } } } } }\n // Sizes\n &.is-small {\n @include button-small; }\n &.is-normal {\n @include button-normal; }\n &.is-medium {\n @include button-medium; }\n &.is-large {\n @include button-large; }\n // Modifiers\n &[disabled],\n fieldset[disabled] & {\n background-color: $button-disabled-background-color;\n border-color: $button-disabled-border-color;\n box-shadow: $button-disabled-shadow;\n opacity: $button-disabled-opacity; }\n &.is-fullwidth {\n display: flex;\n width: 100%; }\n &.is-loading {\n color: transparent !important;\n pointer-events: none;\n &::after {\n @extend %loader;\n @include center(1em);\n position: absolute !important; } }\n &.is-static {\n background-color: $button-static-background-color;\n border-color: $button-static-border-color;\n color: $button-static-color;\n box-shadow: none;\n pointer-events: none; }\n &.is-rounded {\n border-radius: $radius-rounded;\n padding-left: calc(#{$button-padding-horizontal} + 0.25em);\n padding-right: calc(#{$button-padding-horizontal} + 0.25em); } }\n\n.buttons {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n .button {\n margin-bottom: 0.5rem;\n &:not(:last-child):not(.is-fullwidth) {\n @include ltr-property(\"margin\", 0.5rem); } }\n &:last-child {\n margin-bottom: -0.5rem; }\n &:not(:last-child) {\n margin-bottom: 1rem; }\n // Sizes\n &.are-small {\n .button:not(.is-normal):not(.is-medium):not(.is-large) {\n @include button-small; } }\n &.are-medium {\n .button:not(.is-small):not(.is-normal):not(.is-large) {\n @include button-medium; } }\n &.are-large {\n .button:not(.is-small):not(.is-normal):not(.is-medium) {\n @include button-large; } }\n &.has-addons {\n .button {\n &:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n &:not(:last-child) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n @include ltr-property(\"margin\", -1px); }\n &:last-child {\n @include ltr-property(\"margin\", 0); }\n &:hover,\n &.is-hovered {\n z-index: 2; }\n &:focus,\n &.is-focused,\n &:active,\n &.is-active,\n &.is-selected {\n z-index: 3;\n &:hover {\n z-index: 4; } }\n &.is-expanded {\n flex-grow: 1;\n flex-shrink: 1; } } }\n &.is-centered {\n justify-content: center;\n &:not(.has-addons) {\n .button:not(.is-fullwidth) {\n margin-left: 0.25rem;\n margin-right: 0.25rem; } } }\n &.is-right {\n justify-content: flex-end;\n &:not(.has-addons) {\n .button:not(.is-fullwidth) {\n margin-left: 0.25rem;\n margin-right: 0.25rem; } } } }\n","$container-offset: (2 * $gap) !default;\n\n.container {\n flex-grow: 1;\n margin: 0 auto;\n position: relative;\n width: auto;\n &.is-fluid {\n max-width: none;\n padding-left: $gap;\n padding-right: $gap;\n width: 100%; }\n @include desktop {\n max-width: $desktop - $container-offset; }\n @include until-widescreen {\n &.is-widescreen {\n max-width: $widescreen - $container-offset; } }\n @include until-fullhd {\n &.is-fullhd {\n max-width: $fullhd - $container-offset; } }\n @include widescreen {\n max-width: $widescreen - $container-offset; }\n @include fullhd {\n max-width: $fullhd - $container-offset; } }\n","$content-heading-color: $text-strong !default;\n$content-heading-weight: $weight-semibold !default;\n$content-heading-line-height: 1.125 !default;\n\n$content-blockquote-background-color: $background !default;\n$content-blockquote-border-left: 5px solid $border !default;\n$content-blockquote-padding: 1.25em 1.5em !default;\n\n$content-pre-padding: 1.25em 1.5em !default;\n\n$content-table-cell-border: 1px solid $border !default;\n$content-table-cell-border-width: 0 0 1px !default;\n$content-table-cell-padding: 0.5em 0.75em !default;\n$content-table-cell-heading-color: $text-strong !default;\n$content-table-head-cell-border-width: 0 0 2px !default;\n$content-table-head-cell-color: $text-strong !default;\n$content-table-foot-cell-border-width: 2px 0 0 !default;\n$content-table-foot-cell-color: $text-strong !default;\n\n.content {\n @extend %block;\n // Inline\n li + li {\n margin-top: 0.25em; }\n // Block\n p,\n dl,\n ol,\n ul,\n blockquote,\n pre,\n table {\n &:not(:last-child) {\n margin-bottom: 1em; } }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: $content-heading-color;\n font-weight: $content-heading-weight;\n line-height: $content-heading-line-height; }\n h1 {\n font-size: 2em;\n margin-bottom: 0.5em;\n &:not(:first-child) {\n margin-top: 1em; } }\n h2 {\n font-size: 1.75em;\n margin-bottom: 0.5714em;\n &:not(:first-child) {\n margin-top: 1.1428em; } }\n h3 {\n font-size: 1.5em;\n margin-bottom: 0.6666em;\n &:not(:first-child) {\n margin-top: 1.3333em; } }\n h4 {\n font-size: 1.25em;\n margin-bottom: 0.8em; }\n h5 {\n font-size: 1.125em;\n margin-bottom: 0.8888em; }\n h6 {\n font-size: 1em;\n margin-bottom: 1em; }\n blockquote {\n background-color: $content-blockquote-background-color;\n @include ltr-property(\"border\", $content-blockquote-border-left, false);\n padding: $content-blockquote-padding; }\n ol {\n list-style-position: outside;\n @include ltr-property(\"margin\", 2em, false);\n margin-top: 1em;\n &:not([type]) {\n list-style-type: decimal;\n &.is-lower-alpha {\n list-style-type: lower-alpha; }\n &.is-lower-roman {\n list-style-type: lower-roman; }\n &.is-upper-alpha {\n list-style-type: upper-alpha; }\n &.is-upper-roman {\n list-style-type: upper-roman; } } }\n ul {\n list-style: disc outside;\n @include ltr-property(\"margin\", 2em, false);\n margin-top: 1em;\n ul {\n list-style-type: circle;\n margin-top: 0.5em;\n ul {\n list-style-type: square; } } }\n dd {\n @include ltr-property(\"margin\", 2em, false); }\n figure {\n margin-left: 2em;\n margin-right: 2em;\n text-align: center;\n &:not(:first-child) {\n margin-top: 2em; }\n &:not(:last-child) {\n margin-bottom: 2em; }\n img {\n display: inline-block; }\n figcaption {\n font-style: italic; } }\n pre {\n @include overflow-touch;\n overflow-x: auto;\n padding: $content-pre-padding;\n white-space: pre;\n word-wrap: normal; }\n sup,\n sub {\n font-size: 75%; }\n table {\n width: 100%;\n td,\n th {\n border: $content-table-cell-border;\n border-width: $content-table-cell-border-width;\n padding: $content-table-cell-padding;\n vertical-align: top; }\n th {\n color: $content-table-cell-heading-color;\n &:not([align]) {\n text-align: inherit; } }\n thead {\n td,\n th {\n border-width: $content-table-head-cell-border-width;\n color: $content-table-head-cell-color; } }\n tfoot {\n td,\n th {\n border-width: $content-table-foot-cell-border-width;\n color: $content-table-foot-cell-color; } }\n tbody {\n tr {\n &:last-child {\n td,\n th {\n border-bottom-width: 0; } } } } }\n .tabs {\n li + li {\n margin-top: 0; } }\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; } }\n","$icon-dimensions: 1.5rem !default;\n$icon-dimensions-small: 1rem !default;\n$icon-dimensions-medium: 2rem !default;\n$icon-dimensions-large: 3rem !default;\n\n.icon {\n align-items: center;\n display: inline-flex;\n justify-content: center;\n height: $icon-dimensions;\n width: $icon-dimensions;\n // Sizes\n &.is-small {\n height: $icon-dimensions-small;\n width: $icon-dimensions-small; }\n &.is-medium {\n height: $icon-dimensions-medium;\n width: $icon-dimensions-medium; }\n &.is-large {\n height: $icon-dimensions-large;\n width: $icon-dimensions-large; } }\n","$notification-background-color: $background !default;\n$notification-code-background-color: $scheme-main !default;\n$notification-radius: $radius !default;\n$notification-padding: 1.25rem 2.5rem 1.25rem 1.5rem !default;\n$notification-padding-ltr: 1.25rem 2.5rem 1.25rem 1.5rem !default;\n$notification-padding-rtl: 1.25rem 1.5rem 1.25rem 2.5rem !default;\n\n.notification {\n @extend %block;\n background-color: $notification-background-color;\n border-radius: $notification-radius;\n position: relative;\n @include ltr {\n padding: $notification-padding-ltr; }\n @include rtl {\n padding: $notification-padding-rtl; }\n a:not(.button):not(.dropdown-item) {\n color: currentColor;\n text-decoration: underline; }\n strong {\n color: currentColor; }\n code,\n pre {\n background: $notification-code-background-color; }\n pre code {\n background: transparent; }\n & > .delete {\n @include ltr-position(0.5rem);\n position: absolute;\n top: 0.5rem; }\n .title,\n .subtitle,\n .content {\n color: currentColor; }\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n $color-invert: nth($pair, 2);\n &.is-#{$name} {\n background-color: $color;\n color: $color-invert;\n // If light and dark colors are provided\n @if length($pair) >= 4 {\n $color-light: nth($pair, 3);\n $color-dark: nth($pair, 4);\n &.is-light {\n background-color: $color-light;\n color: $color-dark; } } } } }\n","$progress-bar-background-color: $border-light !default;\n$progress-value-background-color: $text !default;\n$progress-border-radius: $radius-rounded !default;\n\n$progress-indeterminate-duration: 1.5s !default;\n\n.progress {\n @extend %block;\n -moz-appearance: none;\n -webkit-appearance: none;\n border: none;\n border-radius: $progress-border-radius;\n display: block;\n height: $size-normal;\n overflow: hidden;\n padding: 0;\n width: 100%;\n &::-webkit-progress-bar {\n background-color: $progress-bar-background-color; }\n &::-webkit-progress-value {\n background-color: $progress-value-background-color; }\n &::-moz-progress-bar {\n background-color: $progress-value-background-color; }\n &::-ms-fill {\n background-color: $progress-value-background-color;\n border: none; }\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n &.is-#{$name} {\n &::-webkit-progress-value {\n background-color: $color; }\n &::-moz-progress-bar {\n background-color: $color; }\n &::-ms-fill {\n background-color: $color; }\n &:indeterminate {\n background-image: linear-gradient(to right, $color 30%, $progress-bar-background-color 30%); } } }\n\n &:indeterminate {\n animation-duration: $progress-indeterminate-duration;\n animation-iteration-count: infinite;\n animation-name: moveIndeterminate;\n animation-timing-function: linear;\n background-color: $progress-bar-background-color;\n background-image: linear-gradient(to right, $text 30%, $progress-bar-background-color 30%);\n background-position: top left;\n background-repeat: no-repeat;\n background-size: 150% 150%;\n &::-webkit-progress-bar {\n background-color: transparent; }\n &::-moz-progress-bar {\n background-color: transparent; } }\n\n // Sizes\n &.is-small {\n height: $size-small; }\n &.is-medium {\n height: $size-medium; }\n &.is-large {\n height: $size-large; } }\n\n@keyframes moveIndeterminate {\n from {\n background-position: 200% 0; }\n to {\n background-position: -200% 0; } }\n","$table-color: $text-strong !default;\n$table-background-color: $scheme-main !default;\n\n$table-cell-border: 1px solid $border !default;\n$table-cell-border-width: 0 0 1px !default;\n$table-cell-padding: 0.5em 0.75em !default;\n$table-cell-heading-color: $text-strong !default;\n\n$table-head-cell-border-width: 0 0 2px !default;\n$table-head-cell-color: $text-strong !default;\n$table-foot-cell-border-width: 2px 0 0 !default;\n$table-foot-cell-color: $text-strong !default;\n\n$table-head-background-color: transparent !default;\n$table-body-background-color: transparent !default;\n$table-foot-background-color: transparent !default;\n\n$table-row-hover-background-color: $scheme-main-bis !default;\n\n$table-row-active-background-color: $primary !default;\n$table-row-active-color: $primary-invert !default;\n\n$table-striped-row-even-background-color: $scheme-main-bis !default;\n$table-striped-row-even-hover-background-color: $scheme-main-ter !default;\n\n.table {\n @extend %block;\n background-color: $table-background-color;\n color: $table-color;\n td,\n th {\n border: $table-cell-border;\n border-width: $table-cell-border-width;\n padding: $table-cell-padding;\n vertical-align: top;\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n $color-invert: nth($pair, 2);\n &.is-#{$name} {\n background-color: $color;\n border-color: $color;\n color: $color-invert; } }\n // Modifiers\n &.is-narrow {\n white-space: nowrap;\n width: 1%; }\n &.is-selected {\n background-color: $table-row-active-background-color;\n color: $table-row-active-color;\n a,\n strong {\n color: currentColor; } }\n &.is-vcentered {\n vertical-align: middle; } }\n th {\n color: $table-cell-heading-color;\n &:not([align]) {\n text-align: inherit; } }\n tr {\n &.is-selected {\n background-color: $table-row-active-background-color;\n color: $table-row-active-color;\n a,\n strong {\n color: currentColor; }\n td,\n th {\n border-color: $table-row-active-color;\n color: currentColor; } } }\n thead {\n background-color: $table-head-background-color;\n td,\n th {\n border-width: $table-head-cell-border-width;\n color: $table-head-cell-color; } }\n tfoot {\n background-color: $table-foot-background-color;\n td,\n th {\n border-width: $table-foot-cell-border-width;\n color: $table-foot-cell-color; } }\n tbody {\n background-color: $table-body-background-color;\n tr {\n &:last-child {\n td,\n th {\n border-bottom-width: 0; } } } }\n // Modifiers\n &.is-bordered {\n td,\n th {\n border-width: 1px; }\n tr {\n &:last-child {\n td,\n th {\n border-bottom-width: 1px; } } } }\n &.is-fullwidth {\n width: 100%; }\n &.is-hoverable {\n tbody {\n tr:not(.is-selected) {\n &:hover {\n background-color: $table-row-hover-background-color; } } }\n &.is-striped {\n tbody {\n tr:not(.is-selected) {\n &:hover {\n background-color: $table-row-hover-background-color;\n &:nth-child(even) {\n background-color: $table-striped-row-even-hover-background-color; } } } } } }\n &.is-narrow {\n td,\n th {\n padding: 0.25em 0.5em; } }\n &.is-striped {\n tbody {\n tr:not(.is-selected) {\n &:nth-child(even) {\n background-color: $table-striped-row-even-background-color; } } } } }\n\n.table-container {\n @extend %block;\n @include overflow-touch;\n overflow: auto;\n overflow-y: hidden;\n max-width: 100%; }\n","$title-color: $text-strong !default;\n$title-family: false !default;\n$title-size: $size-3 !default;\n$title-weight: $weight-semibold !default;\n$title-line-height: 1.125 !default;\n$title-strong-color: inherit !default;\n$title-strong-weight: inherit !default;\n$title-sub-size: 0.75em !default;\n$title-sup-size: 0.75em !default;\n\n$subtitle-color: $text !default;\n$subtitle-family: false !default;\n$subtitle-size: $size-5 !default;\n$subtitle-weight: $weight-normal !default;\n$subtitle-line-height: 1.25 !default;\n$subtitle-strong-color: $text-strong !default;\n$subtitle-strong-weight: $weight-semibold !default;\n$subtitle-negative-margin: -1.25rem !default;\n\n.title,\n.subtitle {\n @extend %block;\n word-break: break-word;\n em,\n span {\n font-weight: inherit; }\n sub {\n font-size: $title-sub-size; }\n sup {\n font-size: $title-sup-size; }\n .tag {\n vertical-align: middle; } }\n\n.title {\n color: $title-color;\n @if $title-family {\n font-family: $title-family; }\n font-size: $title-size;\n font-weight: $title-weight;\n line-height: $title-line-height;\n strong {\n color: $title-strong-color;\n font-weight: $title-strong-weight; }\n & + .highlight {\n margin-top: -0.75rem; }\n &:not(.is-spaced) + .subtitle {\n margin-top: $subtitle-negative-margin; }\n // Sizes\n @each $size in $sizes {\n $i: index($sizes, $size);\n &.is-#{$i} {\n font-size: $size; } } }\n\n.subtitle {\n color: $subtitle-color;\n @if $subtitle-family {\n font-family: $subtitle-family; }\n font-size: $subtitle-size;\n font-weight: $subtitle-weight;\n line-height: $subtitle-line-height;\n strong {\n color: $subtitle-strong-color;\n font-weight: $subtitle-strong-weight; }\n &:not(.is-spaced) + .title {\n margin-top: $subtitle-negative-margin; }\n // Sizes\n @each $size in $sizes {\n $i: index($sizes, $size);\n &.is-#{$i} {\n font-size: $size; } } }\n",".block {\n @extend %block; }\n\n.delete {\n @extend %delete; }\n\n.heading {\n display: block;\n font-size: 11px;\n letter-spacing: 1px;\n margin-bottom: 5px;\n text-transform: uppercase; }\n\n.highlight {\n @extend %block;\n font-weight: $weight-normal;\n max-width: 100%;\n overflow: hidden;\n padding: 0;\n pre {\n overflow: auto;\n max-width: 100%; } }\n\n.loader {\n @extend %loader; }\n\n.number {\n align-items: center;\n background-color: $background;\n border-radius: $radius-rounded;\n display: inline-flex;\n font-size: $size-medium;\n height: 2em;\n justify-content: center;\n margin-right: 1.5rem;\n min-width: 2.5em;\n padding: 0.25rem 0.5rem;\n text-align: center;\n vertical-align: top; }\n","$input-color: $text-strong !default;\n$input-background-color: $scheme-main !default;\n$input-border-color: $border !default;\n$input-height: $control-height !default;\n$input-shadow: inset 0 0.0625em 0.125em rgba($scheme-invert, 0.05) !default;\n$input-placeholder-color: bulmaRgba($input-color, 0.3) !default;\n\n$input-hover-color: $text-strong !default;\n$input-hover-border-color: $border-hover !default;\n\n$input-focus-color: $text-strong !default;\n$input-focus-border-color: $link !default;\n$input-focus-box-shadow-size: 0 0 0 0.125em !default;\n$input-focus-box-shadow-color: bulmaRgba($link, 0.25) !default;\n\n$input-disabled-color: $text-light !default;\n$input-disabled-background-color: $background !default;\n$input-disabled-border-color: $background !default;\n$input-disabled-placeholder-color: bulmaRgba($input-disabled-color, 0.3) !default;\n\n$input-arrow: $link !default;\n\n$input-icon-color: $border !default;\n$input-icon-active-color: $text !default;\n\n$input-radius: $radius !default;\n\n@mixin input {\n @extend %control;\n background-color: $input-background-color;\n border-color: $input-border-color;\n border-radius: $input-radius;\n color: $input-color;\n @include placeholder {\n color: $input-placeholder-color; }\n &:hover,\n &.is-hovered {\n border-color: $input-hover-border-color; }\n &:focus,\n &.is-focused,\n &:active,\n &.is-active {\n border-color: $input-focus-border-color;\n box-shadow: $input-focus-box-shadow-size $input-focus-box-shadow-color; }\n &[disabled],\n fieldset[disabled] & {\n background-color: $input-disabled-background-color;\n border-color: $input-disabled-border-color;\n box-shadow: none;\n color: $input-disabled-color;\n @include placeholder {\n color: $input-disabled-placeholder-color; } } }\n\n%input {\n @include input; }\n","$textarea-padding: $control-padding-horizontal !default;\n$textarea-max-height: 40em !default;\n$textarea-min-height: 8em !default;\n\n%input-textarea {\n @extend %input;\n box-shadow: $input-shadow;\n max-width: 100%;\n width: 100%;\n &[readonly] {\n box-shadow: none; }\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n &.is-#{$name} {\n border-color: $color;\n &:focus,\n &.is-focused,\n &:active,\n &.is-active {\n box-shadow: $input-focus-box-shadow-size bulmaRgba($color, 0.25); } } }\n // Sizes\n &.is-small {\n @include control-small; }\n &.is-medium {\n @include control-medium; }\n &.is-large {\n @include control-large; }\n // Modifiers\n &.is-fullwidth {\n display: block;\n width: 100%; }\n &.is-inline {\n display: inline;\n width: auto; } }\n\n.input {\n @extend %input-textarea;\n &.is-rounded {\n border-radius: $radius-rounded;\n padding-left: calc(#{$control-padding-horizontal} + 0.375em);\n padding-right: calc(#{$control-padding-horizontal} + 0.375em); }\n &.is-static {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none;\n padding-left: 0;\n padding-right: 0; } }\n\n.textarea {\n @extend %input-textarea;\n display: block;\n max-width: 100%;\n min-width: 100%;\n padding: $textarea-padding;\n resize: vertical;\n &:not([rows]) {\n max-height: $textarea-max-height;\n min-height: $textarea-min-height; }\n &[rows] {\n height: initial; }\n // Modifiers\n &.has-fixed-size {\n resize: none; } }\n","%checkbox-radio {\n cursor: pointer;\n display: inline-block;\n line-height: 1.25;\n position: relative;\n input {\n cursor: pointer; }\n &:hover {\n color: $input-hover-color; }\n &[disabled],\n fieldset[disabled] & {\n color: $input-disabled-color;\n cursor: not-allowed; } }\n\n.checkbox {\n @extend %checkbox-radio; }\n\n.radio {\n @extend %checkbox-radio;\n & + .radio {\n @include ltr-property(\"margin\", 0.5em, false); } }\n",".select {\n display: inline-block;\n max-width: 100%;\n position: relative;\n vertical-align: top;\n &:not(.is-multiple) {\n height: $input-height; }\n &:not(.is-multiple):not(.is-loading) {\n &::after {\n @extend %arrow;\n border-color: $input-arrow;\n @include ltr-position(1.125em);\n z-index: 4; } }\n &.is-rounded {\n select {\n border-radius: $radius-rounded;\n @include ltr-property(\"padding\", 1em, false); } }\n select {\n @extend %input;\n cursor: pointer;\n display: block;\n font-size: 1em;\n max-width: 100%;\n outline: none;\n &::-ms-expand {\n display: none; }\n &[disabled]:hover,\n fieldset[disabled] &:hover {\n border-color: $input-disabled-border-color; }\n &:not([multiple]) {\n @include ltr-property(\"padding\", 2.5em); }\n &[multiple] {\n height: auto;\n padding: 0;\n option {\n padding: 0.5em 1em; } } }\n // States\n &:not(.is-multiple):not(.is-loading):hover {\n &::after {\n border-color: $input-hover-color; } }\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n &.is-#{$name} {\n &:not(:hover)::after {\n border-color: $color; }\n select {\n border-color: $color;\n &:hover,\n &.is-hovered {\n border-color: bulmaDarken($color, 5%); }\n &:focus,\n &.is-focused,\n &:active,\n &.is-active {\n box-shadow: $input-focus-box-shadow-size bulmaRgba($color, 0.25); } } } }\n // Sizes\n &.is-small {\n @include control-small; }\n &.is-medium {\n @include control-medium; }\n &.is-large {\n @include control-large; }\n // Modifiers\n &.is-disabled {\n &::after {\n border-color: $input-disabled-color; } }\n &.is-fullwidth {\n width: 100%;\n select {\n width: 100%; } }\n &.is-loading {\n &::after {\n @extend %loader;\n margin-top: 0;\n position: absolute;\n @include ltr-position(0.625em);\n top: 0.625em;\n transform: none; }\n &.is-small:after {\n font-size: $size-small; }\n &.is-medium:after {\n font-size: $size-medium; }\n &.is-large:after {\n font-size: $size-large; } } }\n","$file-border-color: $border !default;\n$file-radius: $radius !default;\n\n$file-cta-background-color: $scheme-main-ter !default;\n$file-cta-color: $text !default;\n$file-cta-hover-color: $text-strong !default;\n$file-cta-active-color: $text-strong !default;\n\n$file-name-border-color: $border !default;\n$file-name-border-style: solid !default;\n$file-name-border-width: 1px 1px 1px 0 !default;\n$file-name-max-width: 16em !default;\n\n.file {\n @extend %unselectable;\n align-items: stretch;\n display: flex;\n justify-content: flex-start;\n position: relative;\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n $color-invert: nth($pair, 2);\n &.is-#{$name} {\n .file-cta {\n background-color: $color;\n border-color: transparent;\n color: $color-invert; }\n &:hover,\n &.is-hovered {\n .file-cta {\n background-color: bulmaDarken($color, 2.5%);\n border-color: transparent;\n color: $color-invert; } }\n &:focus,\n &.is-focused {\n .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em bulmaRgba($color, 0.25);\n color: $color-invert; } }\n &:active,\n &.is-active {\n .file-cta {\n background-color: bulmaDarken($color, 5%);\n border-color: transparent;\n color: $color-invert; } } } }\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium;\n .file-icon {\n .fa {\n font-size: 21px; } } }\n &.is-large {\n font-size: $size-large;\n .file-icon {\n .fa {\n font-size: 28px; } } }\n // Modifiers\n &.has-name {\n .file-cta {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n .file-name {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n &.is-empty {\n .file-cta {\n border-radius: $file-radius; }\n .file-name {\n display: none; } } }\n &.is-boxed {\n .file-label {\n flex-direction: column; }\n .file-cta {\n flex-direction: column;\n height: auto;\n padding: 1em 3em; }\n .file-name {\n border-width: 0 1px 1px; }\n .file-icon {\n height: 1.5em;\n width: 1.5em;\n .fa {\n font-size: 21px; } }\n &.is-small {\n .file-icon .fa {\n font-size: 14px; } }\n &.is-medium {\n .file-icon .fa {\n font-size: 28px; } }\n &.is-large {\n .file-icon .fa {\n font-size: 35px; } }\n &.has-name {\n .file-cta {\n border-radius: $file-radius $file-radius 0 0; }\n .file-name {\n border-radius: 0 0 $file-radius $file-radius;\n border-width: 0 1px 1px; } } }\n &.is-centered {\n justify-content: center; }\n &.is-fullwidth {\n .file-label {\n width: 100%; }\n .file-name {\n flex-grow: 1;\n max-width: none; } }\n &.is-right {\n justify-content: flex-end;\n .file-cta {\n border-radius: 0 $file-radius $file-radius 0; }\n .file-name {\n border-radius: $file-radius 0 0 $file-radius;\n border-width: 1px 0 1px 1px;\n order: -1; } } }\n\n.file-label {\n align-items: stretch;\n display: flex;\n cursor: pointer;\n justify-content: flex-start;\n overflow: hidden;\n position: relative;\n &:hover {\n .file-cta {\n background-color: bulmaDarken($file-cta-background-color, 2.5%);\n color: $file-cta-hover-color; }\n .file-name {\n border-color: bulmaDarken($file-name-border-color, 2.5%); } }\n &:active {\n .file-cta {\n background-color: bulmaDarken($file-cta-background-color, 5%);\n color: $file-cta-active-color; }\n .file-name {\n border-color: bulmaDarken($file-name-border-color, 5%); } } }\n\n.file-input {\n height: 100%;\n left: 0;\n opacity: 0;\n outline: none;\n position: absolute;\n top: 0;\n width: 100%; }\n\n.file-cta,\n.file-name {\n @extend %control;\n border-color: $file-border-color;\n border-radius: $file-radius;\n font-size: 1em;\n padding-left: 1em;\n padding-right: 1em;\n white-space: nowrap; }\n\n.file-cta {\n background-color: $file-cta-background-color;\n color: $file-cta-color; }\n\n.file-name {\n border-color: $file-name-border-color;\n border-style: $file-name-border-style;\n border-width: $file-name-border-width;\n display: block;\n max-width: $file-name-max-width;\n overflow: hidden;\n text-align: inherit;\n text-overflow: ellipsis; }\n\n.file-icon {\n align-items: center;\n display: flex;\n height: 1em;\n justify-content: center;\n @include ltr-property(\"margin\", 0.5em);\n width: 1em;\n .fa {\n font-size: 14px; } }\n","$label-color: $text-strong !default;\n$label-weight: $weight-bold !default;\n\n$help-size: $size-small !default;\n\n.label {\n color: $label-color;\n display: block;\n font-size: $size-normal;\n font-weight: $label-weight;\n &:not(:last-child) {\n margin-bottom: 0.5em; }\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; } }\n\n.help {\n display: block;\n font-size: $help-size;\n margin-top: 0.25rem;\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n &.is-#{$name} {\n color: $color; } } }\n\n// Containers\n\n.field {\n &:not(:last-child) {\n margin-bottom: 0.75rem; }\n // Modifiers\n &.has-addons {\n display: flex;\n justify-content: flex-start;\n .control {\n &:not(:last-child) {\n @include ltr-property(\"margin\", -1px); }\n &:not(:first-child):not(:last-child) {\n .button,\n .input,\n .select select {\n border-radius: 0; } }\n &:first-child:not(:only-child) {\n .button,\n .input,\n .select select {\n @include ltr {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n @include rtl {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; } } }\n &:last-child:not(:only-child) {\n .button,\n .input,\n .select select {\n @include ltr {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n @include rtl {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; } } }\n .button,\n .input,\n .select select {\n &:not([disabled]) {\n &:hover,\n &.is-hovered {\n z-index: 2; }\n &:focus,\n &.is-focused,\n &:active,\n &.is-active {\n z-index: 3;\n &:hover {\n z-index: 4; } } } }\n &.is-expanded {\n flex-grow: 1;\n flex-shrink: 1; } }\n &.has-addons-centered {\n justify-content: center; }\n &.has-addons-right {\n justify-content: flex-end; }\n &.has-addons-fullwidth {\n .control {\n flex-grow: 1;\n flex-shrink: 0; } } }\n &.is-grouped {\n display: flex;\n justify-content: flex-start;\n & > .control {\n flex-shrink: 0;\n &:not(:last-child) {\n margin-bottom: 0;\n @include ltr-property(\"margin\", 0.75rem); }\n &.is-expanded {\n flex-grow: 1;\n flex-shrink: 1; } }\n &.is-grouped-centered {\n justify-content: center; }\n &.is-grouped-right {\n justify-content: flex-end; }\n &.is-grouped-multiline {\n flex-wrap: wrap;\n & > .control {\n &:last-child,\n &:not(:last-child) {\n margin-bottom: 0.75rem; } }\n &:last-child {\n margin-bottom: -0.75rem; }\n &:not(:last-child) {\n margin-bottom: 0; } } }\n &.is-horizontal {\n @include tablet {\n display: flex; } } }\n\n.field-label {\n .label {\n font-size: inherit; }\n @include mobile {\n margin-bottom: 0.5rem; }\n @include tablet {\n flex-basis: 0;\n flex-grow: 1;\n flex-shrink: 0;\n @include ltr-property(\"margin\", 1.5rem);\n text-align: right;\n &.is-small {\n font-size: $size-small;\n padding-top: 0.375em; }\n &.is-normal {\n padding-top: 0.375em; }\n &.is-medium {\n font-size: $size-medium;\n padding-top: 0.375em; }\n &.is-large {\n font-size: $size-large;\n padding-top: 0.375em; } } }\n\n.field-body {\n .field .field {\n margin-bottom: 0; }\n @include tablet {\n display: flex;\n flex-basis: 0;\n flex-grow: 5;\n flex-shrink: 1;\n .field {\n margin-bottom: 0; }\n & > .field {\n flex-shrink: 1;\n &:not(.is-narrow) {\n flex-grow: 1; }\n &:not(:last-child) {\n @include ltr-property(\"margin\", 0.75rem); } } } }\n\n.control {\n box-sizing: border-box;\n clear: both;\n font-size: $size-normal;\n position: relative;\n text-align: inherit;\n // Modifiers\n &.has-icons-left,\n &.has-icons-right {\n .input,\n .select {\n &:focus {\n & ~ .icon {\n color: $input-icon-active-color; } }\n &.is-small ~ .icon {\n font-size: $size-small; }\n &.is-medium ~ .icon {\n font-size: $size-medium; }\n &.is-large ~ .icon {\n font-size: $size-large; } }\n .icon {\n color: $input-icon-color;\n height: $input-height;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: $input-height;\n z-index: 4; } }\n &.has-icons-left {\n .input,\n .select select {\n padding-left: $input-height; }\n .icon.is-left {\n left: 0; } }\n &.has-icons-right {\n .input,\n .select select {\n padding-right: $input-height; }\n .icon.is-right {\n right: 0; } }\n &.is-loading {\n &::after {\n @extend %loader;\n position: absolute !important;\n @include ltr-position(0.625em);\n top: 0.625em;\n z-index: 4; }\n &.is-small:after {\n font-size: $size-small; }\n &.is-medium:after {\n font-size: $size-medium; }\n &.is-large:after {\n font-size: $size-large; } } }\n","$level-item-spacing: ($block-spacing / 2) !default;\n\n.level {\n @extend %block;\n align-items: center;\n justify-content: space-between;\n code {\n border-radius: $radius; }\n img {\n display: inline-block;\n vertical-align: top; }\n // Modifiers\n &.is-mobile {\n display: flex;\n .level-left,\n .level-right {\n display: flex; }\n .level-left + .level-right {\n margin-top: 0; }\n .level-item {\n &:not(:last-child) {\n margin-bottom: 0;\n @include ltr-property(\"margin\", $level-item-spacing); }\n &:not(.is-narrow) {\n flex-grow: 1; } } }\n // Responsiveness\n @include tablet {\n display: flex;\n & > .level-item {\n &:not(.is-narrow) {\n flex-grow: 1; } } } }\n\n.level-item {\n align-items: center;\n display: flex;\n flex-basis: auto;\n flex-grow: 0;\n flex-shrink: 0;\n justify-content: center;\n .title,\n .subtitle {\n margin-bottom: 0; }\n // Responsiveness\n @include mobile {\n &:not(:last-child) {\n margin-bottom: $level-item-spacing; } } }\n\n.level-left,\n.level-right {\n flex-basis: auto;\n flex-grow: 0;\n flex-shrink: 0;\n .level-item {\n // Modifiers\n &.is-flexible {\n flex-grow: 1; }\n // Responsiveness\n @include tablet {\n &:not(:last-child) {\n @include ltr-property(\"margin\", $level-item-spacing); } } } }\n\n.level-left {\n align-items: center;\n justify-content: flex-start;\n // Responsiveness\n @include mobile {\n & + .level-right {\n margin-top: 1.5rem; } }\n @include tablet {\n display: flex; } }\n\n.level-right {\n align-items: center;\n justify-content: flex-end;\n // Responsiveness\n @include tablet {\n display: flex; } }\n","$menu-item-color: $text !default;\n$menu-item-radius: $radius-small !default;\n$menu-item-hover-color: $text-strong !default;\n$menu-item-hover-background-color: $background !default;\n$menu-item-active-color: $link-invert !default;\n$menu-item-active-background-color: $link !default;\n\n$menu-list-border-left: 1px solid $border !default;\n$menu-list-line-height: 1.25 !default;\n$menu-list-link-padding: 0.5em 0.75em !default;\n$menu-nested-list-margin: 0.75em !default;\n$menu-nested-list-padding-left: 0.75em !default;\n\n$menu-label-color: $text-light !default;\n$menu-label-font-size: 0.75em !default;\n$menu-label-letter-spacing: 0.1em !default;\n$menu-label-spacing: 1em !default;\n\n.menu {\n font-size: $size-normal;\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; } }\n\n.menu-list {\n line-height: $menu-list-line-height;\n a {\n border-radius: $menu-item-radius;\n color: $menu-item-color;\n display: block;\n padding: $menu-list-link-padding;\n &:hover {\n background-color: $menu-item-hover-background-color;\n color: $menu-item-hover-color; }\n // Modifiers\n &.is-active {\n background-color: $menu-item-active-background-color;\n color: $menu-item-active-color; } }\n li {\n ul {\n @include ltr-property(\"border\", $menu-list-border-left, false);\n margin: $menu-nested-list-margin;\n @include ltr-property(\"padding\", $menu-nested-list-padding-left, false); } } }\n\n.menu-label {\n color: $menu-label-color;\n font-size: $menu-label-font-size;\n letter-spacing: $menu-label-letter-spacing;\n text-transform: uppercase;\n &:not(:first-child) {\n margin-top: $menu-label-spacing; }\n &:not(:last-child) {\n margin-bottom: $menu-label-spacing; } }\n","$message-background-color: $background !default;\n$message-radius: $radius !default;\n\n$message-header-background-color: $text !default;\n$message-header-color: $text-invert !default;\n$message-header-weight: $weight-bold !default;\n$message-header-padding: 0.75em 1em !default;\n$message-header-radius: $radius !default;\n\n$message-body-border-color: $border !default;\n$message-body-border-width: 0 0 0 4px !default;\n$message-body-color: $text !default;\n$message-body-padding: 1.25em 1.5em !default;\n$message-body-radius: $radius !default;\n\n$message-body-pre-background-color: $scheme-main !default;\n$message-body-pre-code-background-color: transparent !default;\n\n$message-header-body-border-width: 0 !default;\n$message-colors: $colors !default;\n\n.message {\n @extend %block;\n background-color: $message-background-color;\n border-radius: $message-radius;\n font-size: $size-normal;\n strong {\n color: currentColor; }\n a:not(.button):not(.tag):not(.dropdown-item) {\n color: currentColor;\n text-decoration: underline; }\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; }\n // Colors\n @each $name, $components in $message-colors {\n $color: nth($components, 1);\n $color-invert: nth($components, 2);\n $color-light: null;\n $color-dark: null;\n\n @if length($components) >= 3 {\n $color-light: nth($components, 3);\n @if length($components) >= 4 {\n $color-dark: nth($components, 4); }\n @else {\n $color-luminance: colorLuminance($color);\n $darken-percentage: $color-luminance * 70%;\n $desaturate-percentage: $color-luminance * 30%;\n $color-dark: desaturate(darken($color, $darken-percentage), $desaturate-percentage); } }\n @else {\n $color-lightning: max((100% - lightness($color)) - 2%, 0%);\n $color-light: lighten($color, $color-lightning); }\n\n &.is-#{$name} {\n background-color: $color-light;\n .message-header {\n background-color: $color;\n color: $color-invert; }\n .message-body {\n border-color: $color;\n color: $color-dark; } } } }\n\n.message-header {\n align-items: center;\n background-color: $message-header-background-color;\n border-radius: $message-header-radius $message-header-radius 0 0;\n color: $message-header-color;\n display: flex;\n font-weight: $message-header-weight;\n justify-content: space-between;\n line-height: 1.25;\n padding: $message-header-padding;\n position: relative;\n .delete {\n flex-grow: 0;\n flex-shrink: 0;\n @include ltr-property(\"margin\", 0.75em, false); }\n & + .message-body {\n border-width: $message-header-body-border-width;\n border-top-left-radius: 0;\n border-top-right-radius: 0; } }\n\n.message-body {\n border-color: $message-body-border-color;\n border-radius: $message-body-radius;\n border-style: solid;\n border-width: $message-body-border-width;\n color: $message-body-color;\n padding: $message-body-padding;\n code,\n pre {\n background-color: $message-body-pre-background-color; }\n pre code {\n background-color: $message-body-pre-code-background-color; } }\n","$pagination-color: $text-strong !default;\n$pagination-border-color: $border !default;\n$pagination-margin: -0.25rem !default;\n$pagination-min-width: $control-height !default;\n\n$pagination-item-font-size: 1em !default;\n$pagination-item-margin: 0.25rem !default;\n$pagination-item-padding-left: 0.5em !default;\n$pagination-item-padding-right: 0.5em !default;\n\n$pagination-hover-color: $link-hover !default;\n$pagination-hover-border-color: $link-hover-border !default;\n\n$pagination-focus-color: $link-focus !default;\n$pagination-focus-border-color: $link-focus-border !default;\n\n$pagination-active-color: $link-active !default;\n$pagination-active-border-color: $link-active-border !default;\n\n$pagination-disabled-color: $text-light !default;\n$pagination-disabled-background-color: $border !default;\n$pagination-disabled-border-color: $border !default;\n\n$pagination-current-color: $link-invert !default;\n$pagination-current-background-color: $link !default;\n$pagination-current-border-color: $link !default;\n\n$pagination-ellipsis-color: $grey-light !default;\n\n$pagination-shadow-inset: inset 0 1px 2px rgba($scheme-invert, 0.2);\n\n.pagination {\n @extend %block;\n font-size: $size-normal;\n margin: $pagination-margin;\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; }\n &.is-rounded {\n .pagination-previous,\n .pagination-next {\n padding-left: 1em;\n padding-right: 1em;\n border-radius: $radius-rounded; }\n .pagination-link {\n border-radius: $radius-rounded; } } }\n\n.pagination,\n.pagination-list {\n align-items: center;\n display: flex;\n justify-content: center;\n text-align: center; }\n\n.pagination-previous,\n.pagination-next,\n.pagination-link,\n.pagination-ellipsis {\n @extend %control;\n @extend %unselectable;\n font-size: $pagination-item-font-size;\n justify-content: center;\n margin: $pagination-item-margin;\n padding-left: $pagination-item-padding-left;\n padding-right: $pagination-item-padding-right;\n text-align: center; }\n\n.pagination-previous,\n.pagination-next,\n.pagination-link {\n border-color: $pagination-border-color;\n color: $pagination-color;\n min-width: $pagination-min-width;\n &:hover {\n border-color: $pagination-hover-border-color;\n color: $pagination-hover-color; }\n &:focus {\n border-color: $pagination-focus-border-color; }\n &:active {\n box-shadow: $pagination-shadow-inset; }\n &[disabled] {\n background-color: $pagination-disabled-background-color;\n border-color: $pagination-disabled-border-color;\n box-shadow: none;\n color: $pagination-disabled-color;\n opacity: 0.5; } }\n\n.pagination-previous,\n.pagination-next {\n padding-left: 0.75em;\n padding-right: 0.75em;\n white-space: nowrap; }\n\n.pagination-link {\n &.is-current {\n background-color: $pagination-current-background-color;\n border-color: $pagination-current-border-color;\n color: $pagination-current-color; } }\n\n.pagination-ellipsis {\n color: $pagination-ellipsis-color;\n pointer-events: none; }\n\n.pagination-list {\n flex-wrap: wrap; }\n\n@include mobile {\n .pagination {\n flex-wrap: wrap; }\n .pagination-previous,\n .pagination-next {\n flex-grow: 1;\n flex-shrink: 1; }\n .pagination-list {\n li {\n flex-grow: 1;\n flex-shrink: 1; } } }\n\n@include tablet {\n .pagination-list {\n flex-grow: 1;\n flex-shrink: 1;\n justify-content: flex-start;\n order: 1; }\n .pagination-previous {\n order: 2; }\n .pagination-next {\n order: 3; }\n .pagination {\n justify-content: space-between;\n &.is-centered {\n .pagination-previous {\n order: 1; }\n .pagination-list {\n justify-content: center;\n order: 2; }\n .pagination-next {\n order: 3; } }\n &.is-right {\n .pagination-previous {\n order: 1; }\n .pagination-next {\n order: 2; }\n .pagination-list {\n justify-content: flex-end;\n order: 3; } } } }\n","$tabs-border-bottom-color: $border !default;\n$tabs-border-bottom-style: solid !default;\n$tabs-border-bottom-width: 1px !default;\n$tabs-link-color: $text !default;\n$tabs-link-hover-border-bottom-color: $text-strong !default;\n$tabs-link-hover-color: $text-strong !default;\n$tabs-link-active-border-bottom-color: $link !default;\n$tabs-link-active-color: $link !default;\n$tabs-link-padding: 0.5em 1em !default;\n\n$tabs-boxed-link-radius: $radius !default;\n$tabs-boxed-link-hover-background-color: $background !default;\n$tabs-boxed-link-hover-border-bottom-color: $border !default;\n\n$tabs-boxed-link-active-background-color: $scheme-main !default;\n$tabs-boxed-link-active-border-color: $border !default;\n$tabs-boxed-link-active-border-bottom-color: transparent !default;\n\n$tabs-toggle-link-border-color: $border !default;\n$tabs-toggle-link-border-style: solid !default;\n$tabs-toggle-link-border-width: 1px !default;\n$tabs-toggle-link-hover-background-color: $background !default;\n$tabs-toggle-link-hover-border-color: $border-hover !default;\n$tabs-toggle-link-radius: $radius !default;\n$tabs-toggle-link-active-background-color: $link !default;\n$tabs-toggle-link-active-border-color: $link !default;\n$tabs-toggle-link-active-color: $link-invert !default;\n\n.tabs {\n @extend %block;\n @include overflow-touch;\n @extend %unselectable;\n align-items: stretch;\n display: flex;\n font-size: $size-normal;\n justify-content: space-between;\n overflow: hidden;\n overflow-x: auto;\n white-space: nowrap;\n a {\n align-items: center;\n border-bottom-color: $tabs-border-bottom-color;\n border-bottom-style: $tabs-border-bottom-style;\n border-bottom-width: $tabs-border-bottom-width;\n color: $tabs-link-color;\n display: flex;\n justify-content: center;\n margin-bottom: -#{$tabs-border-bottom-width};\n padding: $tabs-link-padding;\n vertical-align: top;\n &:hover {\n border-bottom-color: $tabs-link-hover-border-bottom-color;\n color: $tabs-link-hover-color; } }\n li {\n display: block;\n &.is-active {\n a {\n border-bottom-color: $tabs-link-active-border-bottom-color;\n color: $tabs-link-active-color; } } }\n ul {\n align-items: center;\n border-bottom-color: $tabs-border-bottom-color;\n border-bottom-style: $tabs-border-bottom-style;\n border-bottom-width: $tabs-border-bottom-width;\n display: flex;\n flex-grow: 1;\n flex-shrink: 0;\n justify-content: flex-start;\n &.is-left {\n padding-right: 0.75em; }\n &.is-center {\n flex: none;\n justify-content: center;\n padding-left: 0.75em;\n padding-right: 0.75em; }\n &.is-right {\n justify-content: flex-end;\n padding-left: 0.75em; } }\n .icon {\n &:first-child {\n @include ltr-property(\"margin\", 0.5em); }\n &:last-child {\n @include ltr-property(\"margin\", 0.5em, false); } }\n // Alignment\n &.is-centered {\n ul {\n justify-content: center; } }\n &.is-right {\n ul {\n justify-content: flex-end; } }\n // Styles\n &.is-boxed {\n a {\n border: 1px solid transparent;\n @include ltr {\n border-radius: $tabs-boxed-link-radius $tabs-boxed-link-radius 0 0; }\n @include rtl {\n border-radius: 0 0 $tabs-boxed-link-radius $tabs-boxed-link-radius; }\n &:hover {\n background-color: $tabs-boxed-link-hover-background-color;\n border-bottom-color: $tabs-boxed-link-hover-border-bottom-color; } }\n li {\n &.is-active {\n a {\n background-color: $tabs-boxed-link-active-background-color;\n border-color: $tabs-boxed-link-active-border-color;\n border-bottom-color: $tabs-boxed-link-active-border-bottom-color !important; } } } }\n &.is-fullwidth {\n li {\n flex-grow: 1;\n flex-shrink: 0; } }\n &.is-toggle {\n a {\n border-color: $tabs-toggle-link-border-color;\n border-style: $tabs-toggle-link-border-style;\n border-width: $tabs-toggle-link-border-width;\n margin-bottom: 0;\n position: relative;\n &:hover {\n background-color: $tabs-toggle-link-hover-background-color;\n border-color: $tabs-toggle-link-hover-border-color;\n z-index: 2; } }\n li {\n & + li {\n @include ltr-property(\"margin\", -#{$tabs-toggle-link-border-width}, false); }\n &:first-child a {\n @include ltr {\n border-top-left-radius: $tabs-toggle-link-radius;\n border-bottom-left-radius: $tabs-toggle-link-radius; }\n @include rtl {\n border-top-right-radius: $tabs-toggle-link-radius;\n border-bottom-right-radius: $tabs-toggle-link-radius; } }\n &:last-child a {\n @include ltr {\n border-top-right-radius: $tabs-toggle-link-radius;\n border-bottom-right-radius: $tabs-toggle-link-radius; }\n @include rtl {\n border-top-left-radius: $tabs-toggle-link-radius;\n border-bottom-left-radius: $tabs-toggle-link-radius; } }\n &.is-active {\n a {\n background-color: $tabs-toggle-link-active-background-color;\n border-color: $tabs-toggle-link-active-border-color;\n color: $tabs-toggle-link-active-color;\n z-index: 1; } } }\n ul {\n border-bottom: none; }\n &.is-toggle-rounded {\n li {\n &:first-child a {\n @include ltr {\n border-bottom-left-radius: $radius-rounded;\n border-top-left-radius: $radius-rounded;\n padding-left: 1.25em; }\n @include rtl {\n border-bottom-right-radius: $radius-rounded;\n border-top-right-radius: $radius-rounded;\n padding-right: 1.25em; } }\n &:last-child a {\n @include ltr {\n border-bottom-right-radius: $radius-rounded;\n border-top-right-radius: $radius-rounded;\n padding-right: 1.25em; }\n @include rtl {\n border-bottom-left-radius: $radius-rounded;\n border-top-left-radius: $radius-rounded;\n padding-left: 1.25em; } } } } }\n // Sizes\n &.is-small {\n font-size: $size-small; }\n &.is-medium {\n font-size: $size-medium; }\n &.is-large {\n font-size: $size-large; } }\n","$column-gap: 0.75rem !default;\n\n.column {\n display: block;\n flex-basis: 0;\n flex-grow: 1;\n flex-shrink: 1;\n padding: $column-gap;\n .columns.is-mobile > &.is-narrow {\n flex: none; }\n .columns.is-mobile > &.is-full {\n flex: none;\n width: 100%; }\n .columns.is-mobile > &.is-three-quarters {\n flex: none;\n width: 75%; }\n .columns.is-mobile > &.is-two-thirds {\n flex: none;\n width: 66.6666%; }\n .columns.is-mobile > &.is-half {\n flex: none;\n width: 50%; }\n .columns.is-mobile > &.is-one-third {\n flex: none;\n width: 33.3333%; }\n .columns.is-mobile > &.is-one-quarter {\n flex: none;\n width: 25%; }\n .columns.is-mobile > &.is-one-fifth {\n flex: none;\n width: 20%; }\n .columns.is-mobile > &.is-two-fifths {\n flex: none;\n width: 40%; }\n .columns.is-mobile > &.is-three-fifths {\n flex: none;\n width: 60%; }\n .columns.is-mobile > &.is-four-fifths {\n flex: none;\n width: 80%; }\n .columns.is-mobile > &.is-offset-three-quarters {\n margin-left: 75%; }\n .columns.is-mobile > &.is-offset-two-thirds {\n margin-left: 66.6666%; }\n .columns.is-mobile > &.is-offset-half {\n margin-left: 50%; }\n .columns.is-mobile > &.is-offset-one-third {\n margin-left: 33.3333%; }\n .columns.is-mobile > &.is-offset-one-quarter {\n margin-left: 25%; }\n .columns.is-mobile > &.is-offset-one-fifth {\n margin-left: 20%; }\n .columns.is-mobile > &.is-offset-two-fifths {\n margin-left: 40%; }\n .columns.is-mobile > &.is-offset-three-fifths {\n margin-left: 60%; }\n .columns.is-mobile > &.is-offset-four-fifths {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n .columns.is-mobile > &.is-#{$i} {\n flex: none;\n width: percentage($i / 12); }\n .columns.is-mobile > &.is-offset-#{$i} {\n margin-left: percentage($i / 12); } }\n @include mobile {\n &.is-narrow-mobile {\n flex: none; }\n &.is-full-mobile {\n flex: none;\n width: 100%; }\n &.is-three-quarters-mobile {\n flex: none;\n width: 75%; }\n &.is-two-thirds-mobile {\n flex: none;\n width: 66.6666%; }\n &.is-half-mobile {\n flex: none;\n width: 50%; }\n &.is-one-third-mobile {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter-mobile {\n flex: none;\n width: 25%; }\n &.is-one-fifth-mobile {\n flex: none;\n width: 20%; }\n &.is-two-fifths-mobile {\n flex: none;\n width: 40%; }\n &.is-three-fifths-mobile {\n flex: none;\n width: 60%; }\n &.is-four-fifths-mobile {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters-mobile {\n margin-left: 75%; }\n &.is-offset-two-thirds-mobile {\n margin-left: 66.6666%; }\n &.is-offset-half-mobile {\n margin-left: 50%; }\n &.is-offset-one-third-mobile {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter-mobile {\n margin-left: 25%; }\n &.is-offset-one-fifth-mobile {\n margin-left: 20%; }\n &.is-offset-two-fifths-mobile {\n margin-left: 40%; }\n &.is-offset-three-fifths-mobile {\n margin-left: 60%; }\n &.is-offset-four-fifths-mobile {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i}-mobile {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i}-mobile {\n margin-left: percentage($i / 12); } } }\n @include tablet {\n &.is-narrow,\n &.is-narrow-tablet {\n flex: none; }\n &.is-full,\n &.is-full-tablet {\n flex: none;\n width: 100%; }\n &.is-three-quarters,\n &.is-three-quarters-tablet {\n flex: none;\n width: 75%; }\n &.is-two-thirds,\n &.is-two-thirds-tablet {\n flex: none;\n width: 66.6666%; }\n &.is-half,\n &.is-half-tablet {\n flex: none;\n width: 50%; }\n &.is-one-third,\n &.is-one-third-tablet {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter,\n &.is-one-quarter-tablet {\n flex: none;\n width: 25%; }\n &.is-one-fifth,\n &.is-one-fifth-tablet {\n flex: none;\n width: 20%; }\n &.is-two-fifths,\n &.is-two-fifths-tablet {\n flex: none;\n width: 40%; }\n &.is-three-fifths,\n &.is-three-fifths-tablet {\n flex: none;\n width: 60%; }\n &.is-four-fifths,\n &.is-four-fifths-tablet {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters,\n &.is-offset-three-quarters-tablet {\n margin-left: 75%; }\n &.is-offset-two-thirds,\n &.is-offset-two-thirds-tablet {\n margin-left: 66.6666%; }\n &.is-offset-half,\n &.is-offset-half-tablet {\n margin-left: 50%; }\n &.is-offset-one-third,\n &.is-offset-one-third-tablet {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter,\n &.is-offset-one-quarter-tablet {\n margin-left: 25%; }\n &.is-offset-one-fifth,\n &.is-offset-one-fifth-tablet {\n margin-left: 20%; }\n &.is-offset-two-fifths,\n &.is-offset-two-fifths-tablet {\n margin-left: 40%; }\n &.is-offset-three-fifths,\n &.is-offset-three-fifths-tablet {\n margin-left: 60%; }\n &.is-offset-four-fifths,\n &.is-offset-four-fifths-tablet {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i},\n &.is-#{$i}-tablet {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i},\n &.is-offset-#{$i}-tablet {\n margin-left: percentage($i / 12); } } }\n @include touch {\n &.is-narrow-touch {\n flex: none; }\n &.is-full-touch {\n flex: none;\n width: 100%; }\n &.is-three-quarters-touch {\n flex: none;\n width: 75%; }\n &.is-two-thirds-touch {\n flex: none;\n width: 66.6666%; }\n &.is-half-touch {\n flex: none;\n width: 50%; }\n &.is-one-third-touch {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter-touch {\n flex: none;\n width: 25%; }\n &.is-one-fifth-touch {\n flex: none;\n width: 20%; }\n &.is-two-fifths-touch {\n flex: none;\n width: 40%; }\n &.is-three-fifths-touch {\n flex: none;\n width: 60%; }\n &.is-four-fifths-touch {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters-touch {\n margin-left: 75%; }\n &.is-offset-two-thirds-touch {\n margin-left: 66.6666%; }\n &.is-offset-half-touch {\n margin-left: 50%; }\n &.is-offset-one-third-touch {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter-touch {\n margin-left: 25%; }\n &.is-offset-one-fifth-touch {\n margin-left: 20%; }\n &.is-offset-two-fifths-touch {\n margin-left: 40%; }\n &.is-offset-three-fifths-touch {\n margin-left: 60%; }\n &.is-offset-four-fifths-touch {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i}-touch {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i}-touch {\n margin-left: percentage($i / 12); } } }\n @include desktop {\n &.is-narrow-desktop {\n flex: none; }\n &.is-full-desktop {\n flex: none;\n width: 100%; }\n &.is-three-quarters-desktop {\n flex: none;\n width: 75%; }\n &.is-two-thirds-desktop {\n flex: none;\n width: 66.6666%; }\n &.is-half-desktop {\n flex: none;\n width: 50%; }\n &.is-one-third-desktop {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter-desktop {\n flex: none;\n width: 25%; }\n &.is-one-fifth-desktop {\n flex: none;\n width: 20%; }\n &.is-two-fifths-desktop {\n flex: none;\n width: 40%; }\n &.is-three-fifths-desktop {\n flex: none;\n width: 60%; }\n &.is-four-fifths-desktop {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters-desktop {\n margin-left: 75%; }\n &.is-offset-two-thirds-desktop {\n margin-left: 66.6666%; }\n &.is-offset-half-desktop {\n margin-left: 50%; }\n &.is-offset-one-third-desktop {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter-desktop {\n margin-left: 25%; }\n &.is-offset-one-fifth-desktop {\n margin-left: 20%; }\n &.is-offset-two-fifths-desktop {\n margin-left: 40%; }\n &.is-offset-three-fifths-desktop {\n margin-left: 60%; }\n &.is-offset-four-fifths-desktop {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i}-desktop {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i}-desktop {\n margin-left: percentage($i / 12); } } }\n @include widescreen {\n &.is-narrow-widescreen {\n flex: none; }\n &.is-full-widescreen {\n flex: none;\n width: 100%; }\n &.is-three-quarters-widescreen {\n flex: none;\n width: 75%; }\n &.is-two-thirds-widescreen {\n flex: none;\n width: 66.6666%; }\n &.is-half-widescreen {\n flex: none;\n width: 50%; }\n &.is-one-third-widescreen {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter-widescreen {\n flex: none;\n width: 25%; }\n &.is-one-fifth-widescreen {\n flex: none;\n width: 20%; }\n &.is-two-fifths-widescreen {\n flex: none;\n width: 40%; }\n &.is-three-fifths-widescreen {\n flex: none;\n width: 60%; }\n &.is-four-fifths-widescreen {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters-widescreen {\n margin-left: 75%; }\n &.is-offset-two-thirds-widescreen {\n margin-left: 66.6666%; }\n &.is-offset-half-widescreen {\n margin-left: 50%; }\n &.is-offset-one-third-widescreen {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter-widescreen {\n margin-left: 25%; }\n &.is-offset-one-fifth-widescreen {\n margin-left: 20%; }\n &.is-offset-two-fifths-widescreen {\n margin-left: 40%; }\n &.is-offset-three-fifths-widescreen {\n margin-left: 60%; }\n &.is-offset-four-fifths-widescreen {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i}-widescreen {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i}-widescreen {\n margin-left: percentage($i / 12); } } }\n @include fullhd {\n &.is-narrow-fullhd {\n flex: none; }\n &.is-full-fullhd {\n flex: none;\n width: 100%; }\n &.is-three-quarters-fullhd {\n flex: none;\n width: 75%; }\n &.is-two-thirds-fullhd {\n flex: none;\n width: 66.6666%; }\n &.is-half-fullhd {\n flex: none;\n width: 50%; }\n &.is-one-third-fullhd {\n flex: none;\n width: 33.3333%; }\n &.is-one-quarter-fullhd {\n flex: none;\n width: 25%; }\n &.is-one-fifth-fullhd {\n flex: none;\n width: 20%; }\n &.is-two-fifths-fullhd {\n flex: none;\n width: 40%; }\n &.is-three-fifths-fullhd {\n flex: none;\n width: 60%; }\n &.is-four-fifths-fullhd {\n flex: none;\n width: 80%; }\n &.is-offset-three-quarters-fullhd {\n margin-left: 75%; }\n &.is-offset-two-thirds-fullhd {\n margin-left: 66.6666%; }\n &.is-offset-half-fullhd {\n margin-left: 50%; }\n &.is-offset-one-third-fullhd {\n margin-left: 33.3333%; }\n &.is-offset-one-quarter-fullhd {\n margin-left: 25%; }\n &.is-offset-one-fifth-fullhd {\n margin-left: 20%; }\n &.is-offset-two-fifths-fullhd {\n margin-left: 40%; }\n &.is-offset-three-fifths-fullhd {\n margin-left: 60%; }\n &.is-offset-four-fifths-fullhd {\n margin-left: 80%; }\n @for $i from 0 through 12 {\n &.is-#{$i}-fullhd {\n flex: none;\n width: percentage($i / 12); }\n &.is-offset-#{$i}-fullhd {\n margin-left: percentage($i / 12); } } } }\n\n.columns {\n margin-left: (-$column-gap);\n margin-right: (-$column-gap);\n margin-top: (-$column-gap);\n &:last-child {\n margin-bottom: (-$column-gap); }\n &:not(:last-child) {\n margin-bottom: calc(1.5rem - #{$column-gap}); }\n // Modifiers\n &.is-centered {\n justify-content: center; }\n &.is-gapless {\n margin-left: 0;\n margin-right: 0;\n margin-top: 0;\n & > .column {\n margin: 0;\n padding: 0 !important; }\n &:not(:last-child) {\n margin-bottom: 1.5rem; }\n &:last-child {\n margin-bottom: 0; } }\n &.is-mobile {\n display: flex; }\n &.is-multiline {\n flex-wrap: wrap; }\n &.is-vcentered {\n align-items: center; }\n // Responsiveness\n @include tablet {\n &:not(.is-desktop) {\n display: flex; } }\n @include desktop {\n // Modifiers\n &.is-desktop {\n display: flex; } } }\n\n@if $variable-columns {\n .columns.is-variable {\n --columnGap: 0.75rem;\n margin-left: calc(-1 * var(--columnGap));\n margin-right: calc(-1 * var(--columnGap));\n .column {\n padding-left: var(--columnGap);\n padding-right: var(--columnGap); }\n @for $i from 0 through 8 {\n &.is-#{$i} {\n --columnGap: #{$i * 0.25rem}; }\n @include mobile {\n &.is-#{$i}-mobile {\n --columnGap: #{$i * 0.25rem}; } }\n @include tablet {\n &.is-#{$i}-tablet {\n --columnGap: #{$i * 0.25rem}; } }\n @include tablet-only {\n &.is-#{$i}-tablet-only {\n --columnGap: #{$i * 0.25rem}; } }\n @include touch {\n &.is-#{$i}-touch {\n --columnGap: #{$i * 0.25rem}; } }\n @include desktop {\n &.is-#{$i}-desktop {\n --columnGap: #{$i * 0.25rem}; } }\n @include desktop-only {\n &.is-#{$i}-desktop-only {\n --columnGap: #{$i * 0.25rem}; } }\n @include widescreen {\n &.is-#{$i}-widescreen {\n --columnGap: #{$i * 0.25rem}; } }\n @include widescreen-only {\n &.is-#{$i}-widescreen-only {\n --columnGap: #{$i * 0.25rem}; } }\n @include fullhd {\n &.is-#{$i}-fullhd {\n --columnGap: #{$i * 0.25rem}; } } } } }\n","$tile-spacing: 0.75rem !default;\n\n.tile {\n align-items: stretch;\n display: block;\n flex-basis: 0;\n flex-grow: 1;\n flex-shrink: 1;\n min-height: min-content;\n // Modifiers\n &.is-ancestor {\n margin-left: $tile-spacing * -1;\n margin-right: $tile-spacing * -1;\n margin-top: $tile-spacing * -1;\n &:last-child {\n margin-bottom: $tile-spacing * -1; }\n &:not(:last-child) {\n margin-bottom: $tile-spacing; } }\n &.is-child {\n margin: 0 !important; }\n &.is-parent {\n padding: $tile-spacing; }\n &.is-vertical {\n flex-direction: column;\n & > .tile.is-child:not(:last-child) {\n margin-bottom: 1.5rem !important; } }\n // Responsiveness\n @include tablet {\n &:not(.is-child) {\n display: flex; }\n @for $i from 1 through 12 {\n &.is-#{$i} {\n flex: none;\n width: ($i / 12) * 100%; } } } }\n","@each $name, $pair in $colors {\n $color: nth($pair, 1);\n .has-text-#{$name} {\n color: $color !important; }\n a.has-text-#{$name} {\n &:hover,\n &:focus {\n color: bulmaDarken($color, 10%) !important; } }\n .has-background-#{$name} {\n background-color: $color !important; }\n @if length($pair) >= 4 {\n $color-light: nth($pair, 3);\n $color-dark: nth($pair, 4);\n // Light\n .has-text-#{$name}-light {\n color: $color-light !important; }\n a.has-text-#{$name}-light {\n &:hover,\n &:focus {\n color: bulmaDarken($color-light, 10%) !important; } }\n .has-background-#{$name}-light {\n background-color: $color-light !important; }\n // Dark\n .has-text-#{$name}-dark {\n color: $color-dark !important; }\n a.has-text-#{$name}-dark {\n &:hover,\n &:focus {\n color: bulmaLighten($color-dark, 10%) !important; } }\n .has-background-#{$name}-dark {\n background-color: $color-dark !important; } } }\n\n@each $name, $shade in $shades {\n .has-text-#{$name} {\n color: $shade !important; }\n .has-background-#{$name} {\n background-color: $shade !important; } }\n",".is-clearfix {\n @include clearfix; }\n\n.is-pulled-left {\n float: left !important; }\n\n.is-pulled-right {\n float: right !important; }\n",".is-radiusless {\n border-radius: 0 !important; }\n\n.is-shadowless {\n box-shadow: none !important; }\n\n.is-unselectable {\n @extend %unselectable; }\n",".is-clipped {\n overflow: hidden !important; }\n",".is-overlay {\n @extend %overlay; }\n\n.is-relative {\n position: relative !important; }\n",".is-marginless {\n margin: 0 !important; }\n\n.is-paddingless {\n padding: 0 !important; }\n\n$spacing-shortcuts: (\"margin\": \"m\", \"padding\": \"p\") !default;\n$spacing-directions: (\"top\": \"t\", \"right\": \"r\", \"bottom\": \"b\", \"left\": \"l\") !default;\n$spacing-horizontal: \"x\" !default;\n$spacing-vertical: \"y\" !default;\n$spacing-values: (\"0\": 0, \"1\": 0.25rem, \"2\": 0.5rem, \"3\": 0.75rem, \"4\": 1rem, \"5\": 1.5rem, \"6\": 3rem) !default;\n\n@each $property, $shortcut in $spacing-shortcuts {\n @each $name, $value in $spacing-values {\n // Cardinal directions\n @each $direction, $suffix in $spacing-directions {\n .#{$shortcut}#{$suffix}-#{$name} {\n #{$property}-#{$direction}: $value !important; } }\n // Horizontal axis\n @if $spacing-horizontal != null {\n .#{$shortcut}#{$spacing-horizontal}-#{$name} {\n #{$property}-left: $value !important;\n #{$property}-right: $value !important; } }\n // Vertical axis\n @if $spacing-vertical != null {\n .#{$shortcut}#{$spacing-vertical}-#{$name} {\n #{$property}-top: $value !important;\n #{$property}-bottom: $value !important; } } } }\n","@mixin typography-size($target:'') {\n @each $size in $sizes {\n $i: index($sizes, $size);\n .is-size-#{$i}#{if($target == '', '', '-' + $target)} {\n font-size: $size !important; } } }\n\n@include typography-size();\n\n@include mobile {\n @include typography-size('mobile'); }\n\n@include tablet {\n @include typography-size('tablet'); }\n\n@include touch {\n @include typography-size('touch'); }\n\n@include desktop {\n @include typography-size('desktop'); }\n\n@include widescreen {\n @include typography-size('widescreen'); }\n\n@include fullhd {\n @include typography-size('fullhd'); }\n\n$alignments: ('centered': 'center', 'justified': 'justify', 'left': 'left', 'right': 'right');\n\n@each $alignment, $text-align in $alignments {\n .has-text-#{$alignment} {\n text-align: #{$text-align} !important; } }\n\n@each $alignment, $text-align in $alignments {\n @include mobile {\n .has-text-#{$alignment}-mobile {\n text-align: #{$text-align} !important; } }\n @include tablet {\n .has-text-#{$alignment}-tablet {\n text-align: #{$text-align} !important; } }\n @include tablet-only {\n .has-text-#{$alignment}-tablet-only {\n text-align: #{$text-align} !important; } }\n @include touch {\n .has-text-#{$alignment}-touch {\n text-align: #{$text-align} !important; } }\n @include desktop {\n .has-text-#{$alignment}-desktop {\n text-align: #{$text-align} !important; } }\n @include desktop-only {\n .has-text-#{$alignment}-desktop-only {\n text-align: #{$text-align} !important; } }\n @include widescreen {\n .has-text-#{$alignment}-widescreen {\n text-align: #{$text-align} !important; } }\n @include widescreen-only {\n .has-text-#{$alignment}-widescreen-only {\n text-align: #{$text-align} !important; } }\n @include fullhd {\n .has-text-#{$alignment}-fullhd {\n text-align: #{$text-align} !important; } } }\n\n.is-capitalized {\n text-transform: capitalize !important; }\n\n.is-lowercase {\n text-transform: lowercase !important; }\n\n.is-uppercase {\n text-transform: uppercase !important; }\n\n.is-italic {\n font-style: italic !important; }\n\n.has-text-weight-light {\n font-weight: $weight-light !important; }\n.has-text-weight-normal {\n font-weight: $weight-normal !important; }\n.has-text-weight-medium {\n font-weight: $weight-medium !important; }\n.has-text-weight-semibold {\n font-weight: $weight-semibold !important; }\n.has-text-weight-bold {\n font-weight: $weight-bold !important; }\n\n.is-family-primary {\n font-family: $family-primary !important; }\n\n.is-family-secondary {\n font-family: $family-secondary !important; }\n\n.is-family-sans-serif {\n font-family: $family-sans-serif !important; }\n\n.is-family-monospace {\n font-family: $family-monospace !important; }\n\n.is-family-code {\n font-family: $family-code !important; }\n","\n\n$displays: 'block' 'flex' 'inline' 'inline-block' 'inline-flex';\n\n@each $display in $displays {\n .is-#{$display} {\n display: #{$display} !important; }\n @include mobile {\n .is-#{$display}-mobile {\n display: #{$display} !important; } }\n @include tablet {\n .is-#{$display}-tablet {\n display: #{$display} !important; } }\n @include tablet-only {\n .is-#{$display}-tablet-only {\n display: #{$display} !important; } }\n @include touch {\n .is-#{$display}-touch {\n display: #{$display} !important; } }\n @include desktop {\n .is-#{$display}-desktop {\n display: #{$display} !important; } }\n @include desktop-only {\n .is-#{$display}-desktop-only {\n display: #{$display} !important; } }\n @include widescreen {\n .is-#{$display}-widescreen {\n display: #{$display} !important; } }\n @include widescreen-only {\n .is-#{$display}-widescreen-only {\n display: #{$display} !important; } }\n @include fullhd {\n .is-#{$display}-fullhd {\n display: #{$display} !important; } } }\n\n.is-hidden {\n display: none !important; }\n\n.is-sr-only {\n border: none !important;\n clip: rect(0, 0, 0, 0) !important;\n height: 0.01em !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n white-space: nowrap !important;\n width: 0.01em !important; }\n\n@include mobile {\n .is-hidden-mobile {\n display: none !important; } }\n\n@include tablet {\n .is-hidden-tablet {\n display: none !important; } }\n\n@include tablet-only {\n .is-hidden-tablet-only {\n display: none !important; } }\n\n@include touch {\n .is-hidden-touch {\n display: none !important; } }\n\n@include desktop {\n .is-hidden-desktop {\n display: none !important; } }\n\n@include desktop-only {\n .is-hidden-desktop-only {\n display: none !important; } }\n\n@include widescreen {\n .is-hidden-widescreen {\n display: none !important; } }\n\n@include widescreen-only {\n .is-hidden-widescreen-only {\n display: none !important; } }\n\n@include fullhd {\n .is-hidden-fullhd {\n display: none !important; } }\n\n.is-invisible {\n visibility: hidden !important; }\n\n@include mobile {\n .is-invisible-mobile {\n visibility: hidden !important; } }\n\n@include tablet {\n .is-invisible-tablet {\n visibility: hidden !important; } }\n\n@include tablet-only {\n .is-invisible-tablet-only {\n visibility: hidden !important; } }\n\n@include touch {\n .is-invisible-touch {\n visibility: hidden !important; } }\n\n@include desktop {\n .is-invisible-desktop {\n visibility: hidden !important; } }\n\n@include desktop-only {\n .is-invisible-desktop-only {\n visibility: hidden !important; } }\n\n@include widescreen {\n .is-invisible-widescreen {\n visibility: hidden !important; } }\n\n@include widescreen-only {\n .is-invisible-widescreen-only {\n visibility: hidden !important; } }\n\n@include fullhd {\n .is-invisible-fullhd {\n visibility: hidden !important; } }\n","$hero-body-padding: 3rem 1.5rem !default;\n$hero-body-padding-small: 1.5rem !default;\n$hero-body-padding-medium: 9rem 1.5rem !default;\n$hero-body-padding-large: 18rem 1.5rem !default;\n\n// Main container\n.hero {\n align-items: stretch;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n .navbar {\n background: none; }\n .tabs {\n ul {\n border-bottom: none; } }\n // Colors\n @each $name, $pair in $colors {\n $color: nth($pair, 1);\n $color-invert: nth($pair, 2);\n &.is-#{$name} {\n background-color: $color;\n color: $color-invert;\n a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\n strong {\n color: inherit; }\n .title {\n color: $color-invert; }\n .subtitle {\n color: bulmaRgba($color-invert, 0.9);\n a:not(.button),\n strong {\n color: $color-invert; } }\n .navbar-menu {\n @include touch {\n background-color: $color; } }\n .navbar-item,\n .navbar-link {\n color: bulmaRgba($color-invert, 0.7); }\n a.navbar-item,\n .navbar-link {\n &:hover,\n &.is-active {\n background-color: bulmaDarken($color, 5%);\n color: $color-invert; } }\n .tabs {\n a {\n color: $color-invert;\n opacity: 0.9;\n &:hover {\n opacity: 1; } }\n li {\n &.is-active a {\n opacity: 1; } }\n &.is-boxed,\n &.is-toggle {\n a {\n color: $color-invert;\n &:hover {\n background-color: bulmaRgba($scheme-invert, 0.1); } }\n li.is-active a {\n &,\n &:hover {\n background-color: $color-invert;\n border-color: $color-invert;\n color: $color; } } } }\n // Modifiers\n @if type-of($color) == 'color' {\n &.is-bold {\n $gradient-top-left: darken(saturate(adjust-hue($color, -10deg), 10%), 10%);\n $gradient-bottom-right: lighten(saturate(adjust-hue($color, 10deg), 5%), 5%);\n background-image: linear-gradient(141deg, $gradient-top-left 0%, $color 71%, $gradient-bottom-right 100%);\n @include mobile {\n .navbar-menu {\n background-image: linear-gradient(141deg, $gradient-top-left 0%, $color 71%, $gradient-bottom-right 100%); } } } } } }\n // Sizes\n &.is-small {\n .hero-body {\n padding: $hero-body-padding-small; } }\n &.is-medium {\n @include tablet {\n .hero-body {\n padding: $hero-body-padding-medium; } } }\n &.is-large {\n @include tablet {\n .hero-body {\n padding: $hero-body-padding-large; } } }\n &.is-halfheight,\n &.is-fullheight,\n &.is-fullheight-with-navbar {\n .hero-body {\n align-items: center;\n display: flex;\n & > .container {\n flex-grow: 1;\n flex-shrink: 1; } } }\n &.is-halfheight {\n min-height: 50vh; }\n &.is-fullheight {\n min-height: 100vh; } }\n\n// Components\n\n.hero-video {\n @extend %overlay;\n overflow: hidden;\n video {\n left: 50%;\n min-height: 100%;\n min-width: 100%;\n position: absolute;\n top: 50%;\n transform: translate3d(-50%, -50%, 0); }\n // Modifiers\n &.is-transparent {\n opacity: 0.3; }\n // Responsiveness\n @include mobile {\n display: none; } }\n\n.hero-buttons {\n margin-top: 1.5rem;\n // Responsiveness\n @include mobile {\n .button {\n display: flex;\n &:not(:last-child) {\n margin-bottom: 0.75rem; } } }\n @include tablet {\n display: flex;\n justify-content: center;\n .button:not(:last-child) {\n @include ltr-property(\"margin\", 1.5rem); } } }\n\n// Containers\n\n.hero-head,\n.hero-foot {\n flex-grow: 0;\n flex-shrink: 0; }\n\n.hero-body {\n flex-grow: 1;\n flex-shrink: 0;\n padding: $hero-body-padding; }\n","$section-padding: 3rem 1.5rem !default;\n$section-padding-medium: 9rem 1.5rem !default;\n$section-padding-large: 18rem 1.5rem !default;\n\n.section {\n padding: $section-padding;\n // Responsiveness\n @include desktop {\n // Sizes\n &.is-medium {\n padding: $section-padding-medium; }\n &.is-large {\n padding: $section-padding-large; } } }\n","@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Bulma: Utilities **/\n\n@import \"../../node_modules/bulma/sass/utilities/animations.sass\";\n@import \"../../node_modules/bulma/sass/utilities/mixins.sass\";\n@import \"../../node_modules/bulma/sass/utilities/controls.sass\";\n\n/** Bulma: Base **/\n\n@import \"../../node_modules/bulma/sass/base/_all.sass\";\n\n/** Bulma: Elements **/\n\n@import \"../../node_modules/bulma/sass/elements/button.sass\";\n@import \"../../node_modules/bulma/sass/elements/container.sass\";\n@import \"../../node_modules/bulma/sass/elements/content.sass\";\n@import \"../../node_modules/bulma/sass/elements/icon.sass\";\n@import \"../../node_modules/bulma/sass/elements/notification.sass\";\n@import \"../../node_modules/bulma/sass/elements/progress.sass\";\n@import \"../../node_modules/bulma/sass/elements/table.sass\";\n@import \"../../node_modules/bulma/sass/elements/title.sass\";\n@import \"../../node_modules/bulma/sass/elements/other.sass\";\n\n/** Bulma: Form **/\n\n@import \"../../node_modules/bulma/sass/form/_all.sass\";\n\n/** Bulma: Componenets **/\n\n@import \"../../node_modules/bulma/sass/components/level.sass\";\n@import \"../../node_modules/bulma/sass/components/menu.sass\";\n@import \"../../node_modules/bulma/sass/components/message.sass\";\n@import \"../../node_modules/bulma/sass/components/pagination.sass\";\n@import \"../../node_modules/bulma/sass/components/tabs.sass\";\n\n/** Bulma: Grid **/\n\n@import \"../../node_modules/bulma/sass/grid/_all.sass\";\n\n/** Bulma: Helpers **/\n\n@import \"../../node_modules/bulma/sass/helpers/_all.sass\";\n\n/** Bulma: Layout **/\n\n@import \"../../node_modules/bulma/sass/layout/hero.sass\";\n@import \"../../node_modules/bulma/sass/layout/section.sass\";\n\n/** Animations **/\n\n@-webkit-keyframes fadeInOpacity {\n 0% {\n opacity: 0\n }\n\n 100% {\n opacity: 1\n }\n}\n\n@keyframes fadeInOpacity {\n 0% {\n opacity: 0\n }\n\n 100% {\n opacity: 1\n }\n}\n\n@-webkit-keyframes floatUp {\n 0% {\n opacity: 0;\n transform: scale(0.86)\n }\n\n 25% {\n opacity: 100\n }\n\n 67% {\n transform: scale(1)\n }\n\n 100% {\n transform: scale(1)\n }\n}\n\n@keyframes floatUp {\n 0% {\n opacity: 0;\n transform: scale(0.86)\n }\n\n 25% {\n opacity: 100\n }\n\n 67% {\n transform: scale(1)\n }\n\n 100% {\n transform: scale(1)\n }\n}\n\n/** General **/\n\nhtml {\n overflow-y: auto\n}\n\nbody {\n animation: fadeInOpacity 0.5s\n}\n\ncode,\n.message-body code {\n background-color: $black;\n border-radius: 5px;\n font-size: 1rem\n}\n\n.input::-moz-placeholder,\n.textarea::-moz-placeholder {\n color: $grey-lightest\n}\n\n.input::-webkit-input-placeholder,\n.textarea::-webkit-input-placeholder {\n color: $grey-lightest\n}\n\n.input:-moz-placeholder,\n.textarea:-moz-placeholder {\n color: $grey-lightest\n}\n\n.input:-ms-input-placeholder,\n.textarea:-ms-input-placeholder {\n color: $grey-lightest\n}\n\n.label {\n color: $white-ter;\n font-weight: normal\n}\n\n.help {\n color: $grey-lightest\n}\n\n.progress {\n background-color: $grey\n}\n\n.button.is-info.is-hovered [class^=\"icon-\"]::before,\n.button.is-info.is-hovered [class*=\" icon-\"]::before,\n.button.is-info:hover [class^=\"icon-\"]::before,\n.button.is-info:hover [class*=\" icon-\"]::before {\n fill: #fff\n}\n\n.button {\n &.is-wrappable {\n white-space: break-spaces;\n min-height: 2.25em;\n height: auto\n }\n\n /* TODO: Use variables for colors */\n &.is-dangerish {\n background-color: #ff7043;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7);\n\n &.is-hovered,\n &:not([disabled]):hover {\n background-color: #ff8a65;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7)\n }\n\n &.is-active,\n &:not([disabled]):active {\n background-color: #ff5722;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7)\n }\n\n &.is-outlined {\n background-color: transparent;\n border-color: #ff7043;\n color: #ff7043;\n\n &.is-focused,\n &.is-hovered,\n &:not([disabled]):focus,\n &:not([disabled]):hover {\n background-color: #ff7043;\n border-color: #ff7043;\n color: rgba(0, 0, 0, 0.7)\n }\n }\n }\n}\n\n.checkbox:hover,\n.radio:hover {\n color: $grey-light\n}\n\n.select:not(.is-multiple):not(.is-loading)::after {\n border-color: $white-ter\n}\n\n.select:not(.is-multiple):not(.is-loading):hover::after {\n border-color: $white-ter\n}\n\n.select select[disabled]:hover,\nfieldset[disabled] .select select:hover {\n border-color: $grey\n}\n\n.message {\n background-color: #2f2f2f\n}\n\n.message-body {\n color: $white-ter;\n border: 0\n}\n\n.table {\n color: $grey-lightest;\n background-color: $black;\n\n &.is-narrow {\n font-size: 0.75rem\n }\n\n &.is-hoverable tbody tr:not(.is-selected):hover {\n background-color: #2f2f2f\n }\n\n td,\n th {\n white-space: nowrap;\n vertical-align: middle;\n border-bottom: 1px solid $grey\n }\n\n th {\n color: $white-ter;\n height: 2.25em;\n font-weight: normal;\n\n &.capitalize {\n text-transform: capitalize\n }\n }\n\n thead {\n td,\n th {\n color: $white-ter;\n background-color: #383838;\n border-bottom: 0;\n height: 31px\n }\n }\n\n tbody tr:last-child {\n td,\n th {\n border-bottom-width: 1px\n }\n }\n\n .cell-indent {\n padding-left: 2.25em\n }\n}\n\n.delete {\n &::before,\n &::after {\n background-color: $text\n }\n}\n\n/** Cookie Consent **/\n\n.cc-window {\n font-family: inherit !important\n}\n\n.cc-link {\n padding: 0 !important\n}\n\n/* floating button's bottom offset + height + bottom offset */\n.section.has-extra-bottom-padding {\n padding-bottom: 6.5rem\n}\n\n/** Floating home button **/\n\na.floating-home-button {\n display: flex;\n position: fixed;\n right: 1.5rem;\n bottom: 1.5rem;\n border-radius: 100%;\n background-color: $link;\n color: $white;\n width: 3.5rem;\n height: 3.5rem;\n justify-content: center;\n align-items: center;\n transition: background-color 0.25s, color 0.25s;\n\n &:hover {\n background-color: $link-hover;\n color: $scheme-main\n }\n\n > .icon {\n margin-top: -2px\n }\n}\n\n.hero.is-fullheight {\n /* https://github.com/philipwalton/flexbugs#flexbug-3 */\n > .hero-body {\n min-height: 100vh;\n height: 100%;\n\n /* https://github.com/philipwalton/flexbugs#flexbug-2 */\n > .container {\n width: 100%\n }\n }\n}\n"]} \ No newline at end of file diff --git a/dist/css/sweetalert.css b/dist/css/sweetalert.css deleted file mode 100644 index 6f5074b..0000000 --- a/dist/css/sweetalert.css +++ /dev/null @@ -1,2 +0,0 @@ -@-webkit-keyframes pulseWarning{0%{border-color:#ffdd57}to{border-color:#947600}}@keyframes pulseWarning{0%{border-color:#ffdd57}to{border-color:#947600}}@-webkit-keyframes pulseWarningBody{0%{background-color:#ffdd57}to{background-color:#947600}}@keyframes pulseWarningBody{0%{background-color:#ffdd57}to{background-color:#947600}}.swal-modal{background-color:#363636}.swal-modal.is-expanded{width:auto;max-width:90%}.swal-modal .field{text-align:left;text-align:initial}.swal-text,.swal-title{color:#f5f5f5}.swal-text{text-align:center}.swal-content .checkbox,.swal-content .label,.swal-content .radio{color:#f5f5f5}.swal-content .checkbox:hover,.swal-content .radio:hover{color:#ededed}.swal-button--confirm:not(.swal-button--danger){background-color:#4387f4}.swal-button--confirm:not(.swal-button--danger):hover{background-color:#0c53c6}.swal-button--confirm:not(.swal-button--danger):focus{box-shadow:0 0 0 1px #121212,0 0 0 3px #0c53c6}.swal-button--danger{background-color:#ff3860}.swal-button--danger:hover{background-color:#db002c}.swal-button--danger:focus{box-shadow:0 0 0 1px #121212,0 0 0 3px #db002c}.swal-button--cancel{background-color:#00d1b2;color:#fff}.swal-button--cancel:hover{background-color:#00947e}.swal-button--cancel:focus{box-shadow:0 0 0 1px #121212,0 0 0 3px #00947e}.swal-button--loading{color:transparent}.swal-icon--info{border-color:#4387f4}.swal-icon--info:after,.swal-icon--info:before{background-color:#4387f4}.swal-icon--error{border-color:#ff3860}.swal-icon--error__line{background-color:#ff3860}.swal-icon--warning{border-color:#ffdd57;-webkit-animation:pulseWarning .5s infinite alternate;animation:pulseWarning .5s infinite alternate}.swal-icon--warning__body,.swal-icon--warning__dot{background-color:#ffdd57;-webkit-animation:pulseWarningBody .5s infinite alternate;animation:pulseWarningBody .5s infinite alternate}.swal-icon--success{border-color:#55b978}.swal-icon--success:after,.swal-icon--success:before{background-color:#363636}.swal-icon--success__line{background-color:#55b978}.swal-icon--success__hide-corners{background-color:#363636}.swal-display-thumb-container{min-width:200px;min-height:200px;display:flex;align-items:center;justify-content:center} -/*# sourceMappingURL=sweetalert.css.map */ diff --git a/dist/css/sweetalert.css.map b/dist/css/sweetalert.css.map deleted file mode 100644 index 16ed923..0000000 --- a/dist/css/sweetalert.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/sweetalert.scss","../node_modules/bulma/sass/utilities/initial-variables.sass","../node_modules/bulma/sass/utilities/functions.sass","css/_variables.scss"],"names":[],"mappings":"AAMA,gCACE,GACE,oBCU8B,CDPhC,GACE,oBEsFiE,CAAA,CFlFrE,wBACE,GACE,oBCA8B,CDGhC,GACE,oBE4EiE,CAAA,CFxErE,oCACE,GACE,wBCV8B,CDahC,GACE,wBEkEiE,CAAA,CF9DrE,4BACE,GACE,wBCpB8B,CDuBhC,GACE,wBEwDiE,CAAA,CFhDrE,YACE,wBC7C4B,CD4C9B,wBAII,UAAW,CACX,aACF,CANF,mBASI,eACF,CADE,kBACF,CAGF,uBAEE,aCpD4B,CDuD9B,WACE,iBACF,CAEA,kEAOI,aClE0B,CD2D9B,yDAUM,aCvEyB,CD4E/B,gDACE,wBGjFuB,CHgFzB,sDAII,wBEOiE,CFXrE,sDAQI,8CEGiE,CFCrE,qBACE,wBG3FuB,CH0FzB,2BAII,wBELiE,CFCrE,2BAQI,8CETiE,CFarE,qBACE,wBC5FgC,CD6FhC,UClG6B,CDgG/B,2BAKI,wBElBiE,CFarE,2BASI,8CEtBiE,CF0BrE,sBACE,iBACF,CAEA,iBACE,oBG1HuB,CHyHzB,+CAKI,wBG9HqB,CHkIzB,kBACE,oBGjIuB,CHoIzB,wBACE,wBGrIuB,CHwIzB,oBACE,oBChIgC,CDiIhC,qDACF,CADE,6CACF,CAEA,mDAEE,wBCtIgC,CDuIhC,yDACF,CADE,iDACF,CAEA,oBACE,oBGvJwB,CHsJ1B,qDAKI,wBC3J0B,CD+J9B,0BACE,wBGhKwB,CHmK1B,kCACE,wBCpK4B,CDuK9B,8BACE,eAAgB,CAChB,gBAAiB,CACjB,YAAa,CACb,kBAAmB,CACnB,sBACF","file":"sweetalert.css","sourcesContent":["@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Animations **/\n\n@-webkit-keyframes pulseWarning {\n 0% {\n border-color: $warning\n }\n\n to {\n border-color: $warning-dark\n }\n}\n\n@keyframes pulseWarning {\n 0% {\n border-color: $warning\n }\n\n to {\n border-color: $warning-dark\n }\n}\n\n@-webkit-keyframes pulseWarningBody {\n 0% {\n background-color: $warning\n }\n\n to {\n background-color: $warning-dark\n }\n}\n\n@keyframes pulseWarningBody {\n 0% {\n background-color: $warning\n }\n\n to {\n background-color: $warning-dark\n }\n}\n\n/** Main **/\n\n$swal-modal-background: $grey-darker;\n\n.swal-modal {\n background-color: $swal-modal-background;\n\n &.is-expanded {\n width: auto;\n max-width: 90%\n }\n\n .field {\n text-align: initial\n }\n}\n\n.swal-title,\n.swal-text {\n color: $white-ter\n}\n\n.swal-text {\n text-align: center\n}\n\n.swal-content {\n .label {\n color: $white-ter\n }\n\n .checkbox,\n .radio {\n color: $white-ter;\n\n &:hover {\n color: $grey-lightest\n }\n }\n}\n\n.swal-button--confirm:not(.swal-button--danger) {\n background-color: $info;\n\n &:hover {\n background-color: $info-dark\n }\n\n &:focus {\n box-shadow: 0 0 0 1px $black-bis, 0 0 0 3px $info-dark\n }\n}\n\n.swal-button--danger {\n background-color: $danger;\n\n &:hover {\n background-color: $danger-dark\n }\n\n &:focus {\n box-shadow: 0 0 0 1px $black-bis, 0 0 0 3px $danger-dark\n }\n}\n\n.swal-button--cancel {\n background-color: $primary;\n color: $white;\n\n &:hover {\n background-color: $primary-dark\n }\n\n &:focus {\n box-shadow: 0 0 0 1px $black-bis, 0 0 0 3px $primary-dark\n }\n}\n\n.swal-button--loading {\n color: transparent\n}\n\n.swal-icon--info {\n border-color: $info;\n\n &::after,\n &::before {\n background-color: $info\n }\n}\n\n.swal-icon--error {\n border-color: $danger\n}\n\n.swal-icon--error__line {\n background-color: $danger\n}\n\n.swal-icon--warning {\n border-color: $warning;\n animation: pulseWarning 0.5s infinite alternate\n}\n\n.swal-icon--warning__body,\n.swal-icon--warning__dot {\n background-color: $warning;\n animation: pulseWarningBody 0.5s infinite alternate\n}\n\n.swal-icon--success {\n border-color: $success;\n\n &::after,\n &::before {\n background-color: $swal-modal-background\n }\n}\n\n.swal-icon--success__line {\n background-color: $success\n}\n\n.swal-icon--success__hide-corners {\n background-color: $swal-modal-background\n}\n\n.swal-display-thumb-container {\n min-width: 200px;\n min-height: 200px;\n display: flex;\n align-items: center;\n justify-content: center\n}\n","// Colors\n\n$black: hsl(0, 0%, 4%) !default;\n$black-bis: hsl(0, 0%, 7%) !default;\n$black-ter: hsl(0, 0%, 14%) !default;\n\n$grey-darker: hsl(0, 0%, 21%) !default;\n$grey-dark: hsl(0, 0%, 29%) !default;\n$grey: hsl(0, 0%, 48%) !default;\n$grey-light: hsl(0, 0%, 71%) !default;\n$grey-lighter: hsl(0, 0%, 86%) !default;\n$grey-lightest: hsl(0, 0%, 93%) !default;\n\n$white-ter: hsl(0, 0%, 96%) !default;\n$white-bis: hsl(0, 0%, 98%) !default;\n$white: hsl(0, 0%, 100%) !default;\n\n$orange: hsl(14, 100%, 53%) !default;\n$yellow: hsl(48, 100%, 67%) !default;\n$green: hsl(141, 53%, 53%) !default;\n$turquoise: hsl(171, 100%, 41%) !default;\n$cyan: hsl(204, 71%, 53%) !default;\n$blue: hsl(217, 71%, 53%) !default;\n$purple: hsl(271, 100%, 71%) !default;\n$red: hsl(348, 86%, 61%) !default;\n\n// Typography\n\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif !default;\n$family-monospace: monospace !default;\n$render-mode: optimizeLegibility !default;\n\n$size-1: 3rem !default;\n$size-2: 2.5rem !default;\n$size-3: 2rem !default;\n$size-4: 1.5rem !default;\n$size-5: 1.25rem !default;\n$size-6: 1rem !default;\n$size-7: 0.75rem !default;\n\n$weight-light: 300 !default;\n$weight-normal: 400 !default;\n$weight-medium: 500 !default;\n$weight-semibold: 600 !default;\n$weight-bold: 700 !default;\n\n// Spacing\n\n$block-spacing: 1.5rem !default;\n\n// Responsiveness\n\n// The container horizontal gap, which acts as the offset for breakpoints\n$gap: 32px !default;\n// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16\n$tablet: 769px !default;\n// 960px container + 4rem\n$desktop: 960px + (2 * $gap) !default;\n// 1152px container + 4rem\n$widescreen: 1152px + (2 * $gap) !default;\n$widescreen-enabled: true !default;\n// 1344px container + 4rem\n$fullhd: 1344px + (2 * $gap) !default;\n$fullhd-enabled: true !default;\n\n// Miscellaneous\n\n$easing: ease-out !default;\n$radius-small: 2px !default;\n$radius: 4px !default;\n$radius-large: 6px !default;\n$radius-rounded: 290486px !default;\n$speed: 86ms !default;\n\n// Flags\n\n$variable-columns: true !default;\n$rtl: false !default;\n","@function mergeColorMaps($bulma-colors, $custom-colors) {\n // We return at least Bulma's hard-coded colors\n $merged-colors: $bulma-colors;\n\n // We want a map as input\n @if type-of($custom-colors) == 'map' {\n @each $name, $components in $custom-colors {\n // The color name should be a string\n // and the components either a single color\n // or a colors list with at least one element\n @if type-of($name) == 'string' and (type-of($components) == 'list' or type-of($components) == 'color') and length($components) >= 1 {\n $color-base: null;\n $color-invert: null;\n $color-light: null;\n $color-dark: null;\n $value: null;\n\n // The param can either be a single color\n // or a list of 2 colors\n @if type-of($components) == 'color' {\n $color-base: $components;\n $color-invert: findColorInvert($color-base);\n $color-light: findLightColor($color-base);\n $color-dark: findDarkColor($color-base); }\n @else if type-of($components) == 'list' {\n $color-base: nth($components, 1);\n // If Invert, Light and Dark are provided\n @if length($components) > 3 {\n $color-invert: nth($components, 2);\n $color-light: nth($components, 3);\n $color-dark: nth($components, 4);\n } // If only Invert and Light are provided\n @else if length($components) > 2 {\n $color-invert: nth($components, 2);\n $color-light: nth($components, 3);\n $color-dark: findDarkColor($color-base);\n } // If only Invert is provided\n @else {\n $color-invert: nth($components, 2);\n $color-light: findLightColor($color-base);\n $color-dark: findDarkColor($color-base); } }\n\n $value: ($color-base, $color-invert, $color-light, $color-dark);\n\n // We only want to merge the map if the color base is an actual color\n @if type-of($color-base) == 'color' {\n // We merge this colors elements as map with Bulma's colors map\n // (we can override them this way, no multiple definition for the same name)\n // $merged-colors: map_merge($merged-colors, ($name: ($color-base, $color-invert, $color-light, $color-dark)))\n $merged-colors: map_merge($merged-colors, ($name: $value)); } } } }\n\n @return $merged-colors; }\n\n@function powerNumber($number, $exp) {\n $value: 1;\n @if $exp > 0 {\n @for $i from 1 through $exp {\n $value: $value * $number; } }\n @else if $exp < 0 {\n @for $i from 1 through -$exp {\n $value: $value / $number; } }\n @return $value; }\n\n@function colorLuminance($color) {\n @if type-of($color) != 'color' {\n @return 0.55; }\n $color-rgb: ('red': red($color),'green': green($color),'blue': blue($color));\n @each $name, $value in $color-rgb {\n $adjusted: 0;\n $value: $value / 255;\n @if $value < 0.03928 {\n $value: $value / 12.92; }\n @else {\n $value: ($value + .055) / 1.055;\n $value: powerNumber($value, 2); }\n $color-rgb: map-merge($color-rgb, ($name: $value)); }\n @return (map-get($color-rgb, 'red') * .2126) + (map-get($color-rgb, 'green') * .7152) + (map-get($color-rgb, 'blue') * .0722); }\n\n@function findColorInvert($color) {\n @if (colorLuminance($color) > 0.55) {\n @return rgba(#000, 0.7); }\n @else {\n @return #fff; } }\n\n@function findLightColor($color) {\n @if type-of($color) == 'color' {\n $l: 96%;\n @if lightness($color) > 96% {\n $l: lightness($color); }\n @return change-color($color, $lightness: $l); }\n @return $background; }\n\n@function findDarkColor($color) {\n @if type-of($color) == 'color' {\n $base-l: 29%;\n $luminance: colorLuminance($color);\n $luminance-delta: (0.53 - $luminance);\n $target-l: round($base-l + ($luminance-delta * 53));\n @return change-color($color, $lightness: max($base-l, $target-l)); }\n @return $text-strong; }\n\n@function bulmaRgba($color, $alpha) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return rgba($color, $alpha); }\n\n@function bulmaDarken($color, $amount) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return darken($color, $amount); }\n\n@function bulmaLighten($color, $amount) {\n @if type-of($color) != 'color' {\n @return $color; }\n @return lighten($color, $amount); }\n","@charset \"utf-8\";\n\n/* stylelint-disable-next-line value-keyword-case */\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Ubuntu\", \"Roboto\", \"Oxygen\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif;\n\n$black: hsl(0, 0%, 0%);\n$green: hsl(141, 42%, 53%);\n$cyan: hsl(217, 89%, 61%);\n$blue: hsl(208, 79%, 51%);\n$red: hsl(348, 100%, 61%);\n\n/** Bulma: Variables **/\n@import \"../../node_modules/bulma/sass/utilities/initial-variables.sass\";\n@import \"../../node_modules/bulma/sass/utilities/functions.sass\";\n@import \"../../node_modules/bulma/sass/utilities/derived-variables.scss\";\n\n$scheme-main: $black;\n$text: $white-ter;\n\n$strong-color: $grey-lighter;\n\n$link-hover: $link-light;\n\n$hr-background-color: $grey-light;\n\n$border-hover: $link;\n$input-focus-border-color: $link-light;\n\n$title-color: $white-ter;\n$subtitle-color: $grey-lightest;\n$subtitle-strong-color: $grey-lightest;\n\n$input-background-color: $scheme-main;\n$input-border-color: $grey;\n$input-color: $text;\n$input-placeholder-color: $grey-lightest;\n\n$input-disabled-background-color: $grey-dark;\n$input-disabled-border-color: $input-border-color;\n$input-disabled-color: $input-color;\n$input-disabled-placeholder-color: $grey-lightest;\n\n$pagination-background-color: $scheme-main;\n$pagination-border-color: $text;\n$pagination-color: $text;\n\n$pagination-hover-background-color: $pagination-color;\n$pagination-hover-border-color: $pagination-border-color;\n$pagination-hover-color: $scheme-main;\n\n$pagination-disabled-background-color: $grey-dark;\n$pagination-disabled-border-color: $grey;\n$pagination-disabled-color: hsl(0, 0%, 64%);\n\n$tabs-link-color: $text;\n$tabs-link-hover-color: $tabs-link-color;\n$tabs-boxed-link-active-border-color: $grey;\n$tabs-boxed-link-hover-background-color: $grey-darker;\n$tabs-boxed-link-hover-border-bottom-color: $tabs-boxed-link-active-border-color\n"]} \ No newline at end of file diff --git a/dist/css/thumbs.css b/dist/css/thumbs.css deleted file mode 100644 index 61a6e22..0000000 --- a/dist/css/thumbs.css +++ /dev/null @@ -1,2 +0,0 @@ -.image-container{flex:none;position:relative;width:224px;height:224px;margin:.75rem;padding:11px;overflow:hidden;align-items:center;border:1px solid #7a7a7a}.image-container .title{font-weight:400;word-break:break-all}.image-container .image{display:flex;height:200px;width:200px;align-items:center;justify-content:center}.image-container .image img{max-height:100%;max-width:100%;height:auto;width:auto}.image-container .details{position:absolute;left:11px;bottom:11px;right:11px;background-color:rgba(0,0,0,.56078);color:#eff0f1;padding:3px;font-size:.75rem}.image-container .details p{display:block;text-overflow:ellipsis;overflow:hidden}.image-container .details p.name{font-weight:700} -/*# sourceMappingURL=thumbs.css.map */ diff --git a/dist/css/thumbs.css.map b/dist/css/thumbs.css.map deleted file mode 100644 index 1e985d5..0000000 --- a/dist/css/thumbs.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/thumbs.scss","../node_modules/bulma/sass/utilities/initial-variables.sass"],"names":[],"mappings":"AAMA,iBACE,SAAU,CACV,iBAAkB,CAClB,WAAY,CACZ,YAAa,CACb,aAAe,CACf,YAAa,CACb,eAAgB,CAChB,kBAAmB,CACnB,wBCP4B,CDF9B,wBAYI,eAAmB,CACnB,oBACF,CAdF,wBAiBI,YAAa,CACb,YAAa,CACb,WAAY,CACZ,kBAAmB,CACnB,sBAAuB,CArB3B,4BAwBM,eAAgB,CAChB,cAAe,CACf,WAAY,CACZ,UACF,CA5BJ,0BAgCI,iBAAkB,CAClB,SAAU,CACV,WAAY,CACZ,UAAW,CACX,mCAA2B,CAC3B,aAAc,CACd,WAAY,CACZ,gBAAkB,CAvCtB,4BA0CM,aAAc,CACd,sBAAuB,CACvB,eAAgB,CA5CtB,iCA+CQ,eACF","file":"thumbs.css","sourcesContent":["@charset \"utf-8\";\n\n@import \"_variables\";\n\n/** Main **/\n\n.image-container {\n flex: none;\n position: relative;\n width: 224px;\n height: 224px;\n margin: 0.75rem;\n padding: 11px;\n overflow: hidden;\n align-items: center;\n border: 1px solid $grey;\n\n .title {\n font-weight: normal;\n word-break: break-all\n }\n\n .image {\n display: flex;\n height: 200px;\n width: 200px;\n align-items: center;\n justify-content: center;\n\n img {\n max-height: 100%;\n max-width: 100%;\n height: auto;\n width: auto\n }\n }\n\n .details {\n position: absolute;\n left: 11px;\n bottom: 11px;\n right: 11px;\n background-color: #0000008f;\n color: #eff0f1;\n padding: 3px;\n font-size: 0.75rem;\n\n p {\n display: block;\n text-overflow: ellipsis;\n overflow: hidden;\n\n &.name {\n font-weight: bold\n }\n }\n }\n}\n","// Colors\n\n$black: hsl(0, 0%, 4%) !default;\n$black-bis: hsl(0, 0%, 7%) !default;\n$black-ter: hsl(0, 0%, 14%) !default;\n\n$grey-darker: hsl(0, 0%, 21%) !default;\n$grey-dark: hsl(0, 0%, 29%) !default;\n$grey: hsl(0, 0%, 48%) !default;\n$grey-light: hsl(0, 0%, 71%) !default;\n$grey-lighter: hsl(0, 0%, 86%) !default;\n$grey-lightest: hsl(0, 0%, 93%) !default;\n\n$white-ter: hsl(0, 0%, 96%) !default;\n$white-bis: hsl(0, 0%, 98%) !default;\n$white: hsl(0, 0%, 100%) !default;\n\n$orange: hsl(14, 100%, 53%) !default;\n$yellow: hsl(48, 100%, 67%) !default;\n$green: hsl(141, 53%, 53%) !default;\n$turquoise: hsl(171, 100%, 41%) !default;\n$cyan: hsl(204, 71%, 53%) !default;\n$blue: hsl(217, 71%, 53%) !default;\n$purple: hsl(271, 100%, 71%) !default;\n$red: hsl(348, 86%, 61%) !default;\n\n// Typography\n\n$family-sans-serif: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif !default;\n$family-monospace: monospace !default;\n$render-mode: optimizeLegibility !default;\n\n$size-1: 3rem !default;\n$size-2: 2.5rem !default;\n$size-3: 2rem !default;\n$size-4: 1.5rem !default;\n$size-5: 1.25rem !default;\n$size-6: 1rem !default;\n$size-7: 0.75rem !default;\n\n$weight-light: 300 !default;\n$weight-normal: 400 !default;\n$weight-medium: 500 !default;\n$weight-semibold: 600 !default;\n$weight-bold: 700 !default;\n\n// Spacing\n\n$block-spacing: 1.5rem !default;\n\n// Responsiveness\n\n// The container horizontal gap, which acts as the offset for breakpoints\n$gap: 32px !default;\n// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16\n$tablet: 769px !default;\n// 960px container + 4rem\n$desktop: 960px + (2 * $gap) !default;\n// 1152px container + 4rem\n$widescreen: 1152px + (2 * $gap) !default;\n$widescreen-enabled: true !default;\n// 1344px container + 4rem\n$fullhd: 1344px + (2 * $gap) !default;\n$fullhd-enabled: true !default;\n\n// Miscellaneous\n\n$easing: ease-out !default;\n$radius-small: 2px !default;\n$radius: 4px !default;\n$radius-large: 6px !default;\n$radius-rounded: 290486px !default;\n$speed: 86ms !default;\n\n// Flags\n\n$variable-columns: true !default;\n$rtl: false !default;\n"]} \ No newline at end of file diff --git a/dist/js/dashboard.js b/dist/js/dashboard.js index fe81b2e..ee59b8c 100644 --- a/dist/js/dashboard.js +++ b/dist/js/dashboard.js @@ -1,2 +1,2 @@ -var lsKeys={token:"token",viewType:{uploads:"viewTypeUploads",uploadsAll:"viewTypeUploadsAll"},selected:{uploads:"selectedUploads",uploadsAll:"selectedUploadsAll",albums:"selectedAlbums",albumsAll:"selectedAlbumsAll",users:"selectedUsers"},originalNames:{uploads:"originalNames",uploadsAll:"originalNamesAll"}},page={section:null,dom:null,token:localStorage[lsKeys.token],username:null,permissions:null,menusContainer:null,menus:[],currentView:null,views:{uploads:{type:localStorage[lsKeys.viewType.uploads],originalNames:"1"===localStorage[lsKeys.originalNames.uploads],album:null,pageNum:null},uploadsAll:{type:localStorage[lsKeys.viewType.uploadsAll],originalNames:"1"===localStorage[lsKeys.originalNames.uploadsAll],filters:null,pageNum:null,all:!0},albums:{filters:null,pageNum:null},albumsAll:{filters:null,pageNum:null,all:!0},users:{filters:null,pageNum:null}},selected:{uploads:[],uploadsAll:[],albums:[],albumsAll:[],users:[]},checkboxes:[],lastSelected:[],selectAlbumContainer:null,cache:{},clipboardJS:null,lazyLoad:null,imageExts:[".webp",".jpg",".jpeg",".gif",".png",".tiff",".tif",".svg"],videoExts:[".webm",".mp4",".wmv",".avi",".mov",".mkv",".m4v",".m2ts"],isSomethingLoading:!1,fadingIn:null,albumTitleMaxLength:70,albumDescMaxLength:4e3,unhide:function(){document.querySelector("#loader").classList.add("is-hidden"),page.section.classList.remove("is-hidden")},onError:function(e){console.error(e);var a=document.createElement("div");return a.innerHTML=""+e.toString()+"",swal({title:"An error occurred!",icon:"error",content:a})},onAxiosError:function(e){console.error(e);var a={520:"Unknown Error",521:"Web Server Is Down",522:"Connection Timed Out",523:"Origin Is Unreachable",524:"A Timeout Occurred",525:"SSL Handshake Failed",526:"Invalid SSL Certificate",527:"Railgun Error",530:"Origin DNS Error"}[e.response.status]||e.response.statusText,t=e.response.data&&e.response.data.description?e.response.data.description:"There was an error with the request, please check the console for more information.";return swal(e.response.status+" "+a,t,"error")},preparePage:function(){page.token?page.verifyToken(page.token,!0):window.location="auth"},checkClientVersion:function(e){var a=document.querySelector("#mainScript").src.match(/\?_=(\d+)$/);if(a&&a[1]&&a[1]!==e)return swal({title:"Update detected!",text:"Client assets have been updated. Reload to display the latest version?",icon:"info",buttons:{confirm:{text:"Reload",closeModal:!1}}}).then((function(){window.location.reload()}))},verifyToken:function(e,a){axios.post("api/tokens/verify",{token:e}).then((function(t){if(!1===t.data.success)return swal({title:"An error occurred!",text:t.data.description,icon:"error"}).then((function(){a&&(localStorage.removeItem(lsKeys.token),window.location="auth")}));axios.defaults.headers.common.token=e,localStorage[lsKeys.token]=e,t.data.version&&page.checkClientVersion(t.data.version),page.token=e,page.username=t.data.username,page.permissions=t.data.permissions,page.prepareDashboard()})).catch(page.onAxiosError)},prepareDashboard:function(){page.section=document.querySelector("#dashboard"),page.dom=page.section.querySelector("#page"),page.dom.addEventListener("click",page.domClick,!0),page.dom.addEventListener("submit",(function(e){if(e.target&&e.target.classList.contains("prevent-default"))return e.preventDefault()}),!0),page.menusContainer=document.querySelector("#menu");for(var e=[{selector:"#itemUploads",onclick:page.getUploads},{selector:"#itemDeleteUploadsByNames",onclick:page.deleteUploadsByNames},{selector:"#itemManageYourAlbums",onclick:page.getAlbums},{selector:"#itemManageToken",onclick:page.changeToken},{selector:"#itemChangePassword",onclick:page.changePassword},{selector:"#itemLogout",onclick:page.logout},{selector:"#itemManageUploads",onclick:page.getUploads,params:{all:!0},group:"moderator"},{selector:"#itemManageAlbums",onclick:page.getAlbums,params:{all:!0},group:"moderator"},{selector:"#itemStatistics",onclick:page.getStatistics,group:"admin"},{selector:"#itemManageUsers",onclick:page.getUsers,group:"admin"}],a=function(a){if(!e[a].group||page.permissions[e[a].group]){var t=document.querySelector(e[a].selector);t.addEventListener("click",(function(t){if(page.isSomethingLoading)return page.warnSomethingLoading();e[a].onclick.call(null,Object.assign(e[a].params||{},{trigger:t.currentTarget}))})),t.classList.remove("is-hidden"),page.menus.push(t)}},t=0;t\n '+('\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n ')+'\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n ',c='\n
\n \n \n \n
\n ',d=r.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),u=o.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),p=!1,g=page.views[page.currentView].originalNames,m=n.some((function(e){return void 0!==e.expirydate})),b=0;b\n \n '+c+"\n "+d+"\n "+u+"\n ";for(var f=document.querySelector("#table"),w=0;w'+y.name+'':k.innerHTML='

'+(y.extname||"N/A")+"

",k.innerHTML+='\n \n
\n '+(y.thumb?'\n \n \n \n \n ':"")+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n

'+y.name+"

\n "+(g?'

'+y.original+"

":"")+'\n

'+(y.appendix?""+y.appendix+" – ":"")+y.prettyBytes+"

\n "+(m&&y.prettyExpiryDate?'\n

EXP: '+y.prettyExpiryDate+"

":"")+"\n
\n ",f.appendChild(k),page.checkboxes=f.querySelectorAll('.checkbox[data-action="select"]')}}else{var x=e.all&&e.filters&&e.filters.includes("albumid:");page.dom.innerHTML="\n "+o+"\n "+r+"\n "+c+'\n
\n \n \n \n \n \n '+(g?'':"")+"\n "+(void 0===e.album?'":"")+"\n "+(x?'':"")+'\n \n '+(e.all?'':"")+'\n \n '+(m?'':"")+'\n \n \n \n \n \n
File nameOriginal nameUser':'albumid">Album')+"AlbumSizeIPUpload dateExpiry date
\n
\n '+c+"\n "+d+"\n "+u+"\n ";for(var T=document.querySelector("#table"),S=0;S\n '+A.name+"\n "+(g?''+A.original+"":"")+"\n "+(void 0===e.album?''+A.appendix+"":"")+"\n "+(x?''+(A.albumid&&s[A.albumid]||"")+"":"")+'\n '+A.prettyBytes+"\n "+(e.all?''+(A.ip||"")+"":"")+'\n '+A.prettyDate+"\n "+(m?''+(A.prettyExpiryDate||"-")+"":"")+'\n \n \n \n \n \n \n \n \n \n \n \n '+(e.all?"":'\n \n \n \n \n ')+'\n \n \n \n \n \n \n ',T.appendChild(N),page.checkboxes=T.querySelectorAll('.checkbox[data-action="select"]')}}var L=document.querySelector("#selectAll");L&&!p&&n.length&&(L.checked=!0,L.title="Unselect all"),"thumbs"===page.views[page.currentView].type?(page.fadeAndScroll(!0),page.lazyLoad.update()):page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),"uploads"===page.currentView&&(page.views.uploads.album=e.album),page.views[page.currentView].filters=e.filters,page.views[page.currentView].pageNum=n.length?e.pageNum:0})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},setUploadsView:function(e,a){if(page.isSomethingLoading)return page.warnSomethingLoading();"list"===e?(delete localStorage[lsKeys.viewType[page.currentView]],page.views[page.currentView].type=void 0):(localStorage[lsKeys.viewType[page.currentView]]=e,page.views[page.currentView].type=e),page.getUploads(Object.assign(page.views[page.currentView],{trigger:a}))},toggleOriginalNames:function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();page.views[page.currentView].originalNames?(delete localStorage[lsKeys.originalNames[page.currentView]],page.views[page.currentView].originalNames=!1):(localStorage[lsKeys.originalNames[page.currentView]]="1",page.views[page.currentView].originalNames=!0),page.getUploads(Object.assign(page.views[page.currentView],{trigger:e}))},displayPreview:function(e){var a=page.cache[e];if(a.thumb){var t=document.createElement("div");if(t.innerHTML='\n
\n

\n

'+a.name+"
\n
"+a.original+'
\n

\n

\n \n

\n
\n ',a.file){var n=/.[\w]+(\?|$)/.exec(a.file),s=n&&n[0]?n[0].toLowerCase():null,i=page.imageExts.includes(s),l=!i&&page.videoExts.includes(s);(i||l)&&(t.innerHTML+='\n \n ',t.querySelector("#swalOriginal").addEventListener("click",(function(e){var n=e.currentTarget;if(!n.classList.contains("is-danger")){n.classList.add("is-loading");var s=t.querySelector("#swalThumb");if(i)s.src=a.file,s.onload=function(){n.classList.add("is-hidden"),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")},s.onerror=function(e){e.currentTarget.classList.add("is-hidden"),n.className="button is-danger is-fullwidth",n.innerHTML='\n \n \n \n Unable to load original\n '};else if(l){s.classList.add("is-hidden");var o=document.createElement("video");o.id="swalVideo",o.controls=!0,o.autoplay=!0,o.src=a.file,s.insertAdjacentElement("afterend",o),n.classList.add("is-hidden"),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")}}})))}return swal({content:t,buttons:!1}).then((function(){var e=t.querySelector("#swalVideo");e&&e.remove(),document.body.querySelector(".swal-overlay .swal-modal").classList.remove("is-expanded")}))}},selectAll:function(e){for(var a=0;an&&s>n&&st&&suser (username) and ip.\n These keys can be specified more than once.\n For usernames with whitespaces, wrap them with double quotes (\").\n Special cases such as uploads by non-registered users or have no IPs respectively, use user:- or ip:-.\n\n To exclude certain users/ips while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special cases mentioned above (i.e. -user:- or -ip:-).\n\n If you know the ID of a user's album, you can list its uploads with albumid key.\n Negation sign works for this key as well.\n ":"\n There is only 1 filter key, namely albumid.\n This key can be specified more than once.\n Special case such as uploads with no albums, use albumid:-.\n\n To exclude certain albums while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special case mentioned above (i.e. -albumid:-).\n ")+'\n There are 2 range keys: date (upload date) and expiry (expiry date).\n Their format is: "YYYY/MM/DD HH:MM:SS-YYYY/MM/DD HH:MM:SS" ("from" date and "to" date respectively).\n You may specify only one of the dates.\n If "to" date is missing, \'now\' will be used. If "from" date is missing, \'beginning of time\' will be used.\n If any of the subsequent date or time units are not specified, their first value will be used (e.g. January for month, 1 for day, and so on).\n If only time is specified, today\'s date will be used.\n If you do not need to specify both date and time, you may omit the double quotes.\n In conclusion, the following examples are all valid: date:"2020/01/01 01:23-2018/01/01 06", expiry:-2020/05, date:12:34:56.\n These keys can only be specified once each.\n\n Timezone? Feel free to query the dates with your own timezone.\n API requests to the filter endpoint will attach your browser\'s timezone offset, so the server will automatically calculate timezone differences.\n\n Matches can also be sorted with sort keys.\n Their formats are: sort:columnName[:d[escending]], where :d[escending] is an optional tag to set the direction to descending.\n This key must be used with internal column names used in the database (id, '+(a?"userid":"albumid")+", and so on),\n but there are 2 shortcuts available: date for timestamp column and expiry for expirydate column.\n This key can also be specified more than once, where their order will decide the sorting steps.\n\n Finally, there are type-is keys to refine by types.\n You can use is:image and is:video to list images and videos respectively.\n This will only use image/video extensions whose thumbnails can be generated by the safe.\n Negation sign works for this key as well.\n Mixing inclusion and exclusion is not allowed (i.e. is:image -is:video, since the second key is redundant).\n\n Any leftover keywords which do not use keys (non-keyed keywords) will be matched against the matches' file names.\n Excluding certain keywords is also supported by adding negation sign before the keywords.\n\n Internal steps:\n "+(a?"- Query uploads passing ALL exclusion filter keys OR matching ANY filter keys, if any.\n - Refine matches":"- Filter uploads")+" using date key, if any.\n - Refine matches using expiry key, if any.\n - Refine matches using type-is keys, if any.\n - Refine matches using ANY non-keyed keywords, if any.\n - Filter matches using ALL exclusion non-keyed keywords, if any.\n - Sort matches using sorting keys, if any.\n\n Examples:\n "+(a?'- Uploads from users named "demo" AND/OR "John Doe" AND/OR non-registered users:\n user:demo user:"John Doe" user:-\n - ALL uploads, but NOT the ones from user named "demo" AND "John Doe":\n -user:demo -user:"John Doe"\n - Uploads from IP "127.0.0.1" AND which file names match "*.rar" OR "*.zip":\n ip:127.0.0.1 *.rar *.zip\n ':"")+'- Uploads without albums:\n albumid:-\n - ALL uploads, but NOT the ones from album with ID 69:\n -albumid:69\n - Uploads uploaded since "1 June 2019 00:00:00":\n date:2019/06\n - Uploads uploaded between "7 April 2020 12:00:00" and "7 April 2020 23:59:59":\n date:"2020/04/07 12-2020/04/07 23:59:59"\n - Uploads uploaded before "5 February 2020 00:00:00":\n date:-2020/02/05\n - Uploads which file names match "*.gz" but NOT "*.tar.gz":\n *.gz -*.tar.gz\n - Sort matches by "size" column in ascending and descending order respectively:\n '+(a?'user:"John Doe"':"*.txt")+" sort:size\n *.mp4 "+(a?"user:- ":"")+"sort:size:d\n "+(page.permissions.moderator?"":"\n Notice: Regular users may face some limitations in the amount of keys that can be used at a time.\n ")+"\n Friendly reminder: This window can be scrolled up!\n ").trim().replace(/^\s*/g,"").replace(/\n/g,"
"),swal({content:t}).then((function(){document.body.querySelector(".swal-overlay .swal-modal").classList.remove("is-expanded")})),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")},filterUploads:function(e){var a=document.querySelector("#"+(e.dataset.filtersid||"filters")).value.trim().replace(/\t/g," ").replace(/(^|\s)((albumid|ip|user|date|expiry|is|sort|orderby):)\s+/g,"$2");page.getUploads(Object.assign(page.views[page.currentView],{filters:a,pageNum:0,trigger:e}))},viewUserUploads:function(e,a){var t=page.cache[e];if(t){a.classList.add("is-loading");var n=t.username.includes(" ")?'"'+t.username+'"':t.username;page.getUploads({all:!0,filters:"user:"+n,trigger:document.querySelector("#itemManageUploads")})}},viewAlbumUploads:function(e,a){if(page.cache[e]){a.classList.add("is-loading");var t="albumsAll"===page.currentView&&page.permissions.moderator;page.getUploads({all:t,filters:"albumid:"+e,trigger:t?document.querySelector("#itemManageUploads"):document.querySelector("#itemUploads")})}},deleteUpload:function(e){page.postBulkDeleteUploads({all:"uploadsAll"===page.currentView,field:"id",values:[e],cb:function(a){!a.length&&page.selected[page.currentView].includes(e)&&page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(e),1),page.selected[page.currentView].length?localStorage[lsKeys.selected[page.currentView]]=JSON.stringify(page.selected[page.currentView]):delete localStorage[lsKeys.selected[page.currentView]],page.getUploads(Object.assign(page.views[page.currentView],{autoPage:!0}))}})},bulkDeleteUploads:function(){if(!page.selected[page.currentView].length)return swal("An error occurred!","You have not selected any uploads.","error");page.postBulkDeleteUploads({all:"uploadsAll"===page.currentView,field:"id",values:page.selected[page.currentView],cb:function(e){e.length?page.selected[page.currentView]=page.selected[page.currentView].filter((function(a){return e.includes(a)})):page.selected[page.currentView]=[],page.selected[page.currentView].length?localStorage[lsKeys.selected[page.currentView]]=JSON.stringify(page.selected[page.currentView]):delete localStorage[lsKeys.selected[page.currentView]],page.getUploads(Object.assign(page.views[page.currentView],{autoPage:!0}))}})},deleteUploadsByNames:function(e){void 0===e&&(e={});var a="";page.permissions.moderator&&(a="
Hint: You can use this feature to delete uploads by other users."),page.dom.innerHTML='\n
\n
\n \n
\n \n
\n

Separate each entry with a new line.'+a+'

\n
\n
\n
\n \n
\n
\n
\n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#submitBulkDelete").addEventListener("click",(function(){if(page.isSomethingLoading)return page.warnSomethingLoading();var e=document.querySelector("#bulkDeleteNames"),a={},t=e.value.split(/\r?\n/).map((function(e){var a=e.trim();return/^[^\s]+$/.test(a)?a:""})).filter((function(e){return!(!e||Object.prototype.hasOwnProperty.call(a,e))&&(a[e]=!0)}));if(e.value=t.join("\n"),!t.length)return swal("An error occurred!","You have not entered any upload names.","error");page.postBulkDeleteUploads({all:!0,field:"name",values:t,cb:function(a){e.value=a.join("\n")}})}))},postBulkDeleteUploads:function(e){void 0===e&&(e={});var a=e.values.length,t=e.values.length+" upload"+(1===a?"":"s"),n="

You won't be able to recover "+t.replace(/^(\d*)(.*)/,"$1$2")+"!

";e.all&&(n+="\n

Warning: You may be nuking "+(1===a?"an upload":"some uploads")+" by "+(1===a?"another user":"other users")+"!

");var s=document.createElement("div");s.innerHTML=n,swal({title:"Are you sure?",content:s,icon:"warning",dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, nuke "+(1===e.values.length?"it":"them")+"!",closeModal:!1}}}).then((function(n){n&&axios.post("api/upload/bulkdelete",{field:e.fields,values:e.values}).then((function(n){if(n){if(!1===n.data.success)return"No token provided"===n.data.description?page.verifyToken(page.token):swal("An error occurred!",n.data.description,"error");var s=Array.isArray(n.data.failed)?n.data.failed:[];s.length===e.values.length?swal("An error occurred!","Unable to delete any of the "+t+".","error"):s.length&&s.length\n

You are about to add '+t+" upload"+(1===t?"":"s")+' to an album.

\n

If an upload is already in an album, it will be moved.

\n \n
\n
\n
\n \n
\n
\n
\n ',swal({icon:"warning",content:n,buttons:{cancel:!0,confirm:{text:"OK",closeModal:!1}}}).then((function(t){if(t){var n=parseInt(document.querySelector("#swalAlbum").value);if(isNaN(n))return swal("An error occurred!","You did not choose an album.","error");axios.post("api/albums/addfiles",{ids:e,albumid:n}).then((function(t){if(t)if(!1!==t.data.success){var s=e.length;t.data.failed&&t.data.failed.length&&(s-=t.data.failed.length);var i="upload"+(1===e.length?"":"s");if(!s)return swal("An error occurred!","Could not add the "+i+" to the album.","error");swal("Woohoo!","Successfully "+(n<0?"removed":"added")+" "+s+" "+i+" "+(n<0?"from":"to")+" the album.","success",{buttons:!1,timer:1500}),a(t.data.failed)}else"No token provided"===t.data.description?page.verifyToken(page.token):swal("An error occurred!",t.data.description,"error")})).catch(page.onAxiosError)}})),axios.get("api/albums").then((function(e){if(!1!==e.data.success){var a=document.querySelector("#swalAlbum");a&&(a.innerHTML+=e.data.albums.map((function(e){return'"})).join("\n"),a.getElementsByTagName("option")[1].innerHTML="Choose an album",a.removeAttribute("disabled"))}else"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error")})).catch(page.onAxiosError)},getAlbums:function(e){if(void 0===e&&(e={}),e&&e.all&&!page.permissions.moderator)return swal("An error occurred!","You cannot do this!","error");if(page.isSomethingLoading)return page.warnSomethingLoading();page.updateTrigger(e.trigger,"loading"),"number"!=typeof e.pageNum&&(e.pageNum=0);var a={};e.all&&(a.all="1");var t="api/albums/"+e.pageNum;axios.get(t,{headers:a}).then((function(a){if(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));var t=Math.ceil(a.data.count/25),n=a.data.albums;if(e.pageNum&&0===n.length)return page.updateTrigger(e.trigger),e.autoPage?(e.pageNum=t-1,page.getAlbums(e)):swal("An error occurred!","There are no more albums to populate page "+(e.pageNum+1)+".","error");page.currentView=e.all?"albumsAll":"albums",page.cache={};var s=a.data.users,i=a.data.homeDomain;e.pageNum<0&&(e.pageNum=Math.max(0,t+e.pageNum));var l=page.paginate(a.data.count,25,e.pageNum),o='\n
\n '+('\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n ')+'\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n ',r='\n \n ",c=o.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),d=l.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),u=!1,p='\n

Create new album

\n
\n
\n
\n \n
\n

Max length is '+page.albumTitleMaxLength+' characters.

\n
\n
\n
\n \n
\n

Max length is '+page.albumDescMaxLength+' characters.

\n
\n
\n
\n \n
\n
\n
\n
\n ';page.dom.innerHTML="\n "+(e.all?"":p)+"\n "+l+"\n "+o+"\n "+r+'\n
\n \n \n \n \n \n \n '+(e.all?"":"")+'\n \n \n \n \n \n \n \n \n
IDNameUserUploadsCreated atPublic link
\n
\n '+r+"\n "+c+"\n "+d+"\n ";for(var g=document.querySelector("#table"),m=0;m\n "+b.id+"\n "+b.name+"\n "+(e.all?""+(b.userid&&s[b.userid]||"")+"":"")+"\n "+b.uploads+"\n "+b.prettyDate+"\n '+h+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',g.appendChild(w),page.checkboxes=g.querySelectorAll('.checkbox[data-action="select"]')}var y=document.querySelector("#selectAll");y&&!u&&(y.checked=!0,y.title="Unselect all"),page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),"albumsAll"===page.currentView&&(page.views[page.currentView].filters=e.filters),page.views[page.currentView].pageNum=n.length?e.pageNum:0}})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},editAlbum:function(e){var a=page.cache[e];if(a){var t=document.createElement("div");t.innerHTML='\n
\n
\n \n
\n

Max length is '+page.albumTitleMaxLength+' characters.

\n
\n
\n
\n \n
\n

Max length is '+page.albumDescMaxLength+" characters.

\n
\n "+("albumsAll"===page.currentView&&page.permissions.moderator?'
\n
\n \n
\n
":"")+'\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n ',swal({title:"Edit album",icon:"info",content:t,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(t){if(t){var n={id:e,name:document.querySelector("#swalName").value.trim(),description:document.querySelector("#swalDescription").value.trim(),download:document.querySelector("#swalDownload").checked,public:document.querySelector("#swalPublic").checked,requestLink:document.querySelector("#swalRequestLink").checked};"albumsAll"===page.currentView&&page.permissions.moderator&&(n.enabled=document.querySelector("#swalEnabled").checked),axios.post("api/albums/edit",n).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");e.data.identifier?swal("Success!","The album's new identifier is: "+e.data.identifier+".","success"):e.data.name!==a.name?swal("Success!","The album was renamed to: "+e.data.name+".","success"):swal("Success!","The album was edited.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums(Object.assign(page.views[page.currentView],{autoPage:!0}))}})).catch(page.onAxiosError)}}))}},disableAlbum:function(e){swal({title:"Are you sure?",text:"This won't delete the uploads associated with the album!",icon:"warning",dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, disable it!",closeModal:!1},purge:{text:"Umm, delete the uploads too, please?",value:"purge",className:"swal-button--danger",closeModal:!1}}}).then((function(a){a&&axios.post("api/albums/disable",{id:e,purge:"purge"===a}).then((function(e){if(!1===e.data.success){var a=Array.isArray(e.data.failed)?e.data.failed:[];return"No token provided"===e.data.description?page.verifyToken(page.token):a.length?swal("An error occurred!","Unable to delete "+a.length+" of the album's upload"+(1===a.length?"":"s")+".","error"):swal("An error occurred!",e.data.description,"error")}swal("Deleted!","Your album has been disabled.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums(Object.assign(page.views[page.currentView],{autoPage:!0}))})).catch(page.onAxiosError)}))},submitAlbum:function(e){page.updateTrigger(e,"loading"),axios.post("api/albums",{name:document.querySelector("#albumName").value.trim(),description:document.querySelector("#albumDescription").value.trim()}).then((function(a){if(a){if(page.updateTrigger(e),!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):swal("An error occurred!",a.data.description,"error");swal("Woohoo!","Album was created successfully.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums({pageNum:-1})}})).catch((function(a){page.updateTrigger(e),page.onAxiosError(a)}))},getAlbumsSidebar:function(){axios.get("api/albums",{headers:{sidebar:"1"}}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var a=e.data.albums,t=e.data.count,n=document.querySelector("#albumsContainer"),s=n.querySelectorAll("li > a");if(s.length){for(var i=0;ia.length){var d=document.createElement("li"),u=document.createElement("a");u.className="is-relative",u.innerHTML="...",u.title="You have "+t+" albums, but the sidebar can only list your first "+a.length+" albums.",u.addEventListener("click",(function(e){page.getAlbums({trigger:document.querySelector("#itemManageYourAlbums")})})),d.appendChild(u),n.appendChild(d)}}}})).catch(page.onAxiosError)},changeToken:function(e){void 0===e&&(e={}),page.dom.innerHTML='\n
\n \n
\n
\n \n
\n
\n
\n \n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#getNewToken").addEventListener("click",(function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();var a=e.currentTarget;page.updateTrigger(a,"loading"),axios.post("api/tokens/change").then((function(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):(page.updateTrigger(a),swal("An error occurred!",e.data.description,"error"));page.updateTrigger(a),swal({title:"Woohoo!",text:"Your token was successfully changed.",icon:"success",buttons:!1,timer:1500}).then((function(){axios.defaults.headers.common.token=e.data.token,localStorage[lsKeys.token]=e.data.token,page.token=e.data.token,page.changeToken()}))})).catch((function(e){page.updateTrigger(a),page.onAxiosError(e)}))}))},changePassword:function(e){void 0===e&&(e={}),page.dom.innerHTML='\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#sendChangePassword").addEventListener("click",(function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();page.dom.querySelector("form").checkValidity()&&(document.querySelector("#password").value===document.querySelector("#passwordConfirm").value?page.sendNewPassword(document.querySelector("#password").value,e.currentTarget):swal({title:"Password mismatch!",text:"Your passwords do not match, please try again.",icon:"error"}))}))},sendNewPassword:function(e,a){page.updateTrigger(a,"loading"),axios.post("api/password/change",{password:e}).then((function(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):(page.updateTrigger(a),swal("An error occurred!",e.data.description,"error"));page.updateTrigger(a),swal({title:"Woohoo!",text:"Your password was successfully changed.",icon:"success",buttons:!1,timer:1500}).then((function(){page.changePassword()}))})).catch((function(e){page.updateTrigger(a),page.onAxiosError(e)}))},getUsers:function(e){if(void 0===e&&(e={}),page.isSomethingLoading)return page.warnSomethingLoading();if(!page.permissions.admin)return swal("An error occurred!","You cannot do this!","error");page.updateTrigger(e.trigger,"loading"),"number"!=typeof e.pageNum&&(e.pageNum=0);var a="api/users/"+e.pageNum;axios.get(a).then((function(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));var t=Math.ceil(a.data.count/25),n=a.data.users;if(e.pageNum&&0===n.length)return page.updateTrigger(e.trigger),e.autoPage?(e.pageNum=t-1,page.getUsers(e)):swal("An error occurred!","There are no more users to populate page "+(e.pageNum+1)+".","error");page.currentView="users",page.cache={},e.pageNum<0&&(e.pageNum=Math.max(0,t+e.pageNum));var s=page.paginate(a.data.count,25,e.pageNum),i='\n
\n '+('\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n ')+'\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n ',l='\n \n ',o=i.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),r=s.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),c=!1;page.dom.innerHTML="\n "+s+"\n "+i+"\n "+l+'\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
UsernameUploadsUsageGroupRegistration dateLast token update
\n
\n '+l+"\n "+o+"\n "+r+"\n ";for(var d=document.querySelector("#table"),u=0;u\n "+p.username+"\n "+p.uploads+"\n "+page.getPrettyBytes(p.usage)+"\n "+m+"\n "+f+"\n "+w+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',d.appendChild(y),page.checkboxes=d.querySelectorAll('.checkbox[data-action="select"]')}var k=document.querySelector("#selectAll");k&&!c&&(k.checked=!0,k.title="Unselect all"),page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),page.views[page.currentView].pageNum=n.length?e.pageNum:0})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},createUser:function(){var e=Object.keys(page.permissions).map((function(e,a,t){return'"})).join("\n"),a=document.createElement("div");a.innerHTML='\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n ",swal({title:"Create new user",icon:"info",content:a,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(e){e&&axios.post("api/users/create",{username:document.querySelector("#swalUsername").value,password:document.querySelector("#swalPassword").value,group:document.querySelector("#swalGroup").value}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var a=document.createElement("div");a.innerHTML="\n

Username: "+e.data.username+"

\n

Password: "+e.data.password+"

\n

User group: "+e.data.group+"

\n ",swal({title:"Created a new user!",icon:"success",content:a}),page.getUsers(Object.assign(page.views.users,{pageNum:-1}))}})).catch(page.onAxiosError)}))},editUser:function(e){var a=page.cache[e];if(a){var t=Object.keys(page.permissions).map((function(e,t,n){return'"})).join("\n"),n=document.createElement("div");n.innerHTML='\n
\n

User ID: '+e+'

\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n ',swal({title:"Edit user",icon:"info",content:n,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(t){t&&axios.post("api/users/edit",{id:e,username:document.querySelector("#swalUsername").value,group:document.querySelector("#swalGroup").value,enabled:document.querySelector("#swalEnabled").checked,resetPassword:document.querySelector("#swalResetPassword").checked}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var t=!0,n=document.createElement("div"),s=a.username;e.data.update.username!==a.username&&(n.innerHTML+="

"+a.username+" was renamed into: "+e.data.update.username+".

",t=!1,s=e.data.update.username),e.data.update.password&&(n.innerHTML+="\n

"+s+"'s new password is:

\n

"+e.data.update.password+"

\n ",t=!1),e.data.update.enabled!==a.enabled&&(n.innerHTML+="

"+s+" has been "+(e.data.update.enabled?"enabled":"disabled")+"!

"),n.innerHTML||(n.innerHTML="

"+s+" was edited!

"),swal({title:"Success!",icon:"success",content:n,buttons:!t,timer:t?1500:null}),page.getUsers(page.views.users)}})).catch(page.onAxiosError)}))}},disableUser:function(e){var a=page.cache[e];if(a&&a.enabled){var t=document.createElement("div");t.innerHTML="\n

You will be disabling a user named "+page.cache[e].username+".

\n

Their files will remain.

\n ",swal({title:"Are you sure?",icon:"warning",content:t,dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, disable them!",closeModal:!1}}}).then((function(a){a&&axios.post("api/users/disable",{id:e}).then((function(a){if(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):swal("An error occurred!",a.data.description,"error");swal("Success!",page.cache[e].username+" has been disabled.","success",{buttons:!1,timer:1500}),page.getUsers(page.views.users)}})).catch(page.onAxiosError)}))}},deleteUser:function(e){if(page.cache[e]){var a=document.createElement("div");a.innerHTML="\n

You will be deleting a user named "+page.cache[e].username+".

\n

Their files will remain, unless you choose otherwise.

\n ",swal({title:"Are you sure?",icon:"warning",content:a,dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, delete it!",closeModal:!1},purge:{text:"Yes, and the uploads too!",value:"purge",className:"swal-button--danger",closeModal:!1}}}).then((function(a){a&&axios.post("api/users/delete",{id:e,purge:"purge"===a}).then((function(a){if(a){if(!1===a.data.success){var t=Array.isArray(a.data.failed)?a.data.failed:[];return"No token provided"===a.data.description?page.verifyToken(page.token):t.length?swal("An error occurred!","Unable to delete "+t.length+" of the user's upload"+(1===t.length?"":"s")+".","error"):swal("An error occurred!",a.data.description,"error")}swal("Success!",page.cache[e].username+" has been deleted.","success",{buttons:!1,timer:1500}),page.getUsers(Object.assign(page.views.users,{autoPage:!0}))}})).catch(page.onAxiosError)}))}},paginate:function(e,a,t){t+=1;var n=Math.ceil(e/a),s="",i=function(e,a){for(var n=e;n<=a;++n)s+='
  • '+n+"
  • "},l=function(){s+='\n
  • 1
  • \n
  • \n '},o=function(){s+='\n
  • \n
  • '+n+"
  • \n "};return 7>=n?i(1,n):t<6?(i(1,6),o()):t>n-6+1?(l(),i(n-6+1,n)):(l(),i(t-3+1,t+3-1),o()),'\n \n "},getStatistics:function(e){if(void 0===e&&(e={}),!page.permissions.admin)return swal("An error occurred!","You cannot do this!","error");if(page.isSomethingLoading)return page.warnSomethingLoading();page.updateTrigger(e.trigger,"loading");axios.get("api/stats").then((function(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));for(var t="",n=Object.keys(a.data.stats),s=0;s\n '+o[r].replace(/([A-Z])/g," $1").replace(/(^|\s)(cpu|db|zip)/gi,(function(e){return e.toUpperCase()}))+"\n "+d+"\n \n "}}catch(e){i="\n \n Error parsing response. Try again?\n \n \n ",page.onError(e)}else i+="\n \n Generating, please try again later…\n \n \n ";t+='\n
    \n \n \n \n \n \n \n \n \n "+i+"\n \n
    '+n[s]+"
    \n
    \n "}Array.isArray(a.data.hrtime)&&(t+='\n
    \n
    \n Time taken: '+a.data.hrtime[0]+"s "+Math.ceil(a.data.hrtime[1]/1e6)+"ms.\n
    \n
    \n "),page.dom.innerHTML=t,page.fadeAndScroll(),page.updateTrigger(e.trigger,"active")})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))}};window.addEventListener("DOMContentLoaded",(function(){"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,a){"use strict";var t=arguments;if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),s=1;s",swal({title:"An error occurred!",icon:"error",content:a})},onAxiosError:function(e){console.error(e);var a={520:"Unknown Error",521:"Web Server Is Down",522:"Connection Timed Out",523:"Origin Is Unreachable",524:"A Timeout Occurred",525:"SSL Handshake Failed",526:"Invalid SSL Certificate",527:"Railgun Error",530:"Origin DNS Error"}[e.response.status]||e.response.statusText,t=e.response.data&&e.response.data.description?e.response.data.description:"There was an error with the request, please check the console for more information.";return swal(e.response.status+" "+a,t,"error")},preparePage:function(){page.token?page.verifyToken(page.token,!0):window.location="auth"},checkClientVersion:function(e){var a=document.querySelector("#mainScript").src.match(/\?_=(\d+)$/);if(a&&a[1]&&a[1]!==e)return swal({title:"Update detected!",text:"Client assets have been updated. Reload to display the latest version?",icon:"info",buttons:{confirm:{text:"Reload",closeModal:!1}}}).then((function(){window.location.reload()}))},verifyToken:function(e,a){axios.post("api/tokens/verify",{token:e}).then((function(t){if(!1===t.data.success)return swal({title:"An error occurred!",text:t.data.description,icon:"error"}).then((function(){a&&(localStorage.removeItem(lsKeys.token),window.location="auth")}));axios.defaults.headers.common.token=e,localStorage[lsKeys.token]=e,t.data.version&&page.checkClientVersion(t.data.version),page.token=e,page.username=t.data.username,page.permissions=t.data.permissions,page.prepareDashboard()})).catch(page.onAxiosError)},prepareDashboard:function(){page.section=document.querySelector("#dashboard"),page.dom=page.section.querySelector("#page"),page.dom.addEventListener("click",page.domClick,!0),page.dom.addEventListener("submit",(function(e){if(e.target&&e.target.classList.contains("prevent-default"))return e.preventDefault()}),!0),page.menusContainer=document.querySelector("#menu");for(var e=[{selector:"#itemUploads",onclick:page.getUploads},{selector:"#itemDeleteUploadsByNames",onclick:page.deleteUploadsByNames},{selector:"#itemManageYourAlbums",onclick:page.getAlbums},{selector:"#itemManageToken",onclick:page.changeToken},{selector:"#itemChangePassword",onclick:page.changePassword},{selector:"#itemLogout",onclick:page.logout},{selector:"#itemManageUploads",onclick:page.getUploads,params:{all:!0},group:"moderator"},{selector:"#itemManageAlbums",onclick:page.getAlbums,params:{all:!0},group:"moderator"},{selector:"#itemStatistics",onclick:page.getStatistics,group:"admin"},{selector:"#itemManageUsers",onclick:page.getUsers,group:"admin"}],a=function(a){if(!e[a].group||page.permissions[e[a].group]){var t=document.querySelector(e[a].selector);t.addEventListener("click",(function(t){if(page.isSomethingLoading)return page.warnSomethingLoading();e[a].onclick.call(null,Object.assign(e[a].params||{},{trigger:t.currentTarget}))})),t.classList.remove("is-hidden"),page.menus.push(t)}},t=0;t\n '+('\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n ')+'\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n ',c='\n \n ',d=r.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),u=o.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),p=!1,g=page.views[page.currentView].originalNames,m=n.some((function(e){return void 0!==e.expirydate})),b=0;b\n \n '+c+"\n "+d+"\n "+u+"\n ";for(var f=document.querySelector("#table"),w=0;w'+y.name+'':k.innerHTML='

    '+(y.extname||"N/A")+"

    ",k.innerHTML+='\n \n
    \n '+(y.thumb?'\n \n \n \n \n ':"")+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n

    '+y.name+"

    \n "+(g?'

    '+y.original+"

    ":"")+'\n

    '+(y.appendix?""+y.appendix+" – ":"")+y.prettyBytes+"

    \n "+(m&&y.prettyExpiryDate?'\n

    EXP: '+y.prettyExpiryDate+"

    ":"")+"\n
    \n ",f.appendChild(k),page.checkboxes=f.querySelectorAll('.checkbox[data-action="select"]')}}else{var x=e.all&&e.filters&&e.filters.includes("albumid:");page.dom.innerHTML="\n "+o+"\n "+r+"\n "+c+'\n
    \n \n \n \n \n \n '+(g?'':"")+"\n "+(void 0===e.album?'":"")+"\n "+(x?'':"")+'\n \n '+(e.all?'':"")+'\n \n '+(m?'':"")+'\n \n \n \n \n \n
    File nameOriginal nameUser':'albumid">Album')+"AlbumSizeIPUpload dateExpiry date
    \n
    \n '+c+"\n "+d+"\n "+u+"\n ";for(var T=document.querySelector("#table"),S=0;S\n '+A.name+"\n "+(g?''+A.original+"":"")+"\n "+(void 0===e.album?''+A.appendix+"":"")+"\n "+(x?''+(A.albumid&&s[A.albumid]||"")+"":"")+'\n '+A.prettyBytes+"\n "+(e.all?''+(A.ip||"")+"":"")+'\n '+A.prettyDate+"\n "+(m?''+(A.prettyExpiryDate||"-")+"":"")+'\n \n \n \n \n \n \n \n \n \n \n \n '+(e.all?"":'\n \n \n \n \n ')+'\n \n \n \n \n \n \n ',T.appendChild(N),page.checkboxes=T.querySelectorAll('.checkbox[data-action="select"]')}}var L=document.querySelector("#selectAll");L&&!p&&n.length&&(L.checked=!0,L.title="Unselect all"),"thumbs"===page.views[page.currentView].type?(page.fadeAndScroll(!0),page.lazyLoad.update()):page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),"uploads"===page.currentView&&(page.views.uploads.album=e.album),page.views[page.currentView].filters=e.filters,page.views[page.currentView].pageNum=n.length?e.pageNum:0})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},setUploadsView:function(e,a){if(page.isSomethingLoading)return page.warnSomethingLoading();"list"===e?(delete localStorage[lsKeys.viewType[page.currentView]],page.views[page.currentView].type=void 0):(localStorage[lsKeys.viewType[page.currentView]]=e,page.views[page.currentView].type=e),page.getUploads(Object.assign(page.views[page.currentView],{trigger:a}))},toggleOriginalNames:function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();page.views[page.currentView].originalNames?(delete localStorage[lsKeys.originalNames[page.currentView]],page.views[page.currentView].originalNames=!1):(localStorage[lsKeys.originalNames[page.currentView]]="1",page.views[page.currentView].originalNames=!0),page.getUploads(Object.assign(page.views[page.currentView],{trigger:e}))},displayPreview:function(e){var a=page.cache[e];if(a.thumb){var t=document.createElement("div");if(t.innerHTML='\n
    \n

    \n

    '+a.name+"
    \n
    "+a.original+'
    \n

    \n

    \n \n

    \n
    \n ',a.file){var n=/.[\w]+(\?|$)/.exec(a.file),s=n&&n[0]?n[0].toLowerCase():null,i=page.imageExts.includes(s),l=!i&&page.videoExts.includes(s);(i||l)&&(t.innerHTML+='\n \n ',t.querySelector("#swalOriginal").addEventListener("click",(function(e){var n=e.currentTarget;if(!n.classList.contains("is-danger")){n.classList.add("is-loading");var s=t.querySelector("#swalThumb");if(i)s.src=a.file,s.onload=function(){n.classList.add("is-hidden"),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")},s.onerror=function(e){e.currentTarget.classList.add("is-hidden"),n.className="button is-danger is-fullwidth",n.innerHTML='\n \n \n \n Unable to load original\n '};else if(l){s.classList.add("is-hidden");var o=document.createElement("video");o.id="swalVideo",o.controls=!0,o.autoplay=!0,o.src=a.file,s.insertAdjacentElement("afterend",o),n.classList.add("is-hidden"),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")}}})))}return swal({content:t,buttons:!1}).then((function(){var e=t.querySelector("#swalVideo");e&&e.remove(),document.body.querySelector(".swal-overlay .swal-modal").classList.remove("is-expanded")}))}},selectAll:function(e){for(var a=0;an&&s>n&&st&&suser (username) and ip.\n These keys can be specified more than once.\n For usernames with whitespaces, wrap them with double quotes (\").\n Special cases such as uploads by non-registered users or have no IPs respectively, use user:- or ip:-.\n\n To exclude certain users/ips while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special cases mentioned above (i.e. -user:- or -ip:-).\n\n If you know the ID of a user's album, you can list its uploads with albumid key.\n Negation sign works for this key as well.\n ":"\n There is only 1 filter key, namely albumid.\n This key can be specified more than once.\n Special case such as uploads with no albums, use albumid:-.\n\n To exclude certain albums while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special case mentioned above (i.e. -albumid:-).\n ")+'\n There are 2 range keys: date (upload date) and expiry (expiry date).\n Their format is: "YYYY/MM/DD HH:MM:SS-YYYY/MM/DD HH:MM:SS" ("from" date and "to" date respectively).\n You may specify only one of the dates.\n If "to" date is missing, \'now\' will be used. If "from" date is missing, \'beginning of time\' will be used.\n If any of the subsequent date or time units are not specified, their first value will be used (e.g. January for month, 1 for day, and so on).\n If only time is specified, today\'s date will be used.\n If you do not need to specify both date and time, you may omit the double quotes.\n In conclusion, the following examples are all valid: date:"2020/01/01 01:23-2018/01/01 06", expiry:-2020/05, date:12:34:56.\n These keys can only be specified once each.\n\n Timezone? Feel free to query the dates with your own timezone.\n API requests to the filter endpoint will attach your browser\'s timezone offset, so the server will automatically calculate timezone differences.\n\n Matches can also be sorted with sort keys.\n Their formats are: sort:columnName[:d[escending]], where :d[escending] is an optional tag to set the direction to descending.\n This key must be used with internal column names used in the database (id, '+(a?"userid":"albumid")+", and so on),\n but there are 2 shortcuts available: date for timestamp column and expiry for expirydate column.\n This key can also be specified more than once, where their order will decide the sorting steps.\n\n Finally, there are type-is keys to refine by types.\n You can use is:image and is:video to list images and videos respectively.\n This will only use image/video extensions whose thumbnails can be generated by the safe.\n Negation sign works for this key as well.\n Mixing inclusion and exclusion is not allowed (i.e. is:image -is:video, since the second key is redundant).\n\n Any leftover keywords which do not use keys (non-keyed keywords) will be matched against the matches' file names.\n Excluding certain keywords is also supported by adding negation sign before the keywords.\n\n Internal steps:\n "+(a?"- Query uploads passing ALL exclusion filter keys OR matching ANY filter keys, if any.\n - Refine matches":"- Filter uploads")+" using date key, if any.\n - Refine matches using expiry key, if any.\n - Refine matches using type-is keys, if any.\n - Refine matches using ANY non-keyed keywords, if any.\n - Filter matches using ALL exclusion non-keyed keywords, if any.\n - Sort matches using sorting keys, if any.\n\n Examples:\n "+(a?'- Uploads from users named "demo" AND/OR "John Doe" AND/OR non-registered users:\n user:demo user:"John Doe" user:-\n - ALL uploads, but NOT the ones from user named "demo" AND "John Doe":\n -user:demo -user:"John Doe"\n - Uploads from IP "127.0.0.1" AND which file names match "*.rar" OR "*.zip":\n ip:127.0.0.1 *.rar *.zip\n ':"")+'- Uploads without albums:\n albumid:-\n - ALL uploads, but NOT the ones from album with ID 69:\n -albumid:69\n - Uploads uploaded since "1 June 2019 00:00:00":\n date:2019/06\n - Uploads uploaded between "7 April 2020 12:00:00" and "7 April 2020 23:59:59":\n date:"2020/04/07 12-2020/04/07 23:59:59"\n - Uploads uploaded before "5 February 2020 00:00:00":\n date:-2020/02/05\n - Uploads which file names match "*.gz" but NOT "*.tar.gz":\n *.gz -*.tar.gz\n - Sort matches by "size" column in ascending and descending order respectively:\n '+(a?'user:"John Doe"':"*.txt")+" sort:size\n *.mp4 "+(a?"user:- ":"")+"sort:size:d\n "+(page.permissions.moderator?"":"\n Notice: Regular users may face some limitations in the amount of keys that can be used at a time.\n ")+"\n Friendly reminder: This window can be scrolled up!\n ").trim().replace(/^\s*/g,"").replace(/\n/g,"
    "),swal({content:t}).then((function(){document.body.querySelector(".swal-overlay .swal-modal").classList.remove("is-expanded")})),document.body.querySelector(".swal-overlay .swal-modal:not(.is-expanded)").classList.add("is-expanded")},filterUploads:function(e){var a=document.querySelector("#"+(e.dataset.filtersid||"filters")).value.trim().replace(/\t/g," ").replace(/(^|\s)((albumid|ip|user|date|expiry|is|sort|orderby):)\s+/g,"$2");page.getUploads(Object.assign(page.views[page.currentView],{filters:a,pageNum:0,trigger:e}))},viewUserUploads:function(e,a){var t=page.cache[e];if(t){a.classList.add("is-loading");var n=t.username.includes(" ")?'"'+t.username+'"':t.username;page.getUploads({all:!0,filters:"user:"+n,trigger:document.querySelector("#itemManageUploads")})}},viewAlbumUploads:function(e,a){if(page.cache[e]){a.classList.add("is-loading");var t="albumsAll"===page.currentView&&page.permissions.moderator;page.getUploads({all:t,filters:"albumid:"+e,trigger:t?document.querySelector("#itemManageUploads"):document.querySelector("#itemUploads")})}},deleteUpload:function(e){page.postBulkDeleteUploads({all:"uploadsAll"===page.currentView,field:"id",values:[e],cb:function(a){!a.length&&page.selected[page.currentView].includes(e)&&page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(e),1),page.selected[page.currentView].length?localStorage[lsKeys.selected[page.currentView]]=JSON.stringify(page.selected[page.currentView]):delete localStorage[lsKeys.selected[page.currentView]],page.getUploads(Object.assign(page.views[page.currentView],{autoPage:!0}))}})},bulkDeleteUploads:function(){if(!page.selected[page.currentView].length)return swal("An error occurred!","You have not selected any uploads.","error");page.postBulkDeleteUploads({all:"uploadsAll"===page.currentView,field:"id",values:page.selected[page.currentView],cb:function(e){e.length?page.selected[page.currentView]=page.selected[page.currentView].filter((function(a){return e.includes(a)})):page.selected[page.currentView]=[],page.selected[page.currentView].length?localStorage[lsKeys.selected[page.currentView]]=JSON.stringify(page.selected[page.currentView]):delete localStorage[lsKeys.selected[page.currentView]],page.getUploads(Object.assign(page.views[page.currentView],{autoPage:!0}))}})},deleteUploadsByNames:function(e){void 0===e&&(e={});var a="";page.permissions.moderator&&(a="
    Hint: You can use this feature to delete uploads by other users."),page.dom.innerHTML='\n
    \n
    \n \n
    \n \n
    \n

    Separate each entry with a new line.'+a+'

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#submitBulkDelete").addEventListener("click",(function(){if(page.isSomethingLoading)return page.warnSomethingLoading();var e=document.querySelector("#bulkDeleteNames"),a={},t=e.value.split(/\r?\n/).map((function(e){var a=e.trim();return/^[^\s]+$/.test(a)?a:""})).filter((function(e){return!(!e||Object.prototype.hasOwnProperty.call(a,e))&&(a[e]=!0)}));if(e.value=t.join("\n"),!t.length)return swal("An error occurred!","You have not entered any upload names.","error");page.postBulkDeleteUploads({all:!0,field:"name",values:t,cb:function(a){e.value=a.join("\n")}})}))},postBulkDeleteUploads:function(e){void 0===e&&(e={});var a=e.values.length,t=e.values.length+" upload"+(1===a?"":"s"),n="

    You won't be able to recover "+t.replace(/^(\d*)(.*)/,"$1$2")+"!

    ";e.all&&(n+="\n

    Warning: You may be nuking "+(1===a?"an upload":"some uploads")+" by "+(1===a?"another user":"other users")+"!

    ");var s=document.createElement("div");s.innerHTML=n,swal({title:"Are you sure?",content:s,icon:"warning",dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, nuke "+(1===e.values.length?"it":"them")+"!",closeModal:!1}}}).then((function(n){n&&axios.post("api/upload/bulkdelete",{field:e.fields,values:e.values}).then((function(n){if(n){if(!1===n.data.success)return"No token provided"===n.data.description?page.verifyToken(page.token):swal("An error occurred!",n.data.description,"error");var s=Array.isArray(n.data.failed)?n.data.failed:[];s.length===e.values.length?swal("An error occurred!","Unable to delete any of the "+t+".","error"):s.length&&s.length\n

    You are about to add '+t+" upload"+(1===t?"":"s")+' to an album.

    \n

    If an upload is already in an album, it will be moved.

    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n ',swal({icon:"warning",content:n,buttons:{cancel:!0,confirm:{text:"OK",closeModal:!1}}}).then((function(t){if(t){var n=parseInt(document.querySelector("#swalAlbum").value);if(isNaN(n))return swal("An error occurred!","You did not choose an album.","error");axios.post("api/albums/addfiles",{ids:e,albumid:n}).then((function(t){if(t)if(!1!==t.data.success){var s=e.length;t.data.failed&&t.data.failed.length&&(s-=t.data.failed.length);var i="upload"+(1===e.length?"":"s");if(!s)return swal("An error occurred!","Could not add the "+i+" to the album.","error");swal("Woohoo!","Successfully "+(n<0?"removed":"added")+" "+s+" "+i+" "+(n<0?"from":"to")+" the album.","success",{buttons:!1,timer:1500}),a(t.data.failed)}else"No token provided"===t.data.description?page.verifyToken(page.token):swal("An error occurred!",t.data.description,"error")})).catch(page.onAxiosError)}})),axios.get("api/albums").then((function(e){if(!1!==e.data.success){var a=document.querySelector("#swalAlbum");a&&(a.innerHTML+=e.data.albums.map((function(e){return'"})).join("\n"),a.getElementsByTagName("option")[1].innerHTML="Choose an album",a.removeAttribute("disabled"))}else"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error")})).catch(page.onAxiosError)},getAlbums:function(e){if(void 0===e&&(e={}),e&&e.all&&!page.permissions.moderator)return swal("An error occurred!","You cannot do this!","error");if(page.isSomethingLoading)return page.warnSomethingLoading();page.updateTrigger(e.trigger,"loading"),"number"!=typeof e.pageNum&&(e.pageNum=0);var a={};e.all&&(a.all="1");var t="api/albums/"+e.pageNum;axios.get(t,{headers:a}).then((function(a){if(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));var t=Math.ceil(a.data.count/25),n=a.data.albums;if(e.pageNum&&0===n.length)return page.updateTrigger(e.trigger),e.autoPage?(e.pageNum=t-1,page.getAlbums(e)):swal("An error occurred!","There are no more albums to populate page "+(e.pageNum+1)+".","error");page.currentView=e.all?"albumsAll":"albums",page.cache={};var s=a.data.users,i=a.data.homeDomain;e.pageNum<0&&(e.pageNum=Math.max(0,t+e.pageNum));var l=page.paginate(a.data.count,25,e.pageNum),o='\n
    \n '+('\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n ')+'\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n ',r='\n \n ",c=o.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),d=l.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),u=!1,p='\n

    Create new album

    \n
    \n
    \n
    \n \n
    \n

    Max length is '+page.albumTitleMaxLength+' characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is '+page.albumDescMaxLength+' characters.

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n ';page.dom.innerHTML="\n "+(e.all?"":p)+"\n "+l+"\n "+o+"\n "+r+'\n
    \n \n \n \n \n \n \n '+(e.all?"":"")+'\n \n \n \n \n \n \n \n \n
    IDNameUserUploadsCreated atPublic link
    \n
    \n '+r+"\n "+c+"\n "+d+"\n ";for(var g=document.querySelector("#table"),m=0;m\n "+b.id+"\n "+b.name+"\n "+(e.all?""+(b.userid&&s[b.userid]||"")+"":"")+"\n "+b.uploads+"\n "+b.prettyDate+"\n '+h+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',g.appendChild(w),page.checkboxes=g.querySelectorAll('.checkbox[data-action="select"]')}var y=document.querySelector("#selectAll");y&&!u&&(y.checked=!0,y.title="Unselect all"),page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),"albumsAll"===page.currentView&&(page.views[page.currentView].filters=e.filters),page.views[page.currentView].pageNum=n.length?e.pageNum:0}})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},editAlbum:function(e){var a=page.cache[e];if(a){var t=document.createElement("div");t.innerHTML='\n
    \n
    \n \n
    \n

    Max length is '+page.albumTitleMaxLength+' characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is '+page.albumDescMaxLength+" characters.

    \n
    \n "+("albumsAll"===page.currentView&&page.permissions.moderator?'
    \n
    \n \n
    \n
    ":"")+'\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n ',swal({title:"Edit album",icon:"info",content:t,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(t){if(t){var n={id:e,name:document.querySelector("#swalName").value.trim(),description:document.querySelector("#swalDescription").value.trim(),download:document.querySelector("#swalDownload").checked,public:document.querySelector("#swalPublic").checked,requestLink:document.querySelector("#swalRequestLink").checked};"albumsAll"===page.currentView&&page.permissions.moderator&&(n.enabled=document.querySelector("#swalEnabled").checked),axios.post("api/albums/edit",n).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");e.data.identifier?swal("Success!","The album's new identifier is: "+e.data.identifier+".","success"):e.data.name!==a.name?swal("Success!","The album was renamed to: "+e.data.name+".","success"):swal("Success!","The album was edited.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums(Object.assign(page.views[page.currentView],{autoPage:!0}))}})).catch(page.onAxiosError)}}))}},disableAlbum:function(e){swal({title:"Are you sure?",text:"This won't delete the uploads associated with the album!",icon:"warning",dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, disable it!",closeModal:!1},purge:{text:"Umm, delete the uploads too, please?",value:"purge",className:"swal-button--danger",closeModal:!1}}}).then((function(a){a&&axios.post("api/albums/disable",{id:e,purge:"purge"===a}).then((function(e){if(!1===e.data.success){var a=Array.isArray(e.data.failed)?e.data.failed:[];return"No token provided"===e.data.description?page.verifyToken(page.token):a.length?swal("An error occurred!","Unable to delete "+a.length+" of the album's upload"+(1===a.length?"":"s")+".","error"):swal("An error occurred!",e.data.description,"error")}swal("Deleted!","Your album has been disabled.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums(Object.assign(page.views[page.currentView],{autoPage:!0}))})).catch(page.onAxiosError)}))},submitAlbum:function(e){page.updateTrigger(e,"loading"),axios.post("api/albums",{name:document.querySelector("#albumName").value.trim(),description:document.querySelector("#albumDescription").value.trim()}).then((function(a){if(a){if(page.updateTrigger(e),!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):swal("An error occurred!",a.data.description,"error");swal("Woohoo!","Album was created successfully.","success",{buttons:!1,timer:1500}),page.getAlbumsSidebar(),page.getAlbums({pageNum:-1})}})).catch((function(a){page.updateTrigger(e),page.onAxiosError(a)}))},getAlbumsSidebar:function(){axios.get("api/albums",{headers:{sidebar:"1"}}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var a=e.data.albums,t=e.data.count,n=document.querySelector("#albumsContainer"),s=n.querySelectorAll("li > a");if(s.length){for(var i=0;ia.length){var d=document.createElement("li"),u=document.createElement("a");u.className="is-relative",u.innerHTML="...",u.title="You have "+t+" albums, but the sidebar can only list your first "+a.length+" albums.",u.addEventListener("click",(function(e){page.getAlbums({trigger:document.querySelector("#itemManageYourAlbums")})})),d.appendChild(u),n.appendChild(d)}}}})).catch(page.onAxiosError)},changeToken:function(e){void 0===e&&(e={}),page.dom.innerHTML='\n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#getNewToken").addEventListener("click",(function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();var a=e.currentTarget;page.updateTrigger(a,"loading"),axios.post("api/tokens/change").then((function(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):(page.updateTrigger(a),swal("An error occurred!",e.data.description,"error"));page.updateTrigger(a),swal({title:"Woohoo!",text:"Your token was successfully changed.",icon:"success",buttons:!1,timer:1500}).then((function(){axios.defaults.headers.common.token=e.data.token,localStorage[lsKeys.token]=e.data.token,page.token=e.data.token,page.changeToken()}))})).catch((function(e){page.updateTrigger(a),page.onAxiosError(e)}))}))},changePassword:function(e){void 0===e&&(e={}),page.dom.innerHTML='\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n ',page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),document.querySelector("#sendChangePassword").addEventListener("click",(function(e){if(page.isSomethingLoading)return page.warnSomethingLoading();page.dom.querySelector("form").checkValidity()&&(document.querySelector("#password").value===document.querySelector("#passwordConfirm").value?page.sendNewPassword(document.querySelector("#password").value,e.currentTarget):swal({title:"Password mismatch!",text:"Your passwords do not match, please try again.",icon:"error"}))}))},sendNewPassword:function(e,a){page.updateTrigger(a,"loading"),axios.post("api/password/change",{password:e}).then((function(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):(page.updateTrigger(a),swal("An error occurred!",e.data.description,"error"));page.updateTrigger(a),swal({title:"Woohoo!",text:"Your password was successfully changed.",icon:"success",buttons:!1,timer:1500}).then((function(){page.changePassword()}))})).catch((function(e){page.updateTrigger(a),page.onAxiosError(e)}))},getUsers:function(e){if(void 0===e&&(e={}),page.isSomethingLoading)return page.warnSomethingLoading();if(!page.permissions.admin)return swal("An error occurred!","You cannot do this!","error");page.updateTrigger(e.trigger,"loading"),"number"!=typeof e.pageNum&&(e.pageNum=0);var a="api/users/"+e.pageNum;axios.get(a).then((function(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));var t=Math.ceil(a.data.count/25),n=a.data.users;if(e.pageNum&&0===n.length)return page.updateTrigger(e.trigger),e.autoPage?(e.pageNum=t-1,page.getUsers(e)):swal("An error occurred!","There are no more users to populate page "+(e.pageNum+1)+".","error");page.currentView="users",page.cache={},e.pageNum<0&&(e.pageNum=Math.max(0,t+e.pageNum));var s=page.paginate(a.data.count,25,e.pageNum),i='\n
    \n '+('\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n ')+'\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n ',l='\n \n ',o=i.replace(/id="filters"/,'id="bFilters"').replace(/(data-action="filter-uploads")/,'$1 data-filtersid="bFilters"').replace(/id="jumpToPage"/,'id="bJumpToPage"').replace(/(data-action="jump-to-page")/g,'$1 data-jumpid="bJumpToPage"'),r=s.replace(/(data-action="page-ellipsis")/g,'$1 data-jumpid="bJumpToPage"'),c=!1;page.dom.innerHTML="\n "+s+"\n "+i+"\n "+l+'\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    UsernameUploadsUsageGroupRegistration dateLast token update
    \n
    \n '+l+"\n "+o+"\n "+r+"\n ";for(var d=document.querySelector("#table"),u=0;u\n "+p.username+"\n "+p.uploads+"\n "+page.getPrettyBytes(p.usage)+"\n "+m+"\n "+f+"\n "+w+'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',d.appendChild(y),page.checkboxes=d.querySelectorAll('.checkbox[data-action="select"]')}var k=document.querySelector("#selectAll");k&&!c&&(k.checked=!0,k.title="Unselect all"),page.fadeAndScroll(),page.updateTrigger(e.trigger,"active"),page.views[page.currentView].pageNum=n.length?e.pageNum:0})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))},createUser:function(){var e=Object.keys(page.permissions).map((function(e,a,t){return'"})).join("\n"),a=document.createElement("div");a.innerHTML='\n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n ",swal({title:"Create new user",icon:"info",content:a,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(e){e&&axios.post("api/users/create",{username:document.querySelector("#swalUsername").value,password:document.querySelector("#swalPassword").value,group:document.querySelector("#swalGroup").value}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var a=document.createElement("div");a.innerHTML="\n

    Username: "+e.data.username+"

    \n

    Password: "+e.data.password+"

    \n

    User group: "+e.data.group+"

    \n ",swal({title:"Created a new user!",icon:"success",content:a}),page.getUsers(Object.assign(page.views.users,{pageNum:-1}))}})).catch(page.onAxiosError)}))},editUser:function(e){var a=page.cache[e];if(a){var t=Object.keys(page.permissions).map((function(e,t,n){return'"})).join("\n"),n=document.createElement("div");n.innerHTML='\n
    \n

    User ID: '+e+'

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n ',swal({title:"Edit user",icon:"info",content:n,buttons:{cancel:!0,confirm:{closeModal:!1}}}).then((function(t){t&&axios.post("api/users/edit",{id:e,username:document.querySelector("#swalUsername").value,group:document.querySelector("#swalGroup").value,enabled:document.querySelector("#swalEnabled").checked,resetPassword:document.querySelector("#swalResetPassword").checked}).then((function(e){if(e){if(!1===e.data.success)return"No token provided"===e.data.description?page.verifyToken(page.token):swal("An error occurred!",e.data.description,"error");var t=!0,n=document.createElement("div"),s=a.username;e.data.update.username!==a.username&&(n.innerHTML+="

    "+a.username+" was renamed into: "+e.data.update.username+".

    ",t=!1,s=e.data.update.username),e.data.update.password&&(n.innerHTML+="\n

    "+s+"'s new password is:

    \n

    "+e.data.update.password+"

    \n ",t=!1),e.data.update.enabled!==a.enabled&&(n.innerHTML+="

    "+s+" has been "+(e.data.update.enabled?"enabled":"disabled")+"!

    "),n.innerHTML||(n.innerHTML="

    "+s+" was edited!

    "),swal({title:"Success!",icon:"success",content:n,buttons:!t,timer:t?1500:null}),page.getUsers(page.views.users)}})).catch(page.onAxiosError)}))}},disableUser:function(e){var a=page.cache[e];if(a&&a.enabled){var t=document.createElement("div");t.innerHTML="\n

    You will be disabling a user named "+page.cache[e].username+".

    \n

    Their files will remain.

    \n ",swal({title:"Are you sure?",icon:"warning",content:t,dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, disable them!",closeModal:!1}}}).then((function(a){a&&axios.post("api/users/disable",{id:e}).then((function(a){if(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):swal("An error occurred!",a.data.description,"error");swal("Success!",page.cache[e].username+" has been disabled.","success",{buttons:!1,timer:1500}),page.getUsers(page.views.users)}})).catch(page.onAxiosError)}))}},deleteUser:function(e){if(page.cache[e]){var a=document.createElement("div");a.innerHTML="\n

    You will be deleting a user named "+page.cache[e].username+".

    \n

    Their files will remain, unless you choose otherwise.

    \n ",swal({title:"Are you sure?",icon:"warning",content:a,dangerMode:!0,buttons:{cancel:!0,confirm:{text:"Yes, delete it!",closeModal:!1},purge:{text:"Yes, and the uploads too!",value:"purge",className:"swal-button--danger",closeModal:!1}}}).then((function(a){a&&axios.post("api/users/delete",{id:e,purge:"purge"===a}).then((function(a){if(a){if(!1===a.data.success){var t=Array.isArray(a.data.failed)?a.data.failed:[];return"No token provided"===a.data.description?page.verifyToken(page.token):t.length?swal("An error occurred!","Unable to delete "+t.length+" of the user's upload"+(1===t.length?"":"s")+".","error"):swal("An error occurred!",a.data.description,"error")}swal("Success!",page.cache[e].username+" has been deleted.","success",{buttons:!1,timer:1500}),page.getUsers(Object.assign(page.views.users,{autoPage:!0}))}})).catch(page.onAxiosError)}))}},paginate:function(e,a,t){t+=1;var n=Math.ceil(e/a),s="",i=function(e,a){for(var n=e;n<=a;++n)s+='
  • '+n+"
  • "},l=function(){s+='\n
  • 1
  • \n
  • \n '},o=function(){s+='\n
  • \n
  • '+n+"
  • \n "};return 7>=n?i(1,n):t<6?(i(1,6),o()):t>n-6+1?(l(),i(n-6+1,n)):(l(),i(t-3+1,t+3-1),o()),'\n \n "},getStatistics:function(e){if(void 0===e&&(e={}),!page.permissions.admin)return swal("An error occurred!","You cannot do this!","error");if(page.isSomethingLoading)return page.warnSomethingLoading();page.updateTrigger(e.trigger,"loading");axios.get("api/stats").then((function(a){if(!1===a.data.success)return"No token provided"===a.data.description?page.verifyToken(page.token):(page.updateTrigger(e.trigger),swal("An error occurred!",a.data.description,"error"));for(var t="",n=Object.keys(a.data.stats),s=0;s\n '+o[r].replace(/([A-Z])/g," $1").replace(/(^|\s)(cpu|db|zip)/gi,(function(e){return e.toUpperCase()}))+"\n "+d+"\n \n "}}catch(e){i="\n \n Error parsing response. Try again?\n \n \n ",page.onError(e)}else i+="\n \n Generating, please try again later…\n \n \n ";t+='\n
    \n \n \n \n \n \n \n \n \n "+i+"\n \n
    '+n[s]+"
    \n
    \n "}Array.isArray(a.data.hrtime)&&(t+='\n
    \n
    \n Time taken: '+a.data.hrtime[0]+"s "+Math.ceil(a.data.hrtime[1]/1e6)+"ms.\n
    \n
    \n "),page.dom.innerHTML=t,page.fadeAndScroll(),page.updateTrigger(e.trigger,"active")})).catch((function(a){page.updateTrigger(e.trigger),page.onAxiosError(a)}))}};window.addEventListener("DOMContentLoaded",(function(){"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,a){"use strict";var t=arguments;if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),s=1;s {\n document.querySelector('#loader').classList.add('is-hidden')\n page.section.classList.remove('is-hidden')\n}\n\n// Handler for regular JS errors\npage.onError = error => {\n console.error(error)\n\n const content = document.createElement('div')\n content.innerHTML = `${error.toString()}`\n return swal({\n title: 'An error occurred!',\n icon: 'error',\n content\n })\n}\n\n// Handler for Axios errors\npage.onAxiosError = error => {\n console.error(error)\n\n // Better Cloudflare errors\n const cloudflareErrors = {\n 520: 'Unknown Error',\n 521: 'Web Server Is Down',\n 522: 'Connection Timed Out',\n 523: 'Origin Is Unreachable',\n 524: 'A Timeout Occurred',\n 525: 'SSL Handshake Failed',\n 526: 'Invalid SSL Certificate',\n 527: 'Railgun Error',\n 530: 'Origin DNS Error'\n }\n\n const statusText = cloudflareErrors[error.response.status] || error.response.statusText\n const description = error.response.data && error.response.data.description\n ? error.response.data.description\n : 'There was an error with the request, please check the console for more information.'\n\n return swal(`${error.response.status} ${statusText}`, description, 'error')\n}\n\npage.preparePage = () => {\n if (page.token)\n page.verifyToken(page.token, true)\n else\n window.location = 'auth'\n}\n\npage.checkClientVersion = apiVersion => {\n const self = document.querySelector('#mainScript')\n const match = self.src.match(/\\?_=(\\d+)$/)\n if (match && match[1] && match[1] !== apiVersion)\n return swal({\n title: 'Update detected!',\n text: 'Client assets have been updated. Reload to display the latest version?',\n icon: 'info',\n buttons: {\n confirm: {\n text: 'Reload',\n closeModal: false\n }\n }\n }).then(() => {\n window.location.reload()\n })\n}\n\npage.verifyToken = (token, reloadOnError) => {\n axios.post('api/tokens/verify', { token }).then(response => {\n if (response.data.success === false)\n return swal({\n title: 'An error occurred!',\n text: response.data.description,\n icon: 'error'\n }).then(() => {\n if (!reloadOnError) return\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n })\n\n axios.defaults.headers.common.token = token\n localStorage[lsKeys.token] = token\n\n if (response.data.version)\n page.checkClientVersion(response.data.version)\n\n page.token = token\n page.username = response.data.username\n page.permissions = response.data.permissions\n page.prepareDashboard()\n }).catch(page.onAxiosError)\n}\n\npage.prepareDashboard = () => {\n page.section = document.querySelector('#dashboard')\n page.dom = page.section.querySelector('#page')\n\n // Capture all click events\n page.dom.addEventListener('click', page.domClick, true)\n\n // Capture all submit events\n page.dom.addEventListener('submit', event => {\n // Prevent default if necessary\n if (event.target && event.target.classList.contains('prevent-default'))\n return event.preventDefault()\n }, true)\n\n page.menusContainer = document.querySelector('#menu')\n\n // All item menus in the sidebar\n const itemMenus = [\n { selector: '#itemUploads', onclick: page.getUploads },\n { selector: '#itemDeleteUploadsByNames', onclick: page.deleteUploadsByNames },\n { selector: '#itemManageYourAlbums', onclick: page.getAlbums },\n { selector: '#itemManageToken', onclick: page.changeToken },\n { selector: '#itemChangePassword', onclick: page.changePassword },\n { selector: '#itemLogout', onclick: page.logout },\n { selector: '#itemManageUploads', onclick: page.getUploads, params: { all: true }, group: 'moderator' },\n { selector: '#itemManageAlbums', onclick: page.getAlbums, params: { all: true }, group: 'moderator' },\n { selector: '#itemStatistics', onclick: page.getStatistics, group: 'admin' },\n { selector: '#itemManageUsers', onclick: page.getUsers, group: 'admin' }\n ]\n\n for (let i = 0; i < itemMenus.length; i++) {\n // Skip item menu if not enough permission\n if (itemMenus[i].group && !page.permissions[itemMenus[i].group])\n continue\n\n // Add onclick event listener\n const item = document.querySelector(itemMenus[i].selector)\n item.addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n // eslint-disable-next-line compat/compat\n itemMenus[i].onclick.call(null, Object.assign(itemMenus[i].params || {}, {\n trigger: event.currentTarget\n }))\n })\n\n item.classList.remove('is-hidden')\n page.menus.push(item)\n }\n\n // If at least a moderator, show administration section\n if (page.permissions.moderator) {\n document.querySelector('#itemLabelAdmin').classList.remove('is-hidden')\n document.querySelector('#itemListAdmin').classList.remove('is-hidden')\n }\n\n // Update text of logout button\n document.querySelector('#itemLogout').innerHTML = `Logout ( ${page.username} )`\n\n // Finally display dashboard\n page.unhide()\n\n // Load albums sidebar\n page.getAlbumsSidebar()\n\n if (typeof page.prepareShareX === 'function')\n page.prepareShareX()\n}\n\npage.logout = params => {\n page.updateTrigger(params.trigger, 'active')\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n}\n\npage.warnSomethingLoading = () => {\n swal('Please wait!', 'Something else is still loading\\u2026', 'warning', {\n buttons: false,\n timer: 3000\n })\n}\n\npage.updateTrigger = (trigger, newState) => {\n if (!trigger) return\n\n // Disable menus container and pagination when loading\n if (newState === 'loading') {\n page.isSomethingLoading = true\n page.section.classList.add('is-loading')\n } else {\n page.section.classList.remove('is-loading')\n page.isSomethingLoading = false\n }\n\n if (newState === 'loading') {\n trigger.classList.add('is-loading')\n } else if (newState === 'active') {\n if (trigger.parentNode.tagName === 'LI' && !trigger.className.includes('pagination-link')) {\n for (let i = 0; i < page.menus.length; i++)\n page.menus[i].classList.remove('is-active')\n trigger.classList.remove('is-loading')\n trigger.classList.add('is-active')\n } else {\n trigger.classList.remove('is-loading')\n }\n } else {\n trigger.classList.remove('is-loading')\n trigger.classList.remove('is-active')\n }\n}\n\npage.getItemID = element => {\n // This expects the item's parent to have the item's ID\n let parent = element.parentNode\n // If the element is part of a set of controls, use the container's parent instead\n if (element.parentNode.classList.contains('controls')) parent = parent.parentNode\n return parseInt(parent.dataset.id)\n}\n\npage.domClick = event => {\n // We are processing clicks this way to avoid using \"onclick\" attribute\n // Apparently we will need to use \"unsafe-inline\" for \"script-src\" directive\n // of Content Security Policy (CSP), if we want to use \"onclick\" attribute\n // Though I think that only applies to some browsers (?)\n // Of course it wouldn't have mattered if we didn't use CSP to begin with\n // Anyway, I personally would rather not use \"onclick\" attribute\n let element = event.target\n if (!element) return\n\n // Delegate click events to their A or BUTTON parents\n if (['I'].includes(element.tagName) && ['SPAN'].includes(element.parentNode.tagName))\n element = element.parentNode\n if (['SPAN'].includes(element.tagName) && ['A', 'BUTTON'].includes(element.parentNode.tagName))\n element = element.parentNode\n\n // Skip elements that have no action data\n if (!element.dataset || !element.dataset.action) return\n\n // Skip disabled elements\n if (element.hasAttribute('disabled')) return\n\n event.stopPropagation() // maybe necessary\n const id = page.getItemID(element)\n const action = element.dataset.action\n\n switch (action) {\n // Uploads\n case 'view-list':\n return page.setUploadsView('list', element)\n case 'view-thumbs':\n return page.setUploadsView('thumbs', element)\n case 'toggle-original-names':\n return page.toggleOriginalNames(element)\n case 'add-to-album':\n return page.addToAlbum(id)\n case 'delete-upload':\n return page.deleteUpload(id)\n case 'add-selected-uploads-to-album':\n return page.addSelectedUploadsToAlbum()\n case 'bulk-delete-uploads':\n return page.bulkDeleteUploads()\n case 'display-preview':\n return page.displayPreview(id)\n // Manage uploads\n case 'upload-filters-help':\n return page.uploadFiltersHelp(element)\n case 'filter-uploads':\n return page.filterUploads(element)\n // Manage your albums\n case 'submit-album':\n return page.submitAlbum(element)\n case 'edit-album':\n return page.editAlbum(id)\n case 'disable-album':\n return page.disableAlbum(id)\n case 'view-album-uploads':\n return page.viewAlbumUploads(id, element)\n // Manage users\n case 'create-user':\n return page.createUser()\n case 'edit-user':\n return page.editUser(id)\n case 'disable-user':\n return page.disableUser(id)\n case 'delete-user':\n return page.deleteUser(id)\n case 'view-user-uploads':\n return page.viewUserUploads(id, element)\n // Others\n case 'get-new-token':\n return page.getNewToken(element)\n // Uploads & Users\n case 'clear-selection':\n return page.clearSelection()\n case 'select':\n return page.select(element, event)\n case 'select-all':\n return page.selectAll(element)\n case 'page-ellipsis':\n return page.focusJumpToPage(element)\n case 'page-prev':\n case 'page-next':\n case 'page-goto':\n case 'jump-to-page':\n return page.switchPage(action, element)\n }\n}\n\npage.fadeAndScroll = disableFading => {\n if (page.fadingIn) {\n clearTimeout(page.fadingIn)\n page.dom.classList.remove('fade-in')\n }\n\n if (!disableFading) {\n page.dom.classList.add('fade-in')\n page.fadingIn = setTimeout(() => {\n page.dom.classList.remove('fade-in')\n }, 500)\n }\n\n page.dom.scrollIntoView({\n behavior: disableFading ? 'auto' : 'smooth',\n block: 'start',\n inline: 'nearest'\n })\n}\n\npage.getByView = (view, get) => {\n switch (view) {\n case 'uploads':\n case 'uploadsAll':\n return {\n type: 'uploads',\n func: page.getUploads\n }[get]\n case 'albums':\n case 'albumsAll':\n return {\n type: 'albums',\n func: page.getAlbums\n }[get]\n case 'users':\n return {\n type: 'users',\n func: page.getUsers\n }[get]\n default:\n return null\n }\n}\n\npage.switchPage = (action, element) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n // eslint-disable-next-line compat/compat\n const params = Object.assign(page.views[page.currentView], {\n trigger: element\n })\n\n const func = page.getByView(page.currentView, 'func')\n\n switch (action) {\n case 'page-prev':\n params.pageNum = page.views[page.currentView].pageNum - 1\n if (params.pageNum < 0)\n return swal('An error occurred!', 'This is already the first page.', 'error')\n return func(params)\n case 'page-next':\n params.pageNum = page.views[page.currentView].pageNum + 1\n return func(params)\n case 'page-goto':\n params.pageNum = parseInt(element.dataset.goto)\n return func(params)\n case 'jump-to-page': {\n const jumpToPage = document.querySelector(`#${element.dataset.jumpid || 'jumpToPage'}`)\n if (!jumpToPage.checkValidity()) return\n const parsed = parseInt(jumpToPage.value)\n params.pageNum = isNaN(parsed) ? 0 : (parsed - 1)\n if (params.pageNum < 0) params.pageNum = 0\n return func(params)\n }\n }\n}\n\npage.focusJumpToPage = element => {\n const jumpToPage = document.querySelector(`#${element.dataset.jumpid || 'jumpToPage'}`)\n if (!jumpToPage) return\n jumpToPage.focus()\n jumpToPage.select()\n}\n\npage.getUploads = (params = {}) => {\n if (params && params.all && !page.permissions.moderator)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number' || params.pageNum < 0)\n params.pageNum = 0\n\n const url = params.album !== undefined\n ? `api/album/${params.album}/${params.pageNum}`\n : `api/uploads/${params.pageNum}`\n\n const headers = {}\n\n if (params.all)\n headers.all = '1'\n\n if (params.filters) {\n headers.filters = params.filters\n\n // Send client timezone offset if properly using date: and/or :expiry filters\n // Server will pretend client is on UTC if unset\n if (/(^|\\s)(date|expiry):[\\d\"]/.test(params.filters))\n headers.minoffset = new Date().getTimezoneOffset()\n }\n\n axios.get(url, { headers }).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const files = response.data.files\n if (params.pageNum && (files.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getUploads(params)\n } else {\n return swal('An error occurred!', `There are no more uploads to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = params.all ? 'uploadsAll' : 'uploads'\n page.cache = {}\n\n const albums = response.data.albums\n const users = response.data.users\n const basedomain = response.data.basedomain\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n const showOriginalNames = page.views[page.currentView].originalNames\n const hasExpiryDateColumn = files.some(file => {\n return file.expirydate !== undefined\n })\n\n for (let i = 0; i < files.length; i++) {\n // Build full URLs\n files[i].file = `${basedomain}/${files[i].name}`\n if (files[i].thumb)\n files[i].thumb = `${basedomain}/${files[i].thumb}`\n\n // Determine types\n files[i].type = 'other'\n const exec = /.[\\w]+(\\?|$)/.exec(files[i].file)\n const extname = exec && exec[0] ? exec[0].toLowerCase() : null\n if (page.imageExts.includes(extname))\n files[i].type = 'picture'\n else if (page.videoExts.includes(extname))\n files[i].type = 'video'\n\n // Cache bare minimum data for thumbnails viewer\n page.cache[files[i].id] = {\n name: files[i].name,\n original: files[i].original,\n thumb: files[i].thumb,\n file: files[i].file,\n type: files[i].type\n }\n\n // Prettify\n files[i].prettyBytes = page.getPrettyBytes(parseInt(files[i].size))\n files[i].prettyDate = page.getPrettyDate(new Date(files[i].timestamp * 1000))\n\n if (hasExpiryDateColumn)\n files[i].prettyExpiryDate = files[i].expirydate\n ? page.getPrettyDate(new Date(files[i].expirydate * 1000))\n : null\n\n // Update selected status\n files[i].selected = page.selected[page.currentView].includes(files[i].id)\n if (!files[i].selected) unselected = true\n\n // Appendix (display album or user)\n if (params.all)\n files[i].appendix = files[i].userid\n ? users[files[i].userid] || ''\n : ''\n else if (params.album === undefined)\n files[i].appendix = files[i].albumid\n ? albums[files[i].albumid] || ''\n : ''\n }\n\n if (page.views[page.currentView].type === 'thumbs') {\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < files.length; i++) {\n const upload = files[i]\n const div = document.createElement('div')\n div.className = 'image-container column'\n div.dataset.id = upload.id\n\n if (upload.thumb !== undefined)\n div.innerHTML = `\"${upload.name}\"`\n else\n div.innerHTML = `

    ${upload.extname || 'N/A'}

    `\n\n div.innerHTML += `\n \n
    \n ${upload.thumb ? `\n \n \n \n \n ` : ''}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n

    ${upload.name}

    \n ${showOriginalNames ? `

    ${upload.original}

    ` : ''}\n

    ${upload.appendix ? `${upload.appendix} – ` : ''}${upload.prettyBytes}

    \n ${hasExpiryDateColumn && upload.prettyExpiryDate ? `\n

    EXP: ${upload.prettyExpiryDate}

    ` : ''}\n
    \n `\n\n table.appendChild(div)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n } else {\n const allAlbums = params.all && params.filters && params.filters.includes('albumid:')\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n ${showOriginalNames ? '' : ''}\n ${params.album === undefined ? `` : ''}\n ${allAlbums ? '' : ''}\n \n ${params.all ? '' : ''}\n \n ${hasExpiryDateColumn ? '' : ''}\n \n \n \n \n \n
    File nameOriginal nameUser' : 'albumid\">Album'}AlbumSizeIPUpload dateExpiry date
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < files.length; i++) {\n const upload = files[i]\n const tr = document.createElement('tr')\n tr.dataset.id = upload.id\n tr.innerHTML = `\n \n ${upload.name}\n ${showOriginalNames ? `${upload.original}` : ''}\n ${params.album === undefined ? `${upload.appendix}` : ''}\n ${allAlbums ? `${upload.albumid ? (albums[upload.albumid] || '') : ''}` : ''}\n ${upload.prettyBytes}\n ${params.all ? `${upload.ip || ''}` : ''}\n ${upload.prettyDate}\n ${hasExpiryDateColumn ? `${upload.prettyExpiryDate || '-'}` : ''}\n \n \n \n \n \n \n \n \n \n \n \n ${params.all ? '' : `\n \n \n \n \n `}\n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected && files.length) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n if (page.views[page.currentView].type === 'thumbs') {\n page.fadeAndScroll(true)\n page.lazyLoad.update()\n } else {\n page.fadeAndScroll()\n }\n\n page.updateTrigger(params.trigger, 'active')\n\n if (page.currentView === 'uploads')\n page.views.uploads.album = params.album\n page.views[page.currentView].filters = params.filters\n page.views[page.currentView].pageNum = files.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.setUploadsView = (view, element) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (view === 'list') {\n delete localStorage[lsKeys.viewType[page.currentView]]\n page.views[page.currentView].type = undefined\n } else {\n localStorage[lsKeys.viewType[page.currentView]] = view\n page.views[page.currentView].type = view\n }\n\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n trigger: element\n }))\n}\n\npage.toggleOriginalNames = element => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (page.views[page.currentView].originalNames) {\n delete localStorage[lsKeys.originalNames[page.currentView]]\n page.views[page.currentView].originalNames = false\n } else {\n localStorage[lsKeys.originalNames[page.currentView]] = '1'\n page.views[page.currentView].originalNames = true\n }\n\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n trigger: element\n }))\n}\n\npage.displayPreview = id => {\n const file = page.cache[id]\n if (!file.thumb) return\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n

    \n

    ${file.name}
    \n
    ${file.original}
    \n

    \n

    \n \n

    \n
    \n `\n\n if (file.file) {\n const exec = /.[\\w]+(\\?|$)/.exec(file.file)\n const extname = exec && exec[0] ? exec[0].toLowerCase() : null\n const isimage = page.imageExts.includes(extname)\n const isvideo = !isimage && page.videoExts.includes(extname)\n\n if (isimage || isvideo) {\n div.innerHTML += `\n \n `\n\n div.querySelector('#swalOriginal').addEventListener('click', event => {\n const trigger = event.currentTarget\n if (trigger.classList.contains('is-danger'))\n return\n\n trigger.classList.add('is-loading')\n const thumb = div.querySelector('#swalThumb')\n\n if (isimage) {\n thumb.src = file.file\n thumb.onload = () => {\n trigger.classList.add('is-hidden')\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n }\n thumb.onerror = event => {\n event.currentTarget.classList.add('is-hidden')\n trigger.className = 'button is-danger is-fullwidth'\n trigger.innerHTML = `\n \n \n \n Unable to load original\n `\n }\n } else if (isvideo) {\n thumb.classList.add('is-hidden')\n const video = document.createElement('video')\n video.id = 'swalVideo'\n video.controls = true\n video.autoplay = true\n video.src = file.file\n thumb.insertAdjacentElement('afterend', video)\n\n trigger.classList.add('is-hidden')\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n }\n })\n }\n }\n\n return swal({\n content: div,\n buttons: false\n }).then(() => {\n // Destroy video, if necessary\n const video = div.querySelector('#swalVideo')\n if (video) video.remove()\n\n // Restore modal size\n document.body.querySelector('.swal-overlay .swal-modal').classList.remove('is-expanded')\n })\n}\n\npage.selectAll = element => {\n for (let i = 0; i < page.checkboxes.length; i++) {\n const id = page.getItemID(page.checkboxes[i])\n if (isNaN(id)) continue\n if (page.checkboxes[i].checked !== element.checked) {\n page.checkboxes[i].checked = element.checked\n if (page.checkboxes[i].checked)\n page.selected[page.currentView].push(id)\n else\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n }\n }\n\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n element.title = element.checked ? 'Unselect all' : 'Select all'\n}\n\npage.selectInBetween = (element, lastElement) => {\n const thisIndex = parseInt(element.dataset.index)\n const lastIndex = parseInt(lastElement.dataset.index)\n\n const distance = Math.abs(thisIndex - lastIndex)\n if (distance < 2)\n return\n\n for (let i = 0; i < page.checkboxes.length; i++)\n if ((thisIndex > lastIndex && i > lastIndex && i < thisIndex) ||\n (thisIndex < lastIndex && i > thisIndex && i < lastIndex)) {\n // Check or uncheck depending on the state of the initial checkbox\n const checked = page.checkboxes[i].checked = lastElement.checked\n const id = page.getItemID(page.checkboxes[i])\n if (!page.selected[page.currentView].includes(id) && checked)\n page.selected[page.currentView].push(id)\n else if (page.selected[page.currentView].includes(id) && !checked)\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n }\n}\n\npage.select = (element, event) => {\n const id = page.getItemID(element)\n if (isNaN(id)) return\n\n if (event.shiftKey && page.lastSelected) {\n page.selectInBetween(element, page.lastSelected)\n // Check or uncheck depending on the state of the initial checkbox\n element.checked = page.lastSelected.checked\n } else {\n page.lastSelected = element\n }\n\n if (!page.selected[page.currentView].includes(id) && element.checked)\n page.selected[page.currentView].push(id)\n else if (page.selected[page.currentView].includes(id) && !element.checked)\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n}\n\npage.clearSelection = () => {\n const selected = page.selected[page.currentView]\n const type = page.getByView(page.currentView, 'type')\n const count = selected.length\n if (!count)\n return swal('An error occurred!', `You have not selected any ${type}.`, 'error')\n\n const suffix = count === 1 ? type.substring(0, type.length - 1) : type\n return swal({\n title: 'Are you sure?',\n text: `You are going to unselect ${count} ${suffix}.`,\n buttons: true\n }).then(proceed => {\n if (!proceed) return\n\n const checkboxes = page.checkboxes\n for (let i = 0; i < checkboxes.length; i++)\n if (checkboxes[i].checked)\n checkboxes[i].checked = false\n\n page.selected[page.currentView] = []\n delete localStorage[lsKeys.selected[page.currentView]]\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll) selectAll.checked = false\n\n return swal('Cleared selection!', `Unselected ${count} ${suffix}.`, 'success')\n })\n}\n\npage.uploadFiltersHelp = element => {\n const all = Boolean(element.dataset.all)\n const content = document.createElement('div')\n content.style = 'text-align: left'\n content.innerHTML = `${all ? `\n There are 2 filter keys, namely user (username) and ip.\n These keys can be specified more than once.\n For usernames with whitespaces, wrap them with double quotes (\").\n Special cases such as uploads by non-registered users or have no IPs respectively, use user:- or ip:-.\n\n To exclude certain users/ips while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special cases mentioned above (i.e. -user:- or -ip:-).\n\n If you know the ID of a user's album, you can list its uploads with albumid key.\n Negation sign works for this key as well.\n ` : `\n There is only 1 filter key, namely albumid.\n This key can be specified more than once.\n Special case such as uploads with no albums, use albumid:-.\n\n To exclude certain albums while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special case mentioned above (i.e. -albumid:-).\n `}\n There are 2 range keys: date (upload date) and expiry (expiry date).\n Their format is: \"YYYY/MM/DD HH:MM:SS-YYYY/MM/DD HH:MM:SS\" (\"from\" date and \"to\" date respectively).\n You may specify only one of the dates.\n If \"to\" date is missing, 'now' will be used. If \"from\" date is missing, 'beginning of time' will be used.\n If any of the subsequent date or time units are not specified, their first value will be used (e.g. January for month, 1 for day, and so on).\n If only time is specified, today's date will be used.\n If you do not need to specify both date and time, you may omit the double quotes.\n In conclusion, the following examples are all valid: date:\"2020/01/01 01:23-2018/01/01 06\", expiry:-2020/05, date:12:34:56.\n These keys can only be specified once each.\n\n Timezone? Feel free to query the dates with your own timezone.\n API requests to the filter endpoint will attach your browser's timezone offset, so the server will automatically calculate timezone differences.\n\n Matches can also be sorted with sort keys.\n Their formats are: sort:columnName[:d[escending]], where :d[escending] is an optional tag to set the direction to descending.\n This key must be used with internal column names used in the database (id, ${all ? 'userid' : 'albumid'}, and so on),\n but there are 2 shortcuts available: date for timestamp column and expiry for expirydate column.\n This key can also be specified more than once, where their order will decide the sorting steps.\n\n Finally, there are type-is keys to refine by types.\n You can use is:image and is:video to list images and videos respectively.\n This will only use image/video extensions whose thumbnails can be generated by the safe.\n Negation sign works for this key as well.\n Mixing inclusion and exclusion is not allowed (i.e. is:image -is:video, since the second key is redundant).\n\n Any leftover keywords which do not use keys (non-keyed keywords) will be matched against the matches' file names.\n Excluding certain keywords is also supported by adding negation sign before the keywords.\n\n Internal steps:\n ${all ? `- Query uploads passing ALL exclusion filter keys OR matching ANY filter keys, if any.\n - Refine matches` : '- Filter uploads'} using date key, if any.\n - Refine matches using expiry key, if any.\n - Refine matches using type-is keys, if any.\n - Refine matches using ANY non-keyed keywords, if any.\n - Filter matches using ALL exclusion non-keyed keywords, if any.\n - Sort matches using sorting keys, if any.\n\n Examples:\n ${all ? `- Uploads from users named \"demo\" AND/OR \"John Doe\" AND/OR non-registered users:\n user:demo user:\"John Doe\" user:-\n - ALL uploads, but NOT the ones from user named \"demo\" AND \"John Doe\":\n -user:demo -user:\"John Doe\"\n - Uploads from IP \"127.0.0.1\" AND which file names match \"*.rar\" OR \"*.zip\":\n ip:127.0.0.1 *.rar *.zip\n ` : ''}- Uploads without albums:\n albumid:-\n - ALL uploads, but NOT the ones from album with ID 69:\n -albumid:69\n - Uploads uploaded since \"1 June 2019 00:00:00\":\n date:2019/06\n - Uploads uploaded between \"7 April 2020 12:00:00\" and \"7 April 2020 23:59:59\":\n date:\"2020/04/07 12-2020/04/07 23:59:59\"\n - Uploads uploaded before \"5 February 2020 00:00:00\":\n date:-2020/02/05\n - Uploads which file names match \"*.gz\" but NOT \"*.tar.gz\":\n *.gz -*.tar.gz\n - Sort matches by \"size\" column in ascending and descending order respectively:\n ${all ? 'user:\"John Doe\"' : '*.txt'} sort:size\n *.mp4 ${all ? 'user:- ' : ''}sort:size:d\n ${!page.permissions.moderator ? `\n Notice: Regular users may face some limitations in the amount of keys that can be used at a time.\n ` : ''}\n Friendly reminder: This window can be scrolled up!\n `.trim().replace(/^\\s*/g, '').replace(/\\n/g, '
    ')\n\n swal({ content }).then(() => {\n // Restore modal size\n document.body.querySelector('.swal-overlay .swal-modal').classList.remove('is-expanded')\n })\n\n // Expand modal size\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n}\n\npage.filterUploads = element => {\n const filters = document.querySelector(`#${element.dataset.filtersid || 'filters'}`).value\n .trim()\n .replace(/\\t/g, ' ')\n .replace(/(^|\\s)((albumid|ip|user|date|expiry|is|sort|orderby):)\\s+/g, '$2')\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n filters,\n pageNum: 0,\n trigger: element\n }))\n}\n\npage.viewUserUploads = (id, element) => {\n const user = page.cache[id]\n if (!user) return\n element.classList.add('is-loading')\n // Wrap username in quotes if it contains whitespaces\n const username = user.username.includes(' ')\n ? `\"${user.username}\"`\n : user.username\n page.getUploads({\n all: true,\n filters: `user:${username}`,\n trigger: document.querySelector('#itemManageUploads')\n })\n}\n\npage.viewAlbumUploads = (id, element) => {\n if (!page.cache[id]) return\n element.classList.add('is-loading')\n // eslint-disable-next-line compat/compat\n const all = page.currentView === 'albumsAll' && page.permissions.moderator\n page.getUploads({\n all,\n filters: `albumid:${id}`,\n trigger: all\n ? document.querySelector('#itemManageUploads')\n : document.querySelector('#itemUploads')\n })\n}\n\npage.deleteUpload = id => {\n page.postBulkDeleteUploads({\n all: page.currentView === 'uploadsAll',\n field: 'id',\n values: [id],\n cb (failed) {\n // Remove from remembered checkboxes if necessary\n if (!failed.length && page.selected[page.currentView].includes(id))\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n // Reload upload list\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }\n })\n}\n\npage.bulkDeleteUploads = () => {\n const count = page.selected[page.currentView].length\n if (!count)\n return swal('An error occurred!', 'You have not selected any uploads.', 'error')\n\n page.postBulkDeleteUploads({\n all: page.currentView === 'uploadsAll',\n field: 'id',\n values: page.selected[page.currentView],\n cb (failed) {\n // Update state of checkboxes\n if (failed.length)\n page.selected[page.currentView] = page.selected[page.currentView]\n .filter(id => {\n return failed.includes(id)\n })\n else\n page.selected[page.currentView] = []\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n // Reload uploads list\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }\n })\n}\n\npage.deleteUploadsByNames = (params = {}) => {\n let appendix = ''\n if (page.permissions.moderator)\n appendix = '
    Hint: You can use this feature to delete uploads by other users.'\n\n page.dom.innerHTML = `\n
    \n
    \n \n
    \n \n
    \n

    Separate each entry with a new line.${appendix}

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#submitBulkDelete').addEventListener('click', () => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n const textArea = document.querySelector('#bulkDeleteNames')\n\n // Clean up\n const seen = {}\n const names = textArea.value\n .split(/\\r?\\n/)\n .map(name => {\n const trimmed = name.trim()\n return /^[^\\s]+$/.test(trimmed)\n ? trimmed\n : ''\n })\n .filter(name => {\n // Filter out invalid and duplicate names\n return (!name || Object.prototype.hasOwnProperty.call(seen, name))\n ? false\n : (seen[name] = true)\n })\n\n // Update textarea with cleaned names\n textArea.value = names.join('\\n')\n\n if (!names.length)\n return swal('An error occurred!', 'You have not entered any upload names.', 'error')\n\n page.postBulkDeleteUploads({\n all: true,\n field: 'name',\n values: names,\n cb (failed) {\n textArea.value = failed.join('\\n')\n }\n })\n })\n}\n\npage.postBulkDeleteUploads = (params = {}) => {\n const count = params.values.length\n\n const objective = `${params.values.length} upload${count === 1 ? '' : 's'}`\n const boldObjective = objective.replace(/^(\\d*)(.*)/, '$1$2')\n let text = `

    You won't be able to recover ${boldObjective}!

    `\n\n if (params.all) {\n const obj1 = count === 1 ? 'an upload' : 'some uploads'\n const obj2 = count === 1 ? 'another user' : 'other users'\n text += `\\n

    Warning: You may be nuking ${obj1} by ${obj2}!

    `\n }\n\n const content = document.createElement('div')\n content.innerHTML = text\n\n swal({\n title: 'Are you sure?',\n content,\n icon: 'warning',\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: `Yes, nuke ${params.values.length === 1 ? 'it' : 'them'}!`,\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/upload/bulkdelete', {\n field: params.fields,\n values: params.values\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const failed = Array.isArray(response.data.failed) ? response.data.failed : []\n if (failed.length === params.values.length)\n swal('An error occurred!', `Unable to delete any of the ${objective}.`, 'error')\n else if (failed.length && failed.length < params.values.length)\n swal('Warning!', `From ${objective}, unable to delete ${failed.length} of them.`, 'warning')\n else\n swal('Deleted!', `${objective} ${count === 1 ? 'has' : 'have'} been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n if (typeof params.cb === 'function')\n params.cb(failed)\n }).catch(page.onAxiosError)\n })\n}\n\npage.addSelectedUploadsToAlbum = () => {\n if (page.currentView !== 'uploads')\n return\n\n const count = page.selected[page.currentView].length\n if (!count)\n return swal('An error occurred!', 'You have not selected any uploads.', 'error')\n\n page.addUploadsToAlbum(page.selected[page.currentView], failed => {\n if (!failed) return\n if (failed.length)\n page.selected[page.currentView] = page.selected[page.currentView].filter(id => {\n return failed.includes(id)\n })\n else\n page.selected[page.currentView] = []\n\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addToAlbum = id => {\n page.addUploadsToAlbum([id], failed => {\n if (!failed) return\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addUploadsToAlbum = (ids, callback) => {\n const count = ids.length\n\n const content = document.createElement('div')\n content.innerHTML = `\n
    \n

    You are about to add ${count} upload${count === 1 ? '' : 's'} to an album.

    \n

    If an upload is already in an album, it will be moved.

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n\n swal({\n icon: 'warning',\n content,\n buttons: {\n cancel: true,\n confirm: {\n text: 'OK',\n closeModal: false\n }\n }\n }).then(choose => {\n if (!choose) return\n\n const albumid = parseInt(document.querySelector('#swalAlbum').value)\n if (isNaN(albumid))\n return swal('An error occurred!', 'You did not choose an album.', 'error')\n\n axios.post('api/albums/addfiles', {\n ids,\n albumid\n }).then(add => {\n if (!add) return\n\n if (add.data.success === false) {\n if (add.data.description === 'No token provided')\n page.verifyToken(page.token)\n else\n swal('An error occurred!', add.data.description, 'error')\n\n return\n }\n\n let added = ids.length\n if (add.data.failed && add.data.failed.length)\n added -= add.data.failed.length\n\n const suffix = `upload${ids.length === 1 ? '' : 's'}`\n if (!added)\n return swal('An error occurred!', `Could not add the ${suffix} to the album.`, 'error')\n\n swal('Woohoo!', `Successfully ${albumid < 0 ? 'removed' : 'added'} ${added} ${suffix} ${albumid < 0 ? 'from' : 'to'} the album.`, 'success', {\n buttons: false,\n timer: 1500\n })\n callback(add.data.failed)\n }).catch(page.onAxiosError)\n })\n\n // Get albums list then update content of swal\n axios.get('api/albums').then(list => {\n if (list.data.success === false) {\n if (list.data.description === 'No token provided')\n page.verifyToken(page.token)\n else\n swal('An error occurred!', list.data.description, 'error')\n\n return\n }\n\n // If the prompt was replaced, the container would be missing\n const select = document.querySelector('#swalAlbum')\n if (!select) return\n\n select.innerHTML += list.data.albums\n .map(album => {\n return ``\n })\n .join('\\n')\n\n select.getElementsByTagName('option')[1].innerHTML = 'Choose an album'\n select.removeAttribute('disabled')\n }).catch(page.onAxiosError)\n}\n\npage.getAlbums = (params = {}) => {\n if (params && params.all && !page.permissions.moderator)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number')\n params.pageNum = 0\n\n const headers = {}\n\n if (params.all)\n headers.all = '1'\n\n const url = `api/albums/${params.pageNum}`\n axios.get(url, { headers }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const albums = response.data.albums\n if (params.pageNum && (albums.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getAlbums(params)\n } else {\n return swal('An error occurred!', `There are no more albums to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = params.all ? 'albumsAll' : 'albums'\n page.cache = {}\n\n const users = response.data.users\n const homeDomain = response.data.homeDomain\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n const createNewAlbum = `\n

    Create new album

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumTitleMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumDescMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n\n page.dom.innerHTML = `\n ${!params.all ? createNewAlbum : ''}\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n \n ${params.all ? '' : ''}\n \n \n \n \n \n \n \n \n
    IDNameUserUploadsCreated atPublic link
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < albums.length; i++) {\n const album = albums[i]\n const albumUrl = `${homeDomain}/a/${album.identifier}`\n\n const selected = page.selected[page.currentView].includes(album.id)\n if (!selected) unselected = true\n\n // Prettify\n album.prettyDate = page.getPrettyDate(new Date(album.timestamp * 1000))\n\n // Server-side explicitly expect this value to consider an album as disabled\n const enabled = album.enabled !== 0\n page.cache[album.id] = {\n name: album.name,\n download: album.download,\n public: album.public,\n description: album.description,\n enabled\n }\n\n const tr = document.createElement('tr')\n tr.dataset.id = album.id\n tr.innerHTML = `\n \n ${album.id}\n ${album.name}\n ${params.all ? `${album.userid ? (users[album.userid] || '') : ''}` : ''}\n ${album.uploads}\n ${album.prettyDate}\n ${albumUrl}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n if (page.currentView === 'albumsAll')\n page.views[page.currentView].filters = params.filters\n page.views[page.currentView].pageNum = albums.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.editAlbum = id => {\n const album = page.cache[id]\n if (!album) return\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n
    \n \n
    \n

    Max length is ${page.albumTitleMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumDescMaxLength} characters.

    \n
    \n ${page.currentView === 'albumsAll' && page.permissions.moderator\n ? `
    \n
    \n \n
    \n
    `\n : ''}\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n `\n\n swal({\n title: 'Edit album',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(value => {\n if (!value) return\n\n const post = {\n id,\n name: document.querySelector('#swalName').value.trim(),\n description: document.querySelector('#swalDescription').value.trim(),\n download: document.querySelector('#swalDownload').checked,\n public: document.querySelector('#swalPublic').checked,\n requestLink: document.querySelector('#swalRequestLink').checked\n }\n\n if (page.currentView === 'albumsAll' && page.permissions.moderator)\n post.enabled = document.querySelector('#swalEnabled').checked\n\n axios.post('api/albums/edit', post).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n if (response.data.identifier)\n swal('Success!', `The album's new identifier is: ${response.data.identifier}.`, 'success')\n else if (response.data.name !== album.name)\n swal('Success!', `The album was renamed to: ${response.data.name}.`, 'success')\n else\n swal('Success!', 'The album was edited.', 'success', {\n buttons: false,\n timer: 1500\n })\n\n page.getAlbumsSidebar()\n // Reload albums list\n // eslint-disable-next-line compat/compat\n page.getAlbums(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.disableAlbum = id => {\n swal({\n title: 'Are you sure?',\n text: 'This won\\'t delete the uploads associated with the album!',\n icon: 'warning',\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, disable it!',\n closeModal: false\n },\n purge: {\n text: 'Umm, delete the uploads too, please?',\n value: 'purge',\n className: 'swal-button--danger',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/albums/disable', {\n id,\n purge: proceed === 'purge'\n }).then(response => {\n if (response.data.success === false) {\n const failed = Array.isArray(response.data.failed)\n ? response.data.failed\n : []\n\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else if (failed.length)\n return swal('An error occurred!', `Unable to delete ${failed.length} of the album's upload${failed.length === 1 ? '' : 's'}.`, 'error')\n else\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Deleted!', 'Your album has been disabled.', 'success', {\n buttons: false,\n timer: 1500\n })\n\n page.getAlbumsSidebar()\n // Reload albums list\n // eslint-disable-next-line compat/compat\n page.getAlbums(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.submitAlbum = element => {\n page.updateTrigger(element, 'loading')\n\n axios.post('api/albums', {\n name: document.querySelector('#albumName').value.trim(),\n description: document.querySelector('#albumDescription').value.trim()\n }).then(response => {\n if (!response) return\n\n page.updateTrigger(element)\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Woohoo!', 'Album was created successfully.', 'success', {\n buttons: false,\n timer: 1500\n })\n page.getAlbumsSidebar()\n page.getAlbums({\n pageNum: -1\n })\n }).catch(error => {\n page.updateTrigger(element)\n page.onAxiosError(error)\n })\n}\n\npage.getAlbumsSidebar = () => {\n axios.get('api/albums', { headers: { sidebar: '1' } }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const albums = response.data.albums\n const count = response.data.count\n const albumsContainer = document.querySelector('#albumsContainer')\n\n // Clear albums sidebar if necessary\n const oldAlbums = albumsContainer.querySelectorAll('li > a')\n if (oldAlbums.length) {\n for (let i = 0; i < oldAlbums.length; i++)\n page.menus.splice(page.menus.indexOf(oldAlbums[i]), 1)\n albumsContainer.innerHTML = ''\n }\n\n if (albums === undefined)\n return\n\n for (let i = 0; i < albums.length; i++) {\n const album = albums[i]\n const li = document.createElement('li')\n const a = document.createElement('a')\n a.id = album.id\n a.className = 'is-relative'\n a.innerHTML = album.name\n\n a.addEventListener('click', event => {\n page.getUploads({\n album: parseInt(event.currentTarget.id),\n trigger: event.currentTarget\n })\n })\n page.menus.push(a)\n\n li.appendChild(a)\n albumsContainer.appendChild(li)\n }\n\n if (count > albums.length) {\n const li = document.createElement('li')\n const a = document.createElement('a')\n a.className = 'is-relative'\n a.innerHTML = '...'\n a.title = `You have ${count} albums, but the sidebar can only list your first ${albums.length} albums.`\n\n a.addEventListener('click', event => {\n page.getAlbums({\n trigger: document.querySelector('#itemManageYourAlbums')\n })\n })\n\n li.appendChild(a)\n albumsContainer.appendChild(li)\n }\n }).catch(page.onAxiosError)\n}\n\npage.changeToken = (params = {}) => {\n page.dom.innerHTML = `\n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#getNewToken').addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n const trigger = event.currentTarget\n page.updateTrigger(trigger, 'loading')\n axios.post('api/tokens/change').then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n page.updateTrigger(trigger)\n swal({\n title: 'Woohoo!',\n text: 'Your token was successfully changed.',\n icon: 'success',\n buttons: false,\n timer: 1500\n }).then(() => {\n axios.defaults.headers.common.token = response.data.token\n localStorage[lsKeys.token] = response.data.token\n page.token = response.data.token\n page.changeToken()\n })\n }).catch(error => {\n page.updateTrigger(trigger)\n page.onAxiosError(error)\n })\n })\n}\n\npage.changePassword = (params = {}) => {\n page.dom.innerHTML = `\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#sendChangePassword').addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (!page.dom.querySelector('form').checkValidity())\n return\n\n if (document.querySelector('#password').value === document.querySelector('#passwordConfirm').value)\n page.sendNewPassword(document.querySelector('#password').value, event.currentTarget)\n else\n swal({\n title: 'Password mismatch!',\n text: 'Your passwords do not match, please try again.',\n icon: 'error'\n })\n })\n}\n\npage.sendNewPassword = (pass, element) => {\n page.updateTrigger(element, 'loading')\n\n axios.post('api/password/change', { password: pass }).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(element)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n page.updateTrigger(element)\n swal({\n title: 'Woohoo!',\n text: 'Your password was successfully changed.',\n icon: 'success',\n buttons: false,\n timer: 1500\n }).then(() => {\n page.changePassword()\n })\n }).catch(error => {\n page.updateTrigger(element)\n page.onAxiosError(error)\n })\n}\n\npage.getUsers = (params = {}) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (!page.permissions.admin)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number')\n params.pageNum = 0\n\n const url = `api/users/${params.pageNum}`\n axios.get(url).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const users = response.data.users\n if (params.pageNum && (users.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getUsers(params)\n } else {\n return swal('An error occurred!', `There are no more users to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = 'users'\n page.cache = {}\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    UsernameUploadsUsageGroupRegistration dateLast token update
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < users.length; i++) {\n const user = users[i]\n const selected = page.selected[page.currentView].includes(user.id)\n if (!selected) unselected = true\n\n let displayGroup = null\n const groups = Object.keys(user.groups)\n for (let i = 0; i < groups.length; i++) {\n if (!user.groups[groups[i]]) break\n displayGroup = groups[i]\n }\n\n // Server-side explicitly expects either of these two values to consider a user as disabled\n const enabled = user.enabled !== false && user.enabled !== 0\n page.cache[user.id] = {\n username: user.username,\n groups: user.groups,\n enabled,\n displayGroup\n }\n\n const prettyDate = user.registration\n ? page.getPrettyDate(new Date(user.registration * 1000))\n : '-'\n const prettyTokenUpdate = user.timestamp\n ? page.getPrettyDate(new Date(user.timestamp * 1000))\n : '-'\n\n const tr = document.createElement('tr')\n tr.dataset.id = user.id\n tr.innerHTML = `\n \n ${user.username}\n ${user.uploads}\n ${page.getPrettyBytes(user.usage)}\n ${displayGroup}\n ${prettyDate}\n ${prettyTokenUpdate}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n page.views[page.currentView].pageNum = users.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.createUser = () => {\n const groupOptions = Object.keys(page.permissions).map((g, i, a) => {\n const disabled = !(a[i + 1] && page.permissions[a[i + 1]])\n return ``\n }).join('\\n')\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n `\n\n swal({\n title: 'Create new user',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/create', {\n username: document.querySelector('#swalUsername').value,\n password: document.querySelector('#swalPassword').value,\n group: document.querySelector('#swalGroup').value\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const div = document.createElement('div')\n div.innerHTML = `\n

    Username: ${response.data.username}

    \n

    Password: ${response.data.password}

    \n

    User group: ${response.data.group}

    \n `\n swal({\n title: 'Created a new user!',\n icon: 'success',\n content: div\n })\n\n // Load last page of users list\n // eslint-disable-next-line compat/compat\n page.getUsers(Object.assign(page.views.users, {\n pageNum: -1\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.editUser = id => {\n const user = page.cache[id]\n if (!user) return\n\n const groupOptions = Object.keys(page.permissions).map((g, i, a) => {\n const selected = g === user.displayGroup\n const disabled = !(a[i + 1] && page.permissions[a[i + 1]])\n return ``\n }).join('\\n')\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n

    User ID: ${id}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n `\n\n swal({\n title: 'Edit user',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/edit', {\n id,\n username: document.querySelector('#swalUsername').value,\n group: document.querySelector('#swalGroup').value,\n enabled: document.querySelector('#swalEnabled').checked,\n resetPassword: document.querySelector('#swalResetPassword').checked\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n let autoClose = true\n const div = document.createElement('div')\n\n let displayName = user.username\n if (response.data.update.username !== user.username) {\n div.innerHTML += `

    ${user.username} was renamed into: ${response.data.update.username}.

    `\n autoClose = false\n displayName = response.data.update.username\n }\n\n if (response.data.update.password) {\n div.innerHTML += `\n

    ${displayName}'s new password is:

    \n

    ${response.data.update.password}

    \n `\n autoClose = false\n }\n\n if (response.data.update.enabled !== user.enabled)\n div.innerHTML += `

    ${displayName} has been ${response.data.update.enabled ? 'enabled' : 'disabled'}!

    `\n\n if (!div.innerHTML)\n div.innerHTML = `

    ${displayName} was edited!

    `\n\n swal({\n title: 'Success!',\n icon: 'success',\n content: div,\n buttons: !autoClose,\n timer: autoClose ? 1500 : null\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.disableUser = id => {\n const user = page.cache[id]\n if (!user || !user.enabled) return\n\n const content = document.createElement('div')\n content.innerHTML = `\n

    You will be disabling a user named ${page.cache[id].username}.

    \n

    Their files will remain.

    \n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, disable them!',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/disable', { id }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else\n return swal('An error occurred!', response.data.description, 'error')\n\n swal('Success!', `${page.cache[id].username} has been disabled.`, 'success', {\n buttons: false,\n timer: 1500\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.deleteUser = id => {\n const user = page.cache[id]\n if (!user) return\n\n const content = document.createElement('div')\n content.innerHTML = `\n

    You will be deleting a user named ${page.cache[id].username}.

    \n

    Their files will remain, unless you choose otherwise.

    \n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, delete it!',\n closeModal: false\n },\n purge: {\n text: 'Yes, and the uploads too!',\n value: 'purge',\n className: 'swal-button--danger',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/delete', {\n id,\n purge: proceed === 'purge'\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false) {\n const failed = Array.isArray(response.data.failed)\n ? response.data.failed\n : []\n\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else if (failed.length)\n return swal('An error occurred!', `Unable to delete ${failed.length} of the user's upload${failed.length === 1 ? '' : 's'}.`, 'error')\n else\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Success!', `${page.cache[id].username} has been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n // Reload users list\n // eslint-disable-next-line compat/compat\n page.getUsers(Object.assign(page.views.users, {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\n// Roughly based on https://github.com/mayuska/pagination/blob/master/index.js\npage.paginate = (totalItems, itemsPerPage, currentPage) => {\n currentPage = currentPage + 1\n const step = 3\n const numPages = Math.ceil(totalItems / itemsPerPage)\n\n let template = ''\n const elementsToShow = step * 2\n const add = {\n pageNum (start, end) {\n for (let i = start; i <= end; ++i)\n template += `
  • ${i}
  • `\n },\n startDots () {\n template += `\n
  • 1
  • \n
  • \n `\n },\n endDots () {\n template += `\n
  • \n
  • ${numPages}
  • \n `\n }\n }\n\n if (elementsToShow + 1 >= numPages) {\n add.pageNum(1, numPages)\n } else if (currentPage < elementsToShow) {\n add.pageNum(1, elementsToShow)\n add.endDots()\n } else if (currentPage > numPages - elementsToShow + 1) {\n add.startDots()\n add.pageNum(numPages - elementsToShow + 1, numPages)\n } else {\n add.startDots()\n add.pageNum(currentPage - step + 1, currentPage + step - 1)\n add.endDots()\n }\n\n return `\n \n `\n}\n\npage.getStatistics = (params = {}) => {\n if (!page.permissions.admin)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n const url = 'api/stats'\n axios.get(url).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n let content = ''\n const keys = Object.keys(response.data.stats)\n for (let i = 0; i < keys.length; i++) {\n let rows = ''\n if (!response.data.stats[keys[i]])\n rows += `\n \n Generating, please try again later\\u2026\n \n \n `\n else\n try {\n const types = response.data.stats[keys[i]]._types || {}\n const valKeys = Object.keys(response.data.stats[keys[i]])\n for (let j = 0; j < valKeys.length; j++) {\n // Skip keys that starts with an underscore\n if (/^_/.test(valKeys[j]))\n continue\n\n const value = response.data.stats[keys[i]][valKeys[j]]\n let parsed = value\n\n // Parse values with some preset formatting\n if ((types.number || []).includes(valKeys[j]))\n parsed = value.toLocaleString()\n if ((types.byte || []).includes(valKeys[j]))\n parsed = page.getPrettyBytes(value)\n if ((types.byteUsage || []).includes(valKeys[j]))\n parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${Math.floor(value.used / value.total * 100)}%)`\n if ((types.uptime || []).includes(valKeys[j]))\n parsed = page.getPrettyUptime(value)\n\n const string = valKeys[j]\n .replace(/([A-Z])/g, ' $1')\n .replace(/(^|\\s)(cpu|db|zip)/gi, s => s.toUpperCase())\n rows += `\n \n ${string}\n ${parsed}\n \n `\n }\n } catch (error) {\n rows = `\n \n Error parsing response. Try again?\n \n \n `\n page.onError(error)\n }\n\n content += `\n
    \n \n \n \n \n \n \n \n \n ${rows}\n \n
    ${keys[i]}
    \n
    \n `\n }\n\n if (Array.isArray(response.data.hrtime))\n content += `\n
    \n
    \n Time taken: ${response.data.hrtime[0]}s ${Math.ceil(response.data.hrtime[1] / 1000000)}ms.\n
    \n
    \n `\n\n page.dom.innerHTML = content\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n // Polyfill Object.assign()\n // eslint-disable-next-line compat/compat\n if (typeof Object.assign !== 'function')\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, 'assign', {\n value: function assign (target, varArgs) { // .length of function is 2\n 'use strict'\n if (target === null || target === undefined)\n throw new TypeError('Cannot convert undefined or null to object')\n const to = Object(target)\n for (let i = 1; i < arguments.length; i++) {\n const nextSource = arguments[i]\n if (nextSource !== null && nextSource !== undefined)\n for (const nextKey in nextSource)\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey))\n to[nextKey] = nextSource[nextKey]\n }\n return to\n },\n writable: true,\n configurable: true\n })\n\n // Add 'no-touch' class to non-touch devices\n if (!('ontouchstart' in document.documentElement))\n document.documentElement.classList.add('no-touch')\n\n const selectedKeys = ['uploads', 'uploadsAll', 'albums', 'albumsAll', 'users']\n for (let i = 0; i < selectedKeys.length; i++) {\n const ls = localStorage[lsKeys.selected[selectedKeys[i]]]\n if (ls) page.selected[selectedKeys[i]] = JSON.parse(ls)\n }\n\n page.preparePage()\n\n page.clipboardJS = new ClipboardJS('.clipboard-js')\n\n page.clipboardJS.on('success', () => {\n return swal('', 'The link has been copied to clipboard.', 'success', {\n buttons: false,\n timer: 1500\n })\n })\n\n page.clipboardJS.on('error', page.onError)\n\n page.lazyLoad = new LazyLoad()\n})\n"]} \ No newline at end of file +{"version":3,"sources":["dashboard.js"],"names":["const","lsKeys","token","viewType","uploads","uploadsAll","selected","albums","albumsAll","users","originalNames","page","section","dom","localStorage","username","permissions","menusContainer","menus","currentView","views","type","album","pageNum","filters","all","checkboxes","lastSelected","selectAlbumContainer","cache","clipboardJS","lazyLoad","imageExts","videoExts","isSomethingLoading","fadingIn","albumTitleMaxLength","albumDescMaxLength","unhide","document","querySelector","classList","add","remove","onError","error","console","content","createElement","innerHTML","toString","swal","title","icon","onAxiosError","statusText","520","521","522","523","524","525","526","527","530","response","status","description","data","preparePage","verifyToken","window","location","checkClientVersion","apiVersion","match","src","text","buttons","confirm","closeModal","then","reload","reloadOnError","axios","post","success","removeItem","defaults","headers","common","version","prepareDashboard","catch","addEventListener","domClick","event","target","contains","preventDefault","itemMenus","selector","onclick","getUploads","deleteUploadsByNames","getAlbums","changeToken","changePassword","logout","params","group","getStatistics","getUsers","loop","i","item","warnSomethingLoading","call","Object","assign","trigger","currentTarget","push","length","moderator","getAlbumsSidebar","prepareShareX","updateTrigger","timer","newState","parentNode","tagName","className","includes","let","getItemID","element","parent","parseInt","dataset","id","action","hasAttribute","stopPropagation","setUploadsView","toggleOriginalNames","addToAlbum","deleteUpload","addSelectedUploadsToAlbum","bulkDeleteUploads","displayPreview","uploadFiltersHelp","filterUploads","submitAlbum","editAlbum","disableAlbum","viewAlbumUploads","createUser","editUser","disableUser","deleteUser","viewUserUploads","getNewToken","clearSelection","select","selectAll","focusJumpToPage","switchPage","fadeAndScroll","disableFading","clearTimeout","setTimeout","scrollIntoView","behavior","block","inline","getByView","view","get","func","goto","jumpToPage","jumpid","checkValidity","parsed","value","isNaN","focus","url","undefined","test","minoffset","Date","getTimezoneOffset","pages","Math","ceil","count","files","autoPage","basedomain","max","pagination","paginate","extraControls","escape","controls","bottomExtraControls","replace","bottomPagination","unselected","showOriginalNames","hasExpiryDateColumn","some","file","expirydate","thumb","exec","extname","toLowerCase","name","original","prettyBytes","getPrettyBytes","size","prettyDate","getPrettyDate","timestamp","prettyExpiryDate","appendix","userid","albumid","table","upload","div","appendChild","querySelectorAll","allAlbums","tr","ip","checked","update","isimage","isvideo","onload","body","onerror","video","autoplay","insertAdjacentElement","splice","indexOf","JSON","stringify","selectInBetween","lastElement","thisIndex","index","lastIndex","abs","shiftKey","suffix","substring","proceed","Boolean","style","trim","filtersid","user","postBulkDeleteUploads","field","values","cb","failed","filter","textArea","seen","names","split","map","trimmed","prototype","hasOwnProperty","join","objective","dangerMode","cancel","fields","Array","isArray","addUploadsToAlbum","ids","callback","choose","added","list","getElementsByTagName","removeAttribute","homeDomain","createNewAlbum","albumUrl","enabled","download","public","requestLink","identifier","purge","sidebar","albumsContainer","oldAlbums","li","a","sendNewPassword","pass","password","admin","displayGroup","groups","keys","registration","prettyTokenUpdate","usage","groupOptions","g","resetPassword","autoClose","displayName","totalItems","itemsPerPage","currentPage","numPages","template","start","end","elementsToShow","step","stats","rows","types","_types","valKeys","j","number","toLocaleString","byte","byteUsage","used","total","floor","uptime","getPrettyUptime","s","toUpperCase","hrtime","defineProperty","varArgs","arguments$1","arguments","TypeError","to","nextSource","nextKey","writable","configurable","documentElement","selectedKeys","ls","parse","ClipboardJS","on","LazyLoad"],"mappings":"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","file":"dashboard.js","sourcesContent":["/* global swal, axios, ClipboardJS, LazyLoad */\n\nconst lsKeys = {\n token: 'token',\n viewType: {\n uploads: 'viewTypeUploads',\n uploadsAll: 'viewTypeUploadsAll'\n },\n selected: {\n uploads: 'selectedUploads',\n uploadsAll: 'selectedUploadsAll',\n albums: 'selectedAlbums',\n albumsAll: 'selectedAlbumsAll',\n users: 'selectedUsers'\n },\n originalNames: {\n uploads: 'originalNames',\n uploadsAll: 'originalNamesAll'\n }\n}\n\nconst page = {\n // #dashboard\n section: null,\n // #page\n dom: null,\n\n // user token\n token: localStorage[lsKeys.token],\n\n // from api/tokens/verify\n username: null,\n permissions: null,\n\n // sidebar menus\n menusContainer: null,\n menus: [],\n\n currentView: null,\n views: {\n // params of uploads view\n uploads: {\n type: localStorage[lsKeys.viewType.uploads],\n originalNames: localStorage[lsKeys.originalNames.uploads] === '1',\n album: null, // album's id\n pageNum: null\n },\n // params of uploads view (all)\n uploadsAll: {\n type: localStorage[lsKeys.viewType.uploadsAll],\n originalNames: localStorage[lsKeys.originalNames.uploadsAll] === '1',\n filters: null,\n pageNum: null,\n all: true\n },\n // params of albums view\n albums: {\n filters: null,\n pageNum: null\n },\n // params of albums view (all)\n albumsAll: {\n filters: null,\n pageNum: null,\n all: true\n },\n // params of users view\n users: {\n filters: null,\n pageNum: null\n }\n },\n\n // ids of selected items (shared across pages and will be synced with localStorage)\n selected: {\n uploads: [],\n uploadsAll: [],\n albums: [],\n albumsAll: [],\n users: []\n },\n checkboxes: [],\n lastSelected: [],\n\n // select album dom for dialogs/modals\n selectAlbumContainer: null,\n\n // cache for dialogs/modals\n cache: {},\n\n clipboardJS: null,\n lazyLoad: null,\n\n imageExts: ['.webp', '.jpg', '.jpeg', '.gif', '.png', '.tiff', '.tif', '.svg'],\n // TODO: Disable \"Load original\" button with non-streamable extensions\n videoExts: ['.webm', '.mp4', '.wmv', '.avi', '.mov', '.mkv', '.m4v', '.m2ts'],\n\n isSomethingLoading: false,\n fadingIn: null,\n\n albumTitleMaxLength: 70,\n albumDescMaxLength: 4000\n}\n\npage.unhide = () => {\n document.querySelector('#loader').classList.add('is-hidden')\n page.section.classList.remove('is-hidden')\n}\n\n// Handler for regular JS errors\npage.onError = error => {\n console.error(error)\n\n const content = document.createElement('div')\n content.innerHTML = `${error.toString()}`\n return swal({\n title: 'An error occurred!',\n icon: 'error',\n content\n })\n}\n\n// Handler for Axios errors\npage.onAxiosError = error => {\n console.error(error)\n\n // Better Cloudflare errors\n const cloudflareErrors = {\n 520: 'Unknown Error',\n 521: 'Web Server Is Down',\n 522: 'Connection Timed Out',\n 523: 'Origin Is Unreachable',\n 524: 'A Timeout Occurred',\n 525: 'SSL Handshake Failed',\n 526: 'Invalid SSL Certificate',\n 527: 'Railgun Error',\n 530: 'Origin DNS Error'\n }\n\n const statusText = cloudflareErrors[error.response.status] || error.response.statusText\n const description = error.response.data && error.response.data.description\n ? error.response.data.description\n : 'There was an error with the request, please check the console for more information.'\n\n return swal(`${error.response.status} ${statusText}`, description, 'error')\n}\n\npage.preparePage = () => {\n if (page.token)\n page.verifyToken(page.token, true)\n else\n window.location = 'auth'\n}\n\npage.checkClientVersion = apiVersion => {\n const self = document.querySelector('#mainScript')\n const match = self.src.match(/\\?_=(\\d+)$/)\n if (match && match[1] && match[1] !== apiVersion)\n return swal({\n title: 'Update detected!',\n text: 'Client assets have been updated. Reload to display the latest version?',\n icon: 'info',\n buttons: {\n confirm: {\n text: 'Reload',\n closeModal: false\n }\n }\n }).then(() => {\n window.location.reload()\n })\n}\n\npage.verifyToken = (token, reloadOnError) => {\n axios.post('api/tokens/verify', { token }).then(response => {\n if (response.data.success === false)\n return swal({\n title: 'An error occurred!',\n text: response.data.description,\n icon: 'error'\n }).then(() => {\n if (!reloadOnError) return\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n })\n\n axios.defaults.headers.common.token = token\n localStorage[lsKeys.token] = token\n\n if (response.data.version)\n page.checkClientVersion(response.data.version)\n\n page.token = token\n page.username = response.data.username\n page.permissions = response.data.permissions\n page.prepareDashboard()\n }).catch(page.onAxiosError)\n}\n\npage.prepareDashboard = () => {\n page.section = document.querySelector('#dashboard')\n page.dom = page.section.querySelector('#page')\n\n // Capture all click events\n page.dom.addEventListener('click', page.domClick, true)\n\n // Capture all submit events\n page.dom.addEventListener('submit', event => {\n // Prevent default if necessary\n if (event.target && event.target.classList.contains('prevent-default'))\n return event.preventDefault()\n }, true)\n\n page.menusContainer = document.querySelector('#menu')\n\n // All item menus in the sidebar\n const itemMenus = [\n { selector: '#itemUploads', onclick: page.getUploads },\n { selector: '#itemDeleteUploadsByNames', onclick: page.deleteUploadsByNames },\n { selector: '#itemManageYourAlbums', onclick: page.getAlbums },\n { selector: '#itemManageToken', onclick: page.changeToken },\n { selector: '#itemChangePassword', onclick: page.changePassword },\n { selector: '#itemLogout', onclick: page.logout },\n { selector: '#itemManageUploads', onclick: page.getUploads, params: { all: true }, group: 'moderator' },\n { selector: '#itemManageAlbums', onclick: page.getAlbums, params: { all: true }, group: 'moderator' },\n { selector: '#itemStatistics', onclick: page.getStatistics, group: 'admin' },\n { selector: '#itemManageUsers', onclick: page.getUsers, group: 'admin' }\n ]\n\n for (let i = 0; i < itemMenus.length; i++) {\n // Skip item menu if not enough permission\n if (itemMenus[i].group && !page.permissions[itemMenus[i].group])\n continue\n\n // Add onclick event listener\n const item = document.querySelector(itemMenus[i].selector)\n item.addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n // eslint-disable-next-line compat/compat\n itemMenus[i].onclick.call(null, Object.assign(itemMenus[i].params || {}, {\n trigger: event.currentTarget\n }))\n })\n\n item.classList.remove('is-hidden')\n page.menus.push(item)\n }\n\n // If at least a moderator, show administration section\n if (page.permissions.moderator) {\n document.querySelector('#itemLabelAdmin').classList.remove('is-hidden')\n document.querySelector('#itemListAdmin').classList.remove('is-hidden')\n }\n\n // Update text of logout button\n document.querySelector('#itemLogout').innerHTML = `Logout ( ${page.username} )`\n\n // Finally display dashboard\n page.unhide()\n\n // Load albums sidebar\n page.getAlbumsSidebar()\n\n if (typeof page.prepareShareX === 'function')\n page.prepareShareX()\n}\n\npage.logout = params => {\n page.updateTrigger(params.trigger, 'active')\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n}\n\npage.warnSomethingLoading = () => {\n swal('Please wait!', 'Something else is still loading\\u2026', 'warning', {\n buttons: false,\n timer: 3000\n })\n}\n\npage.updateTrigger = (trigger, newState) => {\n if (!trigger) return\n\n // Disable menus container and pagination when loading\n if (newState === 'loading') {\n page.isSomethingLoading = true\n page.section.classList.add('is-loading')\n } else {\n page.section.classList.remove('is-loading')\n page.isSomethingLoading = false\n }\n\n if (newState === 'loading') {\n trigger.classList.add('is-loading')\n } else if (newState === 'active') {\n if (trigger.parentNode.tagName === 'LI' && !trigger.className.includes('pagination-link')) {\n for (let i = 0; i < page.menus.length; i++)\n page.menus[i].classList.remove('is-active')\n trigger.classList.add('is-active')\n }\n trigger.classList.remove('is-loading')\n } else {\n trigger.classList.remove('is-loading')\n trigger.classList.remove('is-active')\n }\n}\n\npage.getItemID = element => {\n // This expects the item's parent to have the item's ID\n let parent = element.parentNode\n // If the element is part of a set of controls, use the container's parent instead\n if (element.parentNode.classList.contains('controls')) parent = parent.parentNode\n return parseInt(parent.dataset.id)\n}\n\npage.domClick = event => {\n // We are processing clicks this way to avoid using \"onclick\" attribute\n // Apparently we will need to use \"unsafe-inline\" for \"script-src\" directive\n // of Content Security Policy (CSP), if we want to use \"onclick\" attribute\n // Though I think that only applies to some browsers (?)\n // Of course it wouldn't have mattered if we didn't use CSP to begin with\n // Anyway, I personally would rather not use \"onclick\" attribute\n let element = event.target\n if (!element) return\n\n // Delegate click events to their A or BUTTON parents\n if (['I'].includes(element.tagName) && ['SPAN'].includes(element.parentNode.tagName))\n element = element.parentNode\n if (['SPAN'].includes(element.tagName) && ['A', 'BUTTON'].includes(element.parentNode.tagName))\n element = element.parentNode\n\n // Skip elements that have no action data\n if (!element.dataset || !element.dataset.action) return\n\n // Skip disabled elements\n if (element.hasAttribute('disabled')) return\n\n event.stopPropagation() // maybe necessary\n const id = page.getItemID(element)\n const action = element.dataset.action\n\n switch (action) {\n // Uploads\n case 'view-list':\n return page.setUploadsView('list', element)\n case 'view-thumbs':\n return page.setUploadsView('thumbs', element)\n case 'toggle-original-names':\n return page.toggleOriginalNames(element)\n case 'add-to-album':\n return page.addToAlbum(id)\n case 'delete-upload':\n return page.deleteUpload(id)\n case 'add-selected-uploads-to-album':\n return page.addSelectedUploadsToAlbum()\n case 'bulk-delete-uploads':\n return page.bulkDeleteUploads()\n case 'display-preview':\n return page.displayPreview(id)\n // Manage uploads\n case 'upload-filters-help':\n return page.uploadFiltersHelp(element)\n case 'filter-uploads':\n return page.filterUploads(element)\n // Manage your albums\n case 'submit-album':\n return page.submitAlbum(element)\n case 'edit-album':\n return page.editAlbum(id)\n case 'disable-album':\n return page.disableAlbum(id)\n case 'view-album-uploads':\n return page.viewAlbumUploads(id, element)\n // Manage users\n case 'create-user':\n return page.createUser()\n case 'edit-user':\n return page.editUser(id)\n case 'disable-user':\n return page.disableUser(id)\n case 'delete-user':\n return page.deleteUser(id)\n case 'view-user-uploads':\n return page.viewUserUploads(id, element)\n // Others\n case 'get-new-token':\n return page.getNewToken(element)\n // Uploads & Users\n case 'clear-selection':\n return page.clearSelection()\n case 'select':\n return page.select(element, event)\n case 'select-all':\n return page.selectAll(element)\n case 'page-ellipsis':\n return page.focusJumpToPage(element)\n case 'page-prev':\n case 'page-next':\n case 'page-goto':\n case 'jump-to-page':\n return page.switchPage(action, element)\n }\n}\n\npage.fadeAndScroll = disableFading => {\n if (page.fadingIn) {\n clearTimeout(page.fadingIn)\n page.dom.classList.remove('fade-in')\n }\n\n if (!disableFading) {\n page.dom.classList.add('fade-in')\n page.fadingIn = setTimeout(() => {\n page.dom.classList.remove('fade-in')\n }, 500)\n }\n\n page.dom.scrollIntoView({\n behavior: disableFading ? 'auto' : 'smooth',\n block: 'start',\n inline: 'nearest'\n })\n}\n\npage.getByView = (view, get) => {\n switch (view) {\n case 'uploads':\n case 'uploadsAll':\n return {\n type: 'uploads',\n func: page.getUploads\n }[get]\n case 'albums':\n case 'albumsAll':\n return {\n type: 'albums',\n func: page.getAlbums\n }[get]\n case 'users':\n return {\n type: 'users',\n func: page.getUsers\n }[get]\n default:\n return null\n }\n}\n\npage.switchPage = (action, element) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n // eslint-disable-next-line compat/compat\n const params = Object.assign(page.views[page.currentView], {\n trigger: element\n })\n\n const func = page.getByView(page.currentView, 'func')\n\n switch (action) {\n case 'page-prev':\n params.pageNum = page.views[page.currentView].pageNum - 1\n if (params.pageNum < 0)\n return swal('An error occurred!', 'This is already the first page.', 'error')\n return func(params)\n case 'page-next':\n params.pageNum = page.views[page.currentView].pageNum + 1\n return func(params)\n case 'page-goto':\n params.pageNum = parseInt(element.dataset.goto)\n return func(params)\n case 'jump-to-page': {\n const jumpToPage = document.querySelector(`#${element.dataset.jumpid || 'jumpToPage'}`)\n if (!jumpToPage.checkValidity()) return\n const parsed = parseInt(jumpToPage.value)\n params.pageNum = isNaN(parsed) ? 0 : (parsed - 1)\n if (params.pageNum < 0) params.pageNum = 0\n return func(params)\n }\n }\n}\n\npage.focusJumpToPage = element => {\n const jumpToPage = document.querySelector(`#${element.dataset.jumpid || 'jumpToPage'}`)\n if (!jumpToPage) return\n jumpToPage.focus()\n jumpToPage.select()\n}\n\npage.getUploads = (params = {}) => {\n if (params && params.all && !page.permissions.moderator)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number' || params.pageNum < 0)\n params.pageNum = 0\n\n const url = params.album !== undefined\n ? `api/album/${params.album}/${params.pageNum}`\n : `api/uploads/${params.pageNum}`\n\n const headers = {}\n\n if (params.all)\n headers.all = '1'\n\n if (params.filters) {\n headers.filters = params.filters\n\n // Send client timezone offset if properly using date: and/or :expiry filters\n // Server will pretend client is on UTC if unset\n if (/(^|\\s)(date|expiry):[\\d\"]/.test(params.filters))\n headers.minoffset = new Date().getTimezoneOffset()\n }\n\n axios.get(url, { headers }).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const files = response.data.files\n if (params.pageNum && (files.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getUploads(params)\n } else {\n return swal('An error occurred!', `There are no more uploads to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = params.all ? 'uploadsAll' : 'uploads'\n page.cache = {}\n\n const albums = response.data.albums\n const users = response.data.users\n const basedomain = response.data.basedomain\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n const showOriginalNames = page.views[page.currentView].originalNames\n const hasExpiryDateColumn = files.some(file => {\n return file.expirydate !== undefined\n })\n\n for (let i = 0; i < files.length; i++) {\n // Build full URLs\n files[i].file = `${basedomain}/${files[i].name}`\n if (files[i].thumb)\n files[i].thumb = `${basedomain}/${files[i].thumb}`\n\n // Determine types\n files[i].type = 'other'\n const exec = /.[\\w]+(\\?|$)/.exec(files[i].file)\n const extname = exec && exec[0] ? exec[0].toLowerCase() : null\n if (page.imageExts.includes(extname))\n files[i].type = 'picture'\n else if (page.videoExts.includes(extname))\n files[i].type = 'video'\n\n // Cache bare minimum data for thumbnails viewer\n page.cache[files[i].id] = {\n name: files[i].name,\n original: files[i].original,\n thumb: files[i].thumb,\n file: files[i].file,\n type: files[i].type\n }\n\n // Prettify\n files[i].prettyBytes = page.getPrettyBytes(parseInt(files[i].size))\n files[i].prettyDate = page.getPrettyDate(new Date(files[i].timestamp * 1000))\n\n if (hasExpiryDateColumn)\n files[i].prettyExpiryDate = files[i].expirydate\n ? page.getPrettyDate(new Date(files[i].expirydate * 1000))\n : null\n\n // Update selected status\n files[i].selected = page.selected[page.currentView].includes(files[i].id)\n if (!files[i].selected) unselected = true\n\n // Appendix (display album or user)\n if (params.all)\n files[i].appendix = files[i].userid\n ? users[files[i].userid] || ''\n : ''\n else if (params.album === undefined)\n files[i].appendix = files[i].albumid\n ? albums[files[i].albumid] || ''\n : ''\n }\n\n if (page.views[page.currentView].type === 'thumbs') {\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < files.length; i++) {\n const upload = files[i]\n const div = document.createElement('div')\n div.className = 'image-container column'\n div.dataset.id = upload.id\n\n if (upload.thumb !== undefined)\n div.innerHTML = `\"${upload.name}\"`\n else\n div.innerHTML = `

    ${upload.extname || 'N/A'}

    `\n\n div.innerHTML += `\n \n
    \n ${upload.thumb ? `\n \n \n \n \n ` : ''}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n

    ${upload.name}

    \n ${showOriginalNames ? `

    ${upload.original}

    ` : ''}\n

    ${upload.appendix ? `${upload.appendix} – ` : ''}${upload.prettyBytes}

    \n ${hasExpiryDateColumn && upload.prettyExpiryDate ? `\n

    EXP: ${upload.prettyExpiryDate}

    ` : ''}\n
    \n `\n\n table.appendChild(div)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n } else {\n const allAlbums = params.all && params.filters && params.filters.includes('albumid:')\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n ${showOriginalNames ? '' : ''}\n ${params.album === undefined ? `` : ''}\n ${allAlbums ? '' : ''}\n \n ${params.all ? '' : ''}\n \n ${hasExpiryDateColumn ? '' : ''}\n \n \n \n \n \n
    File nameOriginal nameUser' : 'albumid\">Album'}AlbumSizeIPUpload dateExpiry date
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < files.length; i++) {\n const upload = files[i]\n const tr = document.createElement('tr')\n tr.dataset.id = upload.id\n tr.innerHTML = `\n \n ${upload.name}\n ${showOriginalNames ? `${upload.original}` : ''}\n ${params.album === undefined ? `${upload.appendix}` : ''}\n ${allAlbums ? `${upload.albumid ? (albums[upload.albumid] || '') : ''}` : ''}\n ${upload.prettyBytes}\n ${params.all ? `${upload.ip || ''}` : ''}\n ${upload.prettyDate}\n ${hasExpiryDateColumn ? `${upload.prettyExpiryDate || '-'}` : ''}\n \n \n \n \n \n \n \n \n \n \n \n ${params.all ? '' : `\n \n \n \n \n `}\n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected && files.length) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n if (page.views[page.currentView].type === 'thumbs') {\n page.fadeAndScroll(true)\n page.lazyLoad.update()\n } else {\n page.fadeAndScroll()\n }\n\n page.updateTrigger(params.trigger, 'active')\n\n if (page.currentView === 'uploads')\n page.views.uploads.album = params.album\n page.views[page.currentView].filters = params.filters\n page.views[page.currentView].pageNum = files.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.setUploadsView = (view, element) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (view === 'list') {\n delete localStorage[lsKeys.viewType[page.currentView]]\n page.views[page.currentView].type = undefined\n } else {\n localStorage[lsKeys.viewType[page.currentView]] = view\n page.views[page.currentView].type = view\n }\n\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n trigger: element\n }))\n}\n\npage.toggleOriginalNames = element => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (page.views[page.currentView].originalNames) {\n delete localStorage[lsKeys.originalNames[page.currentView]]\n page.views[page.currentView].originalNames = false\n } else {\n localStorage[lsKeys.originalNames[page.currentView]] = '1'\n page.views[page.currentView].originalNames = true\n }\n\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n trigger: element\n }))\n}\n\npage.displayPreview = id => {\n const file = page.cache[id]\n if (!file.thumb) return\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n

    \n

    ${file.name}
    \n
    ${file.original}
    \n

    \n

    \n \n

    \n
    \n `\n\n if (file.file) {\n const exec = /.[\\w]+(\\?|$)/.exec(file.file)\n const extname = exec && exec[0] ? exec[0].toLowerCase() : null\n const isimage = page.imageExts.includes(extname)\n const isvideo = !isimage && page.videoExts.includes(extname)\n\n if (isimage || isvideo) {\n div.innerHTML += `\n \n `\n\n div.querySelector('#swalOriginal').addEventListener('click', event => {\n const trigger = event.currentTarget\n if (trigger.classList.contains('is-danger'))\n return\n\n trigger.classList.add('is-loading')\n const thumb = div.querySelector('#swalThumb')\n\n if (isimage) {\n thumb.src = file.file\n thumb.onload = () => {\n trigger.classList.add('is-hidden')\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n }\n thumb.onerror = event => {\n event.currentTarget.classList.add('is-hidden')\n trigger.className = 'button is-danger is-fullwidth'\n trigger.innerHTML = `\n \n \n \n Unable to load original\n `\n }\n } else if (isvideo) {\n thumb.classList.add('is-hidden')\n const video = document.createElement('video')\n video.id = 'swalVideo'\n video.controls = true\n video.autoplay = true\n video.src = file.file\n thumb.insertAdjacentElement('afterend', video)\n\n trigger.classList.add('is-hidden')\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n }\n })\n }\n }\n\n return swal({\n content: div,\n buttons: false\n }).then(() => {\n // Destroy video, if necessary\n const video = div.querySelector('#swalVideo')\n if (video) video.remove()\n\n // Restore modal size\n document.body.querySelector('.swal-overlay .swal-modal').classList.remove('is-expanded')\n })\n}\n\npage.selectAll = element => {\n for (let i = 0; i < page.checkboxes.length; i++) {\n const id = page.getItemID(page.checkboxes[i])\n if (isNaN(id)) continue\n if (page.checkboxes[i].checked !== element.checked) {\n page.checkboxes[i].checked = element.checked\n if (page.checkboxes[i].checked)\n page.selected[page.currentView].push(id)\n else\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n }\n }\n\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n element.title = element.checked ? 'Unselect all' : 'Select all'\n}\n\npage.selectInBetween = (element, lastElement) => {\n const thisIndex = parseInt(element.dataset.index)\n const lastIndex = parseInt(lastElement.dataset.index)\n\n const distance = Math.abs(thisIndex - lastIndex)\n if (distance < 2)\n return\n\n for (let i = 0; i < page.checkboxes.length; i++)\n if ((thisIndex > lastIndex && i > lastIndex && i < thisIndex) ||\n (thisIndex < lastIndex && i > thisIndex && i < lastIndex)) {\n // Check or uncheck depending on the state of the initial checkbox\n const checked = page.checkboxes[i].checked = lastElement.checked\n const id = page.getItemID(page.checkboxes[i])\n if (!page.selected[page.currentView].includes(id) && checked)\n page.selected[page.currentView].push(id)\n else if (page.selected[page.currentView].includes(id) && !checked)\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n }\n}\n\npage.select = (element, event) => {\n const id = page.getItemID(element)\n if (isNaN(id)) return\n\n if (event.shiftKey && page.lastSelected) {\n page.selectInBetween(element, page.lastSelected)\n // Check or uncheck depending on the state of the initial checkbox\n element.checked = page.lastSelected.checked\n } else {\n page.lastSelected = element\n }\n\n if (!page.selected[page.currentView].includes(id) && element.checked)\n page.selected[page.currentView].push(id)\n else if (page.selected[page.currentView].includes(id) && !element.checked)\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n}\n\npage.clearSelection = () => {\n const selected = page.selected[page.currentView]\n const type = page.getByView(page.currentView, 'type')\n const count = selected.length\n if (!count)\n return swal('An error occurred!', `You have not selected any ${type}.`, 'error')\n\n const suffix = count === 1 ? type.substring(0, type.length - 1) : type\n return swal({\n title: 'Are you sure?',\n text: `You are going to unselect ${count} ${suffix}.`,\n buttons: true\n }).then(proceed => {\n if (!proceed) return\n\n const checkboxes = page.checkboxes\n for (let i = 0; i < checkboxes.length; i++)\n if (checkboxes[i].checked)\n checkboxes[i].checked = false\n\n page.selected[page.currentView] = []\n delete localStorage[lsKeys.selected[page.currentView]]\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll) selectAll.checked = false\n\n return swal('Cleared selection!', `Unselected ${count} ${suffix}.`, 'success')\n })\n}\n\npage.uploadFiltersHelp = element => {\n const all = Boolean(element.dataset.all)\n const content = document.createElement('div')\n content.style = 'text-align: left'\n content.innerHTML = `${all ? `\n There are 2 filter keys, namely user (username) and ip.\n These keys can be specified more than once.\n For usernames with whitespaces, wrap them with double quotes (\").\n Special cases such as uploads by non-registered users or have no IPs respectively, use user:- or ip:-.\n\n To exclude certain users/ips while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special cases mentioned above (i.e. -user:- or -ip:-).\n\n If you know the ID of a user's album, you can list its uploads with albumid key.\n Negation sign works for this key as well.\n ` : `\n There is only 1 filter key, namely albumid.\n This key can be specified more than once.\n Special case such as uploads with no albums, use albumid:-.\n\n To exclude certain albums while still listing every other uploads, add negation sign (-) before the keys.\n Negation sign can also be used to exclude the special case mentioned above (i.e. -albumid:-).\n `}\n There are 2 range keys: date (upload date) and expiry (expiry date).\n Their format is: \"YYYY/MM/DD HH:MM:SS-YYYY/MM/DD HH:MM:SS\" (\"from\" date and \"to\" date respectively).\n You may specify only one of the dates.\n If \"to\" date is missing, 'now' will be used. If \"from\" date is missing, 'beginning of time' will be used.\n If any of the subsequent date or time units are not specified, their first value will be used (e.g. January for month, 1 for day, and so on).\n If only time is specified, today's date will be used.\n If you do not need to specify both date and time, you may omit the double quotes.\n In conclusion, the following examples are all valid: date:\"2020/01/01 01:23-2018/01/01 06\", expiry:-2020/05, date:12:34:56.\n These keys can only be specified once each.\n\n Timezone? Feel free to query the dates with your own timezone.\n API requests to the filter endpoint will attach your browser's timezone offset, so the server will automatically calculate timezone differences.\n\n Matches can also be sorted with sort keys.\n Their formats are: sort:columnName[:d[escending]], where :d[escending] is an optional tag to set the direction to descending.\n This key must be used with internal column names used in the database (id, ${all ? 'userid' : 'albumid'}, and so on),\n but there are 2 shortcuts available: date for timestamp column and expiry for expirydate column.\n This key can also be specified more than once, where their order will decide the sorting steps.\n\n Finally, there are type-is keys to refine by types.\n You can use is:image and is:video to list images and videos respectively.\n This will only use image/video extensions whose thumbnails can be generated by the safe.\n Negation sign works for this key as well.\n Mixing inclusion and exclusion is not allowed (i.e. is:image -is:video, since the second key is redundant).\n\n Any leftover keywords which do not use keys (non-keyed keywords) will be matched against the matches' file names.\n Excluding certain keywords is also supported by adding negation sign before the keywords.\n\n Internal steps:\n ${all ? `- Query uploads passing ALL exclusion filter keys OR matching ANY filter keys, if any.\n - Refine matches` : '- Filter uploads'} using date key, if any.\n - Refine matches using expiry key, if any.\n - Refine matches using type-is keys, if any.\n - Refine matches using ANY non-keyed keywords, if any.\n - Filter matches using ALL exclusion non-keyed keywords, if any.\n - Sort matches using sorting keys, if any.\n\n Examples:\n ${all ? `- Uploads from users named \"demo\" AND/OR \"John Doe\" AND/OR non-registered users:\n user:demo user:\"John Doe\" user:-\n - ALL uploads, but NOT the ones from user named \"demo\" AND \"John Doe\":\n -user:demo -user:\"John Doe\"\n - Uploads from IP \"127.0.0.1\" AND which file names match \"*.rar\" OR \"*.zip\":\n ip:127.0.0.1 *.rar *.zip\n ` : ''}- Uploads without albums:\n albumid:-\n - ALL uploads, but NOT the ones from album with ID 69:\n -albumid:69\n - Uploads uploaded since \"1 June 2019 00:00:00\":\n date:2019/06\n - Uploads uploaded between \"7 April 2020 12:00:00\" and \"7 April 2020 23:59:59\":\n date:\"2020/04/07 12-2020/04/07 23:59:59\"\n - Uploads uploaded before \"5 February 2020 00:00:00\":\n date:-2020/02/05\n - Uploads which file names match \"*.gz\" but NOT \"*.tar.gz\":\n *.gz -*.tar.gz\n - Sort matches by \"size\" column in ascending and descending order respectively:\n ${all ? 'user:\"John Doe\"' : '*.txt'} sort:size\n *.mp4 ${all ? 'user:- ' : ''}sort:size:d\n ${!page.permissions.moderator ? `\n Notice: Regular users may face some limitations in the amount of keys that can be used at a time.\n ` : ''}\n Friendly reminder: This window can be scrolled up!\n `.trim().replace(/^\\s*/g, '').replace(/\\n/g, '
    ')\n\n swal({ content }).then(() => {\n // Restore modal size\n document.body.querySelector('.swal-overlay .swal-modal').classList.remove('is-expanded')\n })\n\n // Expand modal size\n document.body.querySelector('.swal-overlay .swal-modal:not(.is-expanded)').classList.add('is-expanded')\n}\n\npage.filterUploads = element => {\n const filters = document.querySelector(`#${element.dataset.filtersid || 'filters'}`).value\n .trim()\n .replace(/\\t/g, ' ')\n .replace(/(^|\\s)((albumid|ip|user|date|expiry|is|sort|orderby):)\\s+/g, '$2')\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n filters,\n pageNum: 0,\n trigger: element\n }))\n}\n\npage.viewUserUploads = (id, element) => {\n const user = page.cache[id]\n if (!user) return\n element.classList.add('is-loading')\n // Wrap username in quotes if it contains whitespaces\n const username = user.username.includes(' ')\n ? `\"${user.username}\"`\n : user.username\n page.getUploads({\n all: true,\n filters: `user:${username}`,\n trigger: document.querySelector('#itemManageUploads')\n })\n}\n\npage.viewAlbumUploads = (id, element) => {\n if (!page.cache[id]) return\n element.classList.add('is-loading')\n // eslint-disable-next-line compat/compat\n const all = page.currentView === 'albumsAll' && page.permissions.moderator\n page.getUploads({\n all,\n filters: `albumid:${id}`,\n trigger: all\n ? document.querySelector('#itemManageUploads')\n : document.querySelector('#itemUploads')\n })\n}\n\npage.deleteUpload = id => {\n page.postBulkDeleteUploads({\n all: page.currentView === 'uploadsAll',\n field: 'id',\n values: [id],\n cb (failed) {\n // Remove from remembered checkboxes if necessary\n if (!failed.length && page.selected[page.currentView].includes(id))\n page.selected[page.currentView].splice(page.selected[page.currentView].indexOf(id), 1)\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n // Reload upload list\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }\n })\n}\n\npage.bulkDeleteUploads = () => {\n const count = page.selected[page.currentView].length\n if (!count)\n return swal('An error occurred!', 'You have not selected any uploads.', 'error')\n\n page.postBulkDeleteUploads({\n all: page.currentView === 'uploadsAll',\n field: 'id',\n values: page.selected[page.currentView],\n cb (failed) {\n // Update state of checkboxes\n if (failed.length)\n page.selected[page.currentView] = page.selected[page.currentView]\n .filter(id => {\n return failed.includes(id)\n })\n else\n page.selected[page.currentView] = []\n\n // Update local storage\n if (page.selected[page.currentView].length)\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n else\n delete localStorage[lsKeys.selected[page.currentView]]\n\n // Reload uploads list\n // eslint-disable-next-line compat/compat\n page.getUploads(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }\n })\n}\n\npage.deleteUploadsByNames = (params = {}) => {\n let appendix = ''\n if (page.permissions.moderator)\n appendix = '
    Hint: You can use this feature to delete uploads by other users.'\n\n page.dom.innerHTML = `\n
    \n
    \n \n
    \n \n
    \n

    Separate each entry with a new line.${appendix}

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#submitBulkDelete').addEventListener('click', () => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n const textArea = document.querySelector('#bulkDeleteNames')\n\n // Clean up\n const seen = {}\n const names = textArea.value\n .split(/\\r?\\n/)\n .map(name => {\n const trimmed = name.trim()\n return /^[^\\s]+$/.test(trimmed)\n ? trimmed\n : ''\n })\n .filter(name => {\n // Filter out invalid and duplicate names\n return (!name || Object.prototype.hasOwnProperty.call(seen, name))\n ? false\n : (seen[name] = true)\n })\n\n // Update textarea with cleaned names\n textArea.value = names.join('\\n')\n\n if (!names.length)\n return swal('An error occurred!', 'You have not entered any upload names.', 'error')\n\n page.postBulkDeleteUploads({\n all: true,\n field: 'name',\n values: names,\n cb (failed) {\n textArea.value = failed.join('\\n')\n }\n })\n })\n}\n\npage.postBulkDeleteUploads = (params = {}) => {\n const count = params.values.length\n\n const objective = `${params.values.length} upload${count === 1 ? '' : 's'}`\n const boldObjective = objective.replace(/^(\\d*)(.*)/, '$1$2')\n let text = `

    You won't be able to recover ${boldObjective}!

    `\n\n if (params.all) {\n const obj1 = count === 1 ? 'an upload' : 'some uploads'\n const obj2 = count === 1 ? 'another user' : 'other users'\n text += `\\n

    Warning: You may be nuking ${obj1} by ${obj2}!

    `\n }\n\n const content = document.createElement('div')\n content.innerHTML = text\n\n swal({\n title: 'Are you sure?',\n content,\n icon: 'warning',\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: `Yes, nuke ${params.values.length === 1 ? 'it' : 'them'}!`,\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/upload/bulkdelete', {\n field: params.fields,\n values: params.values\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const failed = Array.isArray(response.data.failed) ? response.data.failed : []\n if (failed.length === params.values.length)\n swal('An error occurred!', `Unable to delete any of the ${objective}.`, 'error')\n else if (failed.length && failed.length < params.values.length)\n swal('Warning!', `From ${objective}, unable to delete ${failed.length} of them.`, 'warning')\n else\n swal('Deleted!', `${objective} ${count === 1 ? 'has' : 'have'} been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n if (typeof params.cb === 'function')\n params.cb(failed)\n }).catch(page.onAxiosError)\n })\n}\n\npage.addSelectedUploadsToAlbum = () => {\n if (page.currentView !== 'uploads')\n return\n\n const count = page.selected[page.currentView].length\n if (!count)\n return swal('An error occurred!', 'You have not selected any uploads.', 'error')\n\n page.addUploadsToAlbum(page.selected[page.currentView], failed => {\n if (!failed) return\n if (failed.length)\n page.selected[page.currentView] = page.selected[page.currentView].filter(id => {\n return failed.includes(id)\n })\n else\n page.selected[page.currentView] = []\n\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addToAlbum = id => {\n page.addUploadsToAlbum([id], failed => {\n if (!failed) return\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addUploadsToAlbum = (ids, callback) => {\n const count = ids.length\n\n const content = document.createElement('div')\n content.innerHTML = `\n
    \n

    You are about to add ${count} upload${count === 1 ? '' : 's'} to an album.

    \n

    If an upload is already in an album, it will be moved.

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n\n swal({\n icon: 'warning',\n content,\n buttons: {\n cancel: true,\n confirm: {\n text: 'OK',\n closeModal: false\n }\n }\n }).then(choose => {\n if (!choose) return\n\n const albumid = parseInt(document.querySelector('#swalAlbum').value)\n if (isNaN(albumid))\n return swal('An error occurred!', 'You did not choose an album.', 'error')\n\n axios.post('api/albums/addfiles', {\n ids,\n albumid\n }).then(add => {\n if (!add) return\n\n if (add.data.success === false) {\n if (add.data.description === 'No token provided')\n page.verifyToken(page.token)\n else\n swal('An error occurred!', add.data.description, 'error')\n\n return\n }\n\n let added = ids.length\n if (add.data.failed && add.data.failed.length)\n added -= add.data.failed.length\n\n const suffix = `upload${ids.length === 1 ? '' : 's'}`\n if (!added)\n return swal('An error occurred!', `Could not add the ${suffix} to the album.`, 'error')\n\n swal('Woohoo!', `Successfully ${albumid < 0 ? 'removed' : 'added'} ${added} ${suffix} ${albumid < 0 ? 'from' : 'to'} the album.`, 'success', {\n buttons: false,\n timer: 1500\n })\n callback(add.data.failed)\n }).catch(page.onAxiosError)\n })\n\n // Get albums list then update content of swal\n axios.get('api/albums').then(list => {\n if (list.data.success === false) {\n if (list.data.description === 'No token provided')\n page.verifyToken(page.token)\n else\n swal('An error occurred!', list.data.description, 'error')\n\n return\n }\n\n // If the prompt was replaced, the container would be missing\n const select = document.querySelector('#swalAlbum')\n if (!select) return\n\n select.innerHTML += list.data.albums\n .map(album => {\n return ``\n })\n .join('\\n')\n\n select.getElementsByTagName('option')[1].innerHTML = 'Choose an album'\n select.removeAttribute('disabled')\n }).catch(page.onAxiosError)\n}\n\npage.getAlbums = (params = {}) => {\n if (params && params.all && !page.permissions.moderator)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number')\n params.pageNum = 0\n\n const headers = {}\n\n if (params.all)\n headers.all = '1'\n\n const url = `api/albums/${params.pageNum}`\n axios.get(url, { headers }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const albums = response.data.albums\n if (params.pageNum && (albums.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getAlbums(params)\n } else {\n return swal('An error occurred!', `There are no more albums to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = params.all ? 'albumsAll' : 'albums'\n page.cache = {}\n\n const users = response.data.users\n const homeDomain = response.data.homeDomain\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n const createNewAlbum = `\n

    Create new album

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumTitleMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumDescMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n\n page.dom.innerHTML = `\n ${!params.all ? createNewAlbum : ''}\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n \n ${params.all ? '' : ''}\n \n \n \n \n \n \n \n \n
    IDNameUserUploadsCreated atPublic link
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < albums.length; i++) {\n const album = albums[i]\n const albumUrl = `${homeDomain}/a/${album.identifier}`\n\n const selected = page.selected[page.currentView].includes(album.id)\n if (!selected) unselected = true\n\n // Prettify\n album.prettyDate = page.getPrettyDate(new Date(album.timestamp * 1000))\n\n // Server-side explicitly expect this value to consider an album as disabled\n const enabled = album.enabled !== 0\n page.cache[album.id] = {\n name: album.name,\n download: album.download,\n public: album.public,\n description: album.description,\n enabled\n }\n\n const tr = document.createElement('tr')\n tr.dataset.id = album.id\n tr.innerHTML = `\n \n ${album.id}\n ${album.name}\n ${params.all ? `${album.userid ? (users[album.userid] || '') : ''}` : ''}\n ${album.uploads}\n ${album.prettyDate}\n ${albumUrl}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n if (page.currentView === 'albumsAll')\n page.views[page.currentView].filters = params.filters\n page.views[page.currentView].pageNum = albums.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.editAlbum = id => {\n const album = page.cache[id]\n if (!album) return\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n
    \n \n
    \n

    Max length is ${page.albumTitleMaxLength} characters.

    \n
    \n
    \n
    \n \n
    \n

    Max length is ${page.albumDescMaxLength} characters.

    \n
    \n ${page.currentView === 'albumsAll' && page.permissions.moderator\n ? `
    \n
    \n \n
    \n
    `\n : ''}\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n `\n\n swal({\n title: 'Edit album',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(value => {\n if (!value) return\n\n const post = {\n id,\n name: document.querySelector('#swalName').value.trim(),\n description: document.querySelector('#swalDescription').value.trim(),\n download: document.querySelector('#swalDownload').checked,\n public: document.querySelector('#swalPublic').checked,\n requestLink: document.querySelector('#swalRequestLink').checked\n }\n\n if (page.currentView === 'albumsAll' && page.permissions.moderator)\n post.enabled = document.querySelector('#swalEnabled').checked\n\n axios.post('api/albums/edit', post).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n if (response.data.identifier)\n swal('Success!', `The album's new identifier is: ${response.data.identifier}.`, 'success')\n else if (response.data.name !== album.name)\n swal('Success!', `The album was renamed to: ${response.data.name}.`, 'success')\n else\n swal('Success!', 'The album was edited.', 'success', {\n buttons: false,\n timer: 1500\n })\n\n page.getAlbumsSidebar()\n // Reload albums list\n // eslint-disable-next-line compat/compat\n page.getAlbums(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.disableAlbum = id => {\n swal({\n title: 'Are you sure?',\n text: 'This won\\'t delete the uploads associated with the album!',\n icon: 'warning',\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, disable it!',\n closeModal: false\n },\n purge: {\n text: 'Umm, delete the uploads too, please?',\n value: 'purge',\n className: 'swal-button--danger',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/albums/disable', {\n id,\n purge: proceed === 'purge'\n }).then(response => {\n if (response.data.success === false) {\n const failed = Array.isArray(response.data.failed)\n ? response.data.failed\n : []\n\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else if (failed.length)\n return swal('An error occurred!', `Unable to delete ${failed.length} of the album's upload${failed.length === 1 ? '' : 's'}.`, 'error')\n else\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Deleted!', 'Your album has been disabled.', 'success', {\n buttons: false,\n timer: 1500\n })\n\n page.getAlbumsSidebar()\n // Reload albums list\n // eslint-disable-next-line compat/compat\n page.getAlbums(Object.assign(page.views[page.currentView], {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.submitAlbum = element => {\n page.updateTrigger(element, 'loading')\n\n axios.post('api/albums', {\n name: document.querySelector('#albumName').value.trim(),\n description: document.querySelector('#albumDescription').value.trim()\n }).then(response => {\n if (!response) return\n\n page.updateTrigger(element)\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Woohoo!', 'Album was created successfully.', 'success', {\n buttons: false,\n timer: 1500\n })\n page.getAlbumsSidebar()\n page.getAlbums({\n pageNum: -1\n })\n }).catch(error => {\n page.updateTrigger(element)\n page.onAxiosError(error)\n })\n}\n\npage.getAlbumsSidebar = () => {\n axios.get('api/albums', { headers: { sidebar: '1' } }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const albums = response.data.albums\n const count = response.data.count\n const albumsContainer = document.querySelector('#albumsContainer')\n\n // Clear albums sidebar if necessary\n const oldAlbums = albumsContainer.querySelectorAll('li > a')\n if (oldAlbums.length) {\n for (let i = 0; i < oldAlbums.length; i++)\n page.menus.splice(page.menus.indexOf(oldAlbums[i]), 1)\n albumsContainer.innerHTML = ''\n }\n\n if (albums === undefined)\n return\n\n for (let i = 0; i < albums.length; i++) {\n const album = albums[i]\n const li = document.createElement('li')\n const a = document.createElement('a')\n a.id = album.id\n a.className = 'is-relative'\n a.innerHTML = album.name\n\n a.addEventListener('click', event => {\n page.getUploads({\n album: parseInt(event.currentTarget.id),\n trigger: event.currentTarget\n })\n })\n page.menus.push(a)\n\n li.appendChild(a)\n albumsContainer.appendChild(li)\n }\n\n if (count > albums.length) {\n const li = document.createElement('li')\n const a = document.createElement('a')\n a.className = 'is-relative'\n a.innerHTML = '...'\n a.title = `You have ${count} albums, but the sidebar can only list your first ${albums.length} albums.`\n\n a.addEventListener('click', event => {\n page.getAlbums({\n trigger: document.querySelector('#itemManageYourAlbums')\n })\n })\n\n li.appendChild(a)\n albumsContainer.appendChild(li)\n }\n }).catch(page.onAxiosError)\n}\n\npage.changeToken = (params = {}) => {\n page.dom.innerHTML = `\n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#getNewToken').addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n const trigger = event.currentTarget\n page.updateTrigger(trigger, 'loading')\n axios.post('api/tokens/change').then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n page.updateTrigger(trigger)\n swal({\n title: 'Woohoo!',\n text: 'Your token was successfully changed.',\n icon: 'success',\n buttons: false,\n timer: 1500\n }).then(() => {\n axios.defaults.headers.common.token = response.data.token\n localStorage[lsKeys.token] = response.data.token\n page.token = response.data.token\n page.changeToken()\n })\n }).catch(error => {\n page.updateTrigger(trigger)\n page.onAxiosError(error)\n })\n })\n}\n\npage.changePassword = (params = {}) => {\n page.dom.innerHTML = `\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n `\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n document.querySelector('#sendChangePassword').addEventListener('click', event => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (!page.dom.querySelector('form').checkValidity())\n return\n\n if (document.querySelector('#password').value === document.querySelector('#passwordConfirm').value)\n page.sendNewPassword(document.querySelector('#password').value, event.currentTarget)\n else\n swal({\n title: 'Password mismatch!',\n text: 'Your passwords do not match, please try again.',\n icon: 'error'\n })\n })\n}\n\npage.sendNewPassword = (pass, element) => {\n page.updateTrigger(element, 'loading')\n\n axios.post('api/password/change', { password: pass }).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(element)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n page.updateTrigger(element)\n swal({\n title: 'Woohoo!',\n text: 'Your password was successfully changed.',\n icon: 'success',\n buttons: false,\n timer: 1500\n }).then(() => {\n page.changePassword()\n })\n }).catch(error => {\n page.updateTrigger(element)\n page.onAxiosError(error)\n })\n}\n\npage.getUsers = (params = {}) => {\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n if (!page.permissions.admin)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number')\n params.pageNum = 0\n\n const url = `api/users/${params.pageNum}`\n axios.get(url).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const users = response.data.users\n if (params.pageNum && (users.length === 0)) {\n page.updateTrigger(params.trigger)\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getUsers(params)\n } else {\n return swal('An error occurred!', `There are no more users to populate page ${params.pageNum + 1}.`, 'error')\n }\n }\n\n page.currentView = 'users'\n page.cache = {}\n\n if (params.pageNum < 0) params.pageNum = Math.max(0, pages + params.pageNum)\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n const filter = `\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n const extraControls = `\n
    \n ${filter}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `\n\n const controls = `\n \n `\n\n // Do some string replacements for bottom controls\n const bottomFiltersId = 'bFilters'\n const bottomJumpId = 'bJumpToPage'\n const bottomExtraControls = extraControls\n .replace(/id=\"filters\"/, `id=\"${bottomFiltersId}\"`)\n .replace(/(data-action=\"filter-uploads\")/, `$1 data-filtersid=\"${bottomFiltersId}\"`)\n .replace(/id=\"jumpToPage\"/, `id=\"${bottomJumpId}\"`)\n .replace(/(data-action=\"jump-to-page\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n const bottomPagination = pagination\n .replace(/(data-action=\"page-ellipsis\")/g, `$1 data-jumpid=\"${bottomJumpId}\"`)\n\n // Whether there are any unselected items\n let unselected = false\n\n page.dom.innerHTML = `\n ${pagination}\n ${extraControls}\n ${controls}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    UsernameUploadsUsageGroupRegistration dateLast token update
    \n
    \n ${controls}\n ${bottomExtraControls}\n ${bottomPagination}\n `\n\n const table = document.querySelector('#table')\n\n for (let i = 0; i < users.length; i++) {\n const user = users[i]\n const selected = page.selected[page.currentView].includes(user.id)\n if (!selected) unselected = true\n\n let displayGroup = null\n const groups = Object.keys(user.groups)\n for (let i = 0; i < groups.length; i++) {\n if (!user.groups[groups[i]]) break\n displayGroup = groups[i]\n }\n\n // Server-side explicitly expects either of these two values to consider a user as disabled\n const enabled = user.enabled !== false && user.enabled !== 0\n page.cache[user.id] = {\n username: user.username,\n groups: user.groups,\n enabled,\n displayGroup\n }\n\n const prettyDate = user.registration\n ? page.getPrettyDate(new Date(user.registration * 1000))\n : '-'\n const prettyTokenUpdate = user.timestamp\n ? page.getPrettyDate(new Date(user.timestamp * 1000))\n : '-'\n\n const tr = document.createElement('tr')\n tr.dataset.id = user.id\n tr.innerHTML = `\n \n ${user.username}\n ${user.uploads}\n ${page.getPrettyBytes(user.usage)}\n ${displayGroup}\n ${prettyDate}\n ${prettyTokenUpdate}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n\n table.appendChild(tr)\n page.checkboxes = table.querySelectorAll('.checkbox[data-action=\"select\"]')\n }\n\n const selectAll = document.querySelector('#selectAll')\n if (selectAll && !unselected) {\n selectAll.checked = true\n selectAll.title = 'Unselect all'\n }\n\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n\n page.views[page.currentView].pageNum = users.length ? params.pageNum : 0\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\npage.createUser = () => {\n const groupOptions = Object.keys(page.permissions).map((g, i, a) => {\n const disabled = !(a[i + 1] && page.permissions[a[i + 1]])\n return ``\n }).join('\\n')\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n `\n\n swal({\n title: 'Create new user',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/create', {\n username: document.querySelector('#swalUsername').value,\n password: document.querySelector('#swalPassword').value,\n group: document.querySelector('#swalGroup').value\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const div = document.createElement('div')\n div.innerHTML = `\n

    Username: ${response.data.username}

    \n

    Password: ${response.data.password}

    \n

    User group: ${response.data.group}

    \n `\n swal({\n title: 'Created a new user!',\n icon: 'success',\n content: div\n })\n\n // Load last page of users list\n // eslint-disable-next-line compat/compat\n page.getUsers(Object.assign(page.views.users, {\n pageNum: -1\n }))\n }).catch(page.onAxiosError)\n })\n}\n\npage.editUser = id => {\n const user = page.cache[id]\n if (!user) return\n\n const groupOptions = Object.keys(page.permissions).map((g, i, a) => {\n const selected = g === user.displayGroup\n const disabled = !(a[i + 1] && page.permissions[a[i + 1]])\n return ``\n }).join('\\n')\n\n const div = document.createElement('div')\n div.innerHTML = `\n
    \n

    User ID: ${id}

    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n `\n\n swal({\n title: 'Edit user',\n icon: 'info',\n content: div,\n buttons: {\n cancel: true,\n confirm: {\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/edit', {\n id,\n username: document.querySelector('#swalUsername').value,\n group: document.querySelector('#swalGroup').value,\n enabled: document.querySelector('#swalEnabled').checked,\n resetPassword: document.querySelector('#swalResetPassword').checked\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n let autoClose = true\n const div = document.createElement('div')\n\n let displayName = user.username\n if (response.data.update.username !== user.username) {\n div.innerHTML += `

    ${user.username} was renamed into: ${response.data.update.username}.

    `\n autoClose = false\n displayName = response.data.update.username\n }\n\n if (response.data.update.password) {\n div.innerHTML += `\n

    ${displayName}'s new password is:

    \n

    ${response.data.update.password}

    \n `\n autoClose = false\n }\n\n if (response.data.update.enabled !== user.enabled)\n div.innerHTML += `

    ${displayName} has been ${response.data.update.enabled ? 'enabled' : 'disabled'}!

    `\n\n if (!div.innerHTML)\n div.innerHTML = `

    ${displayName} was edited!

    `\n\n swal({\n title: 'Success!',\n icon: 'success',\n content: div,\n buttons: !autoClose,\n timer: autoClose ? 1500 : null\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.disableUser = id => {\n const user = page.cache[id]\n if (!user || !user.enabled) return\n\n const content = document.createElement('div')\n content.innerHTML = `\n

    You will be disabling a user named ${page.cache[id].username}.

    \n

    Their files will remain.

    \n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, disable them!',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/disable', { id }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else\n return swal('An error occurred!', response.data.description, 'error')\n\n swal('Success!', `${page.cache[id].username} has been disabled.`, 'success', {\n buttons: false,\n timer: 1500\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.deleteUser = id => {\n const user = page.cache[id]\n if (!user) return\n\n const content = document.createElement('div')\n content.innerHTML = `\n

    You will be deleting a user named ${page.cache[id].username}.

    \n

    Their files will remain, unless you choose otherwise.

    \n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, delete it!',\n closeModal: false\n },\n purge: {\n text: 'Yes, and the uploads too!',\n value: 'purge',\n className: 'swal-button--danger',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/delete', {\n id,\n purge: proceed === 'purge'\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false) {\n const failed = Array.isArray(response.data.failed)\n ? response.data.failed\n : []\n\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else if (failed.length)\n return swal('An error occurred!', `Unable to delete ${failed.length} of the user's upload${failed.length === 1 ? '' : 's'}.`, 'error')\n else\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Success!', `${page.cache[id].username} has been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n // Reload users list\n // eslint-disable-next-line compat/compat\n page.getUsers(Object.assign(page.views.users, {\n autoPage: true\n }))\n }).catch(page.onAxiosError)\n })\n}\n\n// Roughly based on https://github.com/mayuska/pagination/blob/master/index.js\npage.paginate = (totalItems, itemsPerPage, currentPage) => {\n currentPage = currentPage + 1\n const step = 3\n const numPages = Math.ceil(totalItems / itemsPerPage)\n\n let template = ''\n const elementsToShow = step * 2\n const add = {\n pageNum (start, end) {\n for (let i = start; i <= end; ++i)\n template += `
  • ${i}
  • `\n },\n startDots () {\n template += `\n
  • 1
  • \n
  • \n `\n },\n endDots () {\n template += `\n
  • \n
  • ${numPages}
  • \n `\n }\n }\n\n if (elementsToShow + 1 >= numPages) {\n add.pageNum(1, numPages)\n } else if (currentPage < elementsToShow) {\n add.pageNum(1, elementsToShow)\n add.endDots()\n } else if (currentPage > numPages - elementsToShow + 1) {\n add.startDots()\n add.pageNum(numPages - elementsToShow + 1, numPages)\n } else {\n add.startDots()\n add.pageNum(currentPage - step + 1, currentPage + step - 1)\n add.endDots()\n }\n\n return `\n \n `\n}\n\npage.getStatistics = (params = {}) => {\n if (!page.permissions.admin)\n return swal('An error occurred!', 'You cannot do this!', 'error')\n\n if (page.isSomethingLoading)\n return page.warnSomethingLoading()\n\n page.updateTrigger(params.trigger, 'loading')\n\n const url = 'api/stats'\n axios.get(url).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n let content = ''\n const keys = Object.keys(response.data.stats)\n for (let i = 0; i < keys.length; i++) {\n let rows = ''\n if (!response.data.stats[keys[i]])\n rows += `\n \n Generating, please try again later\\u2026\n \n \n `\n else\n try {\n const types = response.data.stats[keys[i]]._types || {}\n const valKeys = Object.keys(response.data.stats[keys[i]])\n for (let j = 0; j < valKeys.length; j++) {\n // Skip keys that starts with an underscore\n if (/^_/.test(valKeys[j]))\n continue\n\n const value = response.data.stats[keys[i]][valKeys[j]]\n let parsed = value\n\n // Parse values with some preset formatting\n if ((types.number || []).includes(valKeys[j]))\n parsed = value.toLocaleString()\n if ((types.byte || []).includes(valKeys[j]))\n parsed = page.getPrettyBytes(value)\n if ((types.byteUsage || []).includes(valKeys[j]))\n parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${Math.floor(value.used / value.total * 100)}%)`\n if ((types.uptime || []).includes(valKeys[j]))\n parsed = page.getPrettyUptime(value)\n\n const string = valKeys[j]\n .replace(/([A-Z])/g, ' $1')\n .replace(/(^|\\s)(cpu|db|zip)/gi, s => s.toUpperCase())\n rows += `\n \n ${string}\n ${parsed}\n \n `\n }\n } catch (error) {\n rows = `\n \n Error parsing response. Try again?\n \n \n `\n page.onError(error)\n }\n\n content += `\n
    \n \n \n \n \n \n \n \n \n ${rows}\n \n
    ${keys[i]}
    \n
    \n `\n }\n\n if (Array.isArray(response.data.hrtime))\n content += `\n
    \n
    \n Time taken: ${response.data.hrtime[0]}s ${Math.ceil(response.data.hrtime[1] / 1000000)}ms.\n
    \n
    \n `\n\n page.dom.innerHTML = content\n page.fadeAndScroll()\n page.updateTrigger(params.trigger, 'active')\n }).catch(error => {\n page.updateTrigger(params.trigger)\n page.onAxiosError(error)\n })\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n // Polyfill Object.assign()\n // eslint-disable-next-line compat/compat\n if (typeof Object.assign !== 'function')\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, 'assign', {\n value: function assign (target, varArgs) { // .length of function is 2\n 'use strict'\n if (target === null || target === undefined)\n throw new TypeError('Cannot convert undefined or null to object')\n const to = Object(target)\n for (let i = 1; i < arguments.length; i++) {\n const nextSource = arguments[i]\n if (nextSource !== null && nextSource !== undefined)\n for (const nextKey in nextSource)\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey))\n to[nextKey] = nextSource[nextKey]\n }\n return to\n },\n writable: true,\n configurable: true\n })\n\n // Add 'no-touch' class to non-touch devices\n if (!('ontouchstart' in document.documentElement))\n document.documentElement.classList.add('no-touch')\n\n const selectedKeys = ['uploads', 'uploadsAll', 'albums', 'albumsAll', 'users']\n for (let i = 0; i < selectedKeys.length; i++) {\n const ls = localStorage[lsKeys.selected[selectedKeys[i]]]\n if (ls) page.selected[selectedKeys[i]] = JSON.parse(ls)\n }\n\n page.preparePage()\n\n page.clipboardJS = new ClipboardJS('.clipboard-js')\n\n page.clipboardJS.on('success', () => {\n return swal('', 'The link has been copied to clipboard.', 'success', {\n buttons: false,\n timer: 1500\n })\n })\n\n page.clipboardJS.on('error', page.onError)\n\n page.lazyLoad = new LazyLoad()\n})\n"]} \ No newline at end of file diff --git a/src/versions.json b/src/versions.json index a634c84..b2ff8d3 100644 --- a/src/versions.json +++ b/src/versions.json @@ -1,5 +1,5 @@ { - "1": "1601588168", + "1": "1601657601", "2": "1589010026", "3": "1581416390", "4": "1581416390",