/*
 * ATTENTION: An "eval-source-map" devtool has been used.
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
/******/ (function() { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./libs/datatables-fixedheader/datatables.fixedheader.js":
/*!***************************************************************!*\
  !*** ./libs/datatables-fixedheader/datatables.fixedheader.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var datatables_net_fixedheader_js_dataTables_fixedHeader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! datatables.net-fixedheader/js/dataTables.fixedHeader */ "./node_modules/datatables.net-fixedheader/js/dataTables.fixedHeader.js");
/* harmony import */ var datatables_net_fixedheader_js_dataTables_fixedHeader__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(datatables_net_fixedheader_js_dataTables_fixedHeader__WEBPACK_IMPORTED_MODULE_0__);


/***/ }),

/***/ "./node_modules/datatables.net-fixedheader/js/dataTables.fixedHeader.js":
/*!******************************************************************************!*\
  !*** ./node_modules/datatables.net-fixedheader/js/dataTables.fixedHeader.js ***!
  \******************************************************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! FixedHeader 3.2.4\n * ©2009-2022 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary     FixedHeader\n * @description Fix a table's header or footer, so it is always visible while\n *              scrolling\n * @version     3.2.4\n * @author      SpryMedia Ltd (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk\n * @copyright   SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n *   MIT license - http://datatables.net/license/mit\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n(function( factory ){\n\tif ( true ) {\n\t\t// AMD\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\"), __webpack_require__(/*! datatables.net */ \"datatables.net\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\telse {}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\nvar _instCounter = 0;\n\nvar FixedHeader = function ( dt, config ) {\n\t// Sanity check - you just know it will happen\n\tif ( ! (this instanceof FixedHeader) ) {\n\t\tthrow \"FixedHeader must be initialised with the 'new' keyword.\";\n\t}\n\n\t// Allow a boolean true for defaults\n\tif ( config === true ) {\n\t\tconfig = {};\n\t}\n\n\tdt = new DataTable.Api( dt );\n\n\tthis.c = $.extend( true, {}, FixedHeader.defaults, config );\n\n\tthis.s = {\n\t\tdt: dt,\n\t\tposition: {\n\t\t\ttheadTop: 0,\n\t\t\ttbodyTop: 0,\n\t\t\ttfootTop: 0,\n\t\t\ttfootBottom: 0,\n\t\t\twidth: 0,\n\t\t\tleft: 0,\n\t\t\ttfootHeight: 0,\n\t\t\ttheadHeight: 0,\n\t\t\twindowHeight: $(window).height(),\n\t\t\tvisible: true\n\t\t},\n\t\theaderMode: null,\n\t\tfooterMode: null,\n\t\tautoWidth: dt.settings()[0].oFeatures.bAutoWidth,\n\t\tnamespace: '.dtfc'+(_instCounter++),\n\t\tscrollLeft: {\n\t\t\theader: -1,\n\t\t\tfooter: -1\n\t\t},\n\t\tenable: true\n\t};\n\n\tthis.dom = {\n\t\tfloatingHeader: null,\n\t\tthead: $(dt.table().header()),\n\t\ttbody: $(dt.table().body()),\n\t\ttfoot: $(dt.table().footer()),\n\t\theader: {\n\t\t\thost: null,\n\t\t\tfloating: null,\n\t\t\tfloatingParent: $('<div class=\"dtfh-floatingparent\">'),\n\t\t\tplaceholder: null\n\t\t},\n\t\tfooter: {\n\t\t\thost: null,\n\t\t\tfloating: null,\n\t\t\tfloatingParent: $('<div class=\"dtfh-floatingparent\">'),\n\t\t\tplaceholder: null\n\t\t}\n\t};\n\n\tthis.dom.header.host = this.dom.thead.parent();\n\tthis.dom.footer.host = this.dom.tfoot.parent();\n\n\tvar dtSettings = dt.settings()[0];\n\tif ( dtSettings._fixedHeader ) {\n\t\tthrow \"FixedHeader already initialised on table \"+dtSettings.nTable.id;\n\t}\n\n\tdtSettings._fixedHeader = this;\n\n\tthis._constructor();\n};\n\n\n/*\n * Variable: FixedHeader\n * Purpose:  Prototype for FixedHeader\n * Scope:    global\n */\n$.extend( FixedHeader.prototype, {\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * API methods\n\t */\n\n\t/**\n\t * Kill off FH and any events\n\t */\n\tdestroy: function () {\n\t\tvar dom = this.dom;\n\n\t\tthis.s.dt.off( '.dtfc' );\n\t\t$(window).off( this.s.namespace );\n\n\t\t// Remove clones of FC blockers\n\t\tif (dom.header.rightBlocker) {\n\t\t\tdom.header.rightBlocker.remove();\n\t\t}\n\t\tif (dom.header.leftBlocker) {\n\t\t\tdom.header.leftBlocker.remove();\n\t\t}\n\t\tif (dom.footer.rightBlocker) {\n\t\t\tdom.footer.rightBlocker.remove();\n\t\t}\n\t\tif (dom.footer.leftBlocker) {\n\t\t\tdom.footer.leftBlocker.remove();\n\t\t}\n\n\t\tif ( this.c.header ) {\n\t\t\tthis._modeChange( 'in-place', 'header', true );\n\t\t}\n\n\t\tif ( this.c.footer && dom.tfoot.length ) {\n\t\t\tthis._modeChange( 'in-place', 'footer', true );\n\t\t}\n\t},\n\n\t/**\n\t * Enable / disable the fixed elements\n\t *\n\t * @param  {boolean} enable `true` to enable, `false` to disable\n\t */\n\tenable: function ( enable, update )\n\t{\n\t\tthis.s.enable = enable;\n\n\t\tif ( update || update === undefined ) {\n\t\t\tthis._positions();\n\t\t\tthis._scroll( true );\n\t\t}\n\t},\n\n\t/**\n\t * Get enabled status\n\t */\n\tenabled: function ()\n\t{\n\t\treturn this.s.enable;\n\t},\n\t\n\t/**\n\t * Set header offset \n\t *\n\t * @param  {int} new value for headerOffset\n\t */\n\theaderOffset: function ( offset )\n\t{\n\t\tif ( offset !== undefined ) {\n\t\t\tthis.c.headerOffset = offset;\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn this.c.headerOffset;\n\t},\n\t\n\t/**\n\t * Set footer offset\n\t *\n\t * @param  {int} new value for footerOffset\n\t */\n\tfooterOffset: function ( offset )\n\t{\n\t\tif ( offset !== undefined ) {\n\t\t\tthis.c.footerOffset = offset;\n\t\t\tthis.update();\n\t\t}\n\n\t\treturn this.c.footerOffset;\n\t},\n\n\t\n\t/**\n\t * Recalculate the position of the fixed elements and force them into place\n\t */\n\tupdate: function (force)\n\t{\n\t\tif (! this.s.enable) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar table = this.s.dt.table().node();\n\n\t\tif ( $(table).is(':visible') ) {\n\t\t\tthis.enable( true, false );\n\t\t}\n\t\telse {\n\t\t\tthis.enable( false, false );\n\t\t}\n\n\t\t// Don't update if header is not in the document atm (due to\n\t\t// async events)\n\t\tif ($(table).children('thead').length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._positions();\n\t\tthis._scroll( force !== undefined ? force : true );\n\t},\n\n\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Constructor\n\t */\n\t\n\t/**\n\t * FixedHeader constructor - adding the required event listeners and\n\t * simple initialisation\n\t *\n\t * @private\n\t */\n\t_constructor: function ()\n\t{\n\t\tvar that = this;\n\t\tvar dt = this.s.dt;\n\n\t\t$(window)\n\t\t\t.on( 'scroll'+this.s.namespace, function () {\n\t\t\t\tthat._scroll();\n\t\t\t} )\n\t\t\t.on( 'resize'+this.s.namespace, DataTable.util.throttle( function () {\n\t\t\t\tthat.s.position.windowHeight = $(window).height();\n\t\t\t\tthat.update();\n\t\t\t}, 50 ) );\n\n\t\tvar autoHeader = $('.fh-fixedHeader');\n\t\tif ( ! this.c.headerOffset && autoHeader.length ) {\n\t\t\tthis.c.headerOffset = autoHeader.outerHeight();\n\t\t}\n\n\t\tvar autoFooter = $('.fh-fixedFooter');\n\t\tif ( ! this.c.footerOffset && autoFooter.length ) {\n\t\t\tthis.c.footerOffset = autoFooter.outerHeight();\n\t\t}\n\n\t\tdt\n\t\t\t.on( 'column-reorder.dt.dtfc column-visibility.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc', function (e, ctx) {\n\t\t\t\tthat.update();\n\t\t\t} )\n\t\t\t.on( 'draw.dt.dtfc', function (e, ctx) {\n\t\t\t\t// For updates from our own table, don't reclone, but for all others, do\n\t\t\t\tthat.update(ctx === dt.settings()[0] ? false : true);\n\t\t\t} );\n\n\t\tdt.on( 'destroy.dtfc', function () {\n\t\t\tthat.destroy();\n\t\t} );\n\n\t\tthis._positions();\n\t\tthis._scroll();\n\t},\n\n\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Private methods\n\t */\n\n\t/**\n\t * Clone a fixed item to act as a place holder for the original element\n\t * which is moved into a clone of the table element, and moved around the\n\t * document to give the fixed effect.\n\t *\n\t * @param  {string}  item  'header' or 'footer'\n\t * @param  {boolean} force Force the clone to happen, or allow automatic\n\t *   decision (reuse existing if available)\n\t * @private\n\t */\n\t_clone: function ( item, force )\n\t{\n\t\tvar that = this;\n\t\tvar dt = this.s.dt;\n\t\tvar itemDom = this.dom[ item ];\n\t\tvar itemElement = item === 'header' ?\n\t\t\tthis.dom.thead :\n\t\t\tthis.dom.tfoot;\n\n\t\t// If footer and scrolling is enabled then we don't clone\n\t\t// Instead the table's height is decreased accordingly - see `_scroll()`\n\t\tif (item === 'footer' && this._scrollEnabled()) {\n\t\t\treturn;\n\t\t}\t\n\n\t\tif ( ! force && itemDom.floating ) {\n\t\t\t// existing floating element - reuse it\n\t\t\titemDom.floating.removeClass( 'fixedHeader-floating fixedHeader-locked' );\n\t\t}\n\t\telse {\n\t\t\tvar docScrollLeft = $(document).scrollLeft();\n\t\t\tvar docScrollTop = $(document).scrollTop();\n\n\t\t\tif ( itemDom.floating ) {\n\t\t\t\tif(itemDom.placeholder !== null) {\n\t\t\t\t\titemDom.placeholder.remove();\n\t\t\t\t}\n\t\t\t\tthis._unsize( item );\n\t\t\t\titemDom.floating.children().detach();\n\t\t\t\titemDom.floating.remove();\n\t\t\t}\n\n\t\t\tvar tableNode = $(dt.table().node()); \n\t\t\tvar scrollBody = $(tableNode.parent());\n\t\t\tvar scrollEnabled = this._scrollEnabled();\n\n\t\t\titemDom.floating = $( dt.table().node().cloneNode( false ) )\n\t\t\t\t.attr( 'aria-hidden', 'true' )\n\t\t\t\t.css({\n\t\t\t\t\t'table-layout': 'fixed',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0\n\t\t\t\t})\n\t\t\t\t.removeAttr( 'id' )\n\t\t\t\t.append( itemElement );\n\n\t\t\titemDom.floatingParent\n\t\t\t\t.css({\n\t\t\t\t\twidth: scrollBody.width(),\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\theight: 'fit-content',\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\tleft: scrollEnabled ? tableNode.offset().left + scrollBody.scrollLeft() : 0\n\t\t\t\t})\n\t\t\t\t.css(\n\t\t\t\t\titem === 'header' ?\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttop: this.c.headerOffset,\n\t\t\t\t\t\t\tbottom: ''\n\t\t\t\t\t\t} :\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttop: '',\n\t\t\t\t\t\t\tbottom: this.c.footerOffset\n\t\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\t.addClass(item === 'footer' ? 'dtfh-floatingparentfoot' : 'dtfh-floatingparenthead')\n\t\t\t\t.append(itemDom.floating)\n\t\t\t\t.appendTo( 'body' );\n\n\t\t\tthis._stickyPosition(itemDom.floating, '-');\n\n\t\t\tvar scrollLeftUpdate = function () {\n\t\t\t\tvar scrollLeft = scrollBody.scrollLeft()\n\t\t\t\tthat.s.scrollLeft = {footer: scrollLeft, header: scrollLeft};\n\t\t\t\titemDom.floatingParent.scrollLeft(that.s.scrollLeft.header);\n\t\t\t}\n\n\t\t\tscrollLeftUpdate();\n\t\t\tscrollBody\n\t\t\t\t.off('scroll.dtfh')\n\t\t\t\t.on('scroll.dtfh', scrollLeftUpdate);\n\n\t\t\t// Insert a fake thead/tfoot into the DataTable to stop it jumping around\n\t\t\titemDom.placeholder = itemElement.clone( false );\n\t\t\titemDom.placeholder\n\t\t\t\t.find( '*[id]' )\n\t\t\t\t.removeAttr( 'id' );\n\n\t\t\titemDom.host.prepend( itemDom.placeholder );\n\n\t\t\t// Clone widths\n\t\t\tthis._matchWidths( itemDom.placeholder, itemDom.floating );\n\n\t\t\t// The above action will remove the table header, potentially causing the table to\n\t\t\t// collapse to a smaller size, before it is then re-inserted (append). The result\n\t\t\t// can be that the document, if scrolling, can \"jump\".\n\t\t\t$(document)\n\t\t\t\t.scrollTop(docScrollTop)\n\t\t\t\t.scrollLeft(docScrollLeft);\n\t\t}\n\t},\n\n\t/**\n\t * This method sets the sticky position of the header elements to match fixed columns\n\t * @param {JQuery<HTMLElement>} el \n\t * @param {string} sign \n\t */\n\t_stickyPosition: function(el, sign) {\n\t\tif (this._scrollEnabled()) {\n\t\t\tvar that = this\n\t\t\tvar rtl = $(that.s.dt.table().node()).css('direction') === 'rtl';\n\n\t\t\tel.find('th').each(function() {\n\t\t\t\t// Find out if fixed header has previously set this column\n\t\t\t\tif ($(this).css('position') === 'sticky') {\n\t\t\t\t\tvar right = $(this).css('right');\n\t\t\t\t\tvar left = $(this).css('left');\n\t\t\t\t\tif (right !== 'auto' && !rtl) {\n\t\t\t\t\t\t// New position either adds or dismisses the barWidth\n\t\t\t\t\t\tvar potential = +right.replace(/px/g, '') + (sign === '-' ? -1 : 1) * that.s.dt.settings()[0].oBrowser.barWidth;\n\t\t\t\t\t\t$(this).css('right', potential > 0 ? potential : 0);\n\t\t\t\t\t}\n\t\t\t\t\telse if(left !== 'auto' && rtl) {\n\t\t\t\t\t\tvar potential = +left.replace(/px/g, '') + (sign === '-' ? -1 : 1) * that.s.dt.settings()[0].oBrowser.barWidth;\n\t\t\t\t\t\t$(this).css('left', potential > 0 ? potential : 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Copy widths from the cells in one element to another. This is required\n\t * for the footer as the footer in the main table takes its sizes from the\n\t * header columns. That isn't present in the footer so to have it still\n\t * align correctly, the sizes need to be copied over. It is also required\n\t * for the header when auto width is not enabled\n\t *\n\t * @param  {jQuery} from Copy widths from\n\t * @param  {jQuery} to   Copy widths to\n\t * @private\n\t */\n\t_matchWidths: function ( from, to ) {\n\t\tvar get = function ( name ) {\n\t\t\treturn $(name, from)\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn $(this).css('width').replace(/[^\\d\\.]/g, '') * 1;\n\t\t\t\t} ).toArray();\n\t\t};\n\n\t\tvar set = function ( name, toWidths ) {\n\t\t\t$(name, to).each( function ( i ) {\n\t\t\t\t$(this).css( {\n\t\t\t\t\twidth: toWidths[i],\n\t\t\t\t\tminWidth: toWidths[i]\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\n\t\tvar thWidths = get( 'th' );\n\t\tvar tdWidths = get( 'td' );\n\n\t\tset( 'th', thWidths );\n\t\tset( 'td', tdWidths );\n\t},\n\n\t/**\n\t * Remove assigned widths from the cells in an element. This is required\n\t * when inserting the footer back into the main table so the size is defined\n\t * by the header columns and also when auto width is disabled in the\n\t * DataTable.\n\t *\n\t * @param  {string} item The `header` or `footer`\n\t * @private\n\t */\n\t_unsize: function ( item ) {\n\t\tvar el = this.dom[ item ].floating;\n\n\t\tif ( el && (item === 'footer' || (item === 'header' && ! this.s.autoWidth)) ) {\n\t\t\t$('th, td', el).css( {\n\t\t\t\twidth: '',\n\t\t\t\tminWidth: ''\n\t\t\t} );\n\t\t}\n\t\telse if ( el && item === 'header' ) {\n\t\t\t$('th, td', el).css( 'min-width', '' );\n\t\t}\n\t},\n\n\t/**\n\t * Reposition the floating elements to take account of horizontal page\n\t * scroll\n\t *\n\t * @param  {string} item       The `header` or `footer`\n\t * @param  {int}    scrollLeft Document scrollLeft\n\t * @private\n\t */\n\t_horizontal: function ( item, scrollLeft )\n\t{\n\t\tvar itemDom = this.dom[ item ];\n\t\tvar position = this.s.position;\n\t\tvar lastScrollLeft = this.s.scrollLeft;\n\n\t\tif ( itemDom.floating && lastScrollLeft[ item ] !== scrollLeft ) {\n\t\t\t// If scrolling is enabled we need to match the floating header to the body\n\t\t\tif (this._scrollEnabled()) {\n\t\t\t\tvar newScrollLeft = $($(this.s.dt.table().node()).parent()).scrollLeft()\n\t\t\t\titemDom.floating.scrollLeft(newScrollLeft);\n\t\t\t\titemDom.floatingParent.scrollLeft(newScrollLeft);\n\t\t\t}\n\n\t\t\tlastScrollLeft[ item ] = scrollLeft;\n\t\t}\n\t},\n\n\t/**\n\t * Change from one display mode to another. Each fixed item can be in one\n\t * of:\n\t *\n\t * * `in-place` - In the main DataTable\n\t * * `in` - Floating over the DataTable\n\t * * `below` - (Header only) Fixed to the bottom of the table body\n\t * * `above` - (Footer only) Fixed to the top of the table body\n\t * \n\t * @param  {string}  mode        Mode that the item should be shown in\n\t * @param  {string}  item        'header' or 'footer'\n\t * @param  {boolean} forceChange Force a redraw of the mode, even if already\n\t *     in that mode.\n\t * @private\n\t */\n\t_modeChange: function ( mode, item, forceChange )\n\t{\n\t\tvar dt = this.s.dt;\n\t\tvar itemDom = this.dom[ item ];\n\t\tvar position = this.s.position;\n\n\t\t// Just determine if scroll is enabled once\n\t\tvar scrollEnabled = this._scrollEnabled();\n\n\t\t// If footer and scrolling is enabled then we don't clone\n\t\t// Instead the table's height is decreased accordingly - see `_scroll()`\n\t\tif (item === 'footer' && scrollEnabled) {\n\t\t\treturn;\n\t\t}\t\t\n\n\t\t// It isn't trivial to add a !important css attribute...\n\t\tvar importantWidth = function (w) {\n\t\t\titemDom.floating.attr('style', function(i,s) {\n\t\t\t\treturn (s || '') + 'width: '+w+'px !important;';\n\t\t\t});\n\n\t\t\t// If not scrolling also have to update the floatingParent\n\t\t\tif (!scrollEnabled) {\n\t\t\t\titemDom.floatingParent.attr('style', function(i,s) {\n\t\t\t\t\treturn (s || '') + 'width: '+w+'px !important;';\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t// Record focus. Browser's will cause input elements to loose focus if\n\t\t// they are inserted else where in the doc\n\t\tvar tablePart = this.dom[ item==='footer' ? 'tfoot' : 'thead' ];\n\t\tvar focus = $.contains( tablePart[0], document.activeElement ) ?\n\t\t\tdocument.activeElement :\n\t\t\tnull;\n\t\tvar scrollBody = $($(this.s.dt.table().node()).parent());\n\n\t\tif ( mode === 'in-place' ) {\n\t\t\t// Insert the header back into the table's real header\n\t\t\tif ( itemDom.placeholder ) {\n\t\t\t\titemDom.placeholder.remove();\n\t\t\t\titemDom.placeholder = null;\n\t\t\t}\n\n\t\t\tthis._unsize( item );\n\n\t\t\tif ( item === 'header' ) {\n\t\t\t\titemDom.host.prepend( tablePart );\n\t\t\t}\n\t\t\telse {\n\t\t\t\titemDom.host.append( tablePart );\n\t\t\t}\n\n\t\t\tif ( itemDom.floating ) {\n\t\t\t\titemDom.floating.remove();\n\t\t\t\titemDom.floating = null;\n\t\t\t\tthis._stickyPosition(itemDom.host, '+');\n\t\t\t}\n\n\t\t\tif ( itemDom.floatingParent ) {\n\t\t\t\titemDom.floatingParent.remove();\n\t\t\t}\n\n\t\t\t$($(itemDom.host.parent()).parent()).scrollLeft(scrollBody.scrollLeft())\n\t\t}\n\t\telse if ( mode === 'in' ) {\n\t\t\t// Remove the header from the read header and insert into a fixed\n\t\t\t// positioned floating table clone\n\t\t\tthis._clone( item, forceChange );\n\n\t\t\t// Get useful position values\n\t\t\tvar scrollOffset = scrollBody.offset();\n\t\t\tvar windowTop = $(document).scrollTop();\n\t\t\tvar windowHeight = $(window).height();\n\t\t\tvar windowBottom = windowTop + windowHeight;\n\t\t\tvar bodyTop = scrollEnabled ? scrollOffset.top : position.tbodyTop;\n\t\t\tvar bodyBottom = scrollEnabled ? scrollOffset.top + scrollBody.outerHeight() : position.tfootTop\n\n\t\t\t// Calculate the amount that the footer or header needs to be shuffled\n\t\t\tvar shuffle = item === 'footer' ?\n\t\t\t\t// footer and top of body isn't on screen\n\t\t\t\tbodyTop > windowBottom ?\n\t\t\t\t\t// Yes - push the footer below\n\t\t\t\t\tposition.tfootHeight :\n\t\t\t\t\t// No - bottom set to the gap between the top of the body and the bottom of the window\n\t\t\t\t\tbodyTop + position.tfootHeight - windowBottom :\n\t\t\t\t// Otherwise must be a header so get the difference from the bottom of the\n\t\t\t\t//  desired floating header and the bottom of the table body\n\t\t\t\twindowTop + this.c.headerOffset + position.theadHeight - bodyBottom\n\t\t\t\t\n\t\t\t// Set the top or bottom based off of the offset and the shuffle value\n\t\t\tvar prop = item === 'header' ? 'top' : 'bottom';\n\t\t\tvar val = this.c[item+'Offset'] - (shuffle > 0 ? shuffle : 0);\n\n\t\t\titemDom.floating.addClass( 'fixedHeader-floating' );\n\t\t\titemDom.floatingParent\n\t\t\t\t.css(prop, val)\n\t\t\t\t.css( {\n\t\t\t\t\t'left': position.left,\n\t\t\t\t\t'height': item === 'header' ? position.theadHeight : position.tfootHeight,\n\t\t\t\t\t'z-index': 2\n\t\t\t\t})\n\t\t\t\t.append(itemDom.floating);\n\n\t\t\timportantWidth(position.width);\n\n\t\t\tif ( item === 'footer' ) {\n\t\t\t\titemDom.floating.css( 'top', '' );\n\t\t\t}\n\t\t}\n\t\telse if ( mode === 'below' ) { // only used for the header\n\t\t\t// Fix the position of the floating header at base of the table body\n\t\t\tthis._clone( item, forceChange );\n\n\t\t\titemDom.floating.addClass( 'fixedHeader-locked' );\n\t\t\titemDom.floatingParent.css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: position.tfootTop - position.theadHeight,\n\t\t\t\tleft: position.left+'px'\n\t\t\t});\n\n\t\t\timportantWidth(position.width);\n\t\t}\n\t\telse if ( mode === 'above' ) { // only used for the footer\n\t\t\t// Fix the position of the floating footer at top of the table body\n\t\t\tthis._clone( item, forceChange );\n\n\t\t\titemDom.floating.addClass( 'fixedHeader-locked' );\n\t\t\titemDom.floatingParent.css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: position.tbodyTop,\n\t\t\t\tleft: position.left+'px'\n\t\t\t});\n\n\t\t\timportantWidth(position.width);\n\t\t}\n\n\t\t// Restore focus if it was lost\n\t\tif ( focus && focus !== document.activeElement ) {\n\t\t\tsetTimeout( function () {\n\t\t\t\tfocus.focus();\n\t\t\t}, 10 );\n\t\t}\n\n\t\tthis.s.scrollLeft.header = -1;\n\t\tthis.s.scrollLeft.footer = -1;\n\t\tthis.s[item+'Mode'] = mode;\n\t},\n\n\t/**\n\t * Cache the positional information that is required for the mode\n\t * calculations that FixedHeader performs.\n\t *\n\t * @private\n\t */\n\t_positions: function ()\n\t{\n\t\tvar dt = this.s.dt;\n\t\tvar table = dt.table();\n\t\tvar position = this.s.position;\n\t\tvar dom = this.dom;\n\t\tvar tableNode = $(table.node());\n\t\tvar scrollEnabled = this._scrollEnabled();\n\n\t\t// Need to use the header and footer that are in the main table,\n\t\t// regardless of if they are clones, since they hold the positions we\n\t\t// want to measure from\n\t\tvar thead = $(dt.table().header());\n\t\tvar tfoot = $(dt.table().footer());\n\t\tvar tbody = dom.tbody;\n\t\tvar scrollBody = tableNode.parent();\n\n\t\tposition.visible = tableNode.is(':visible');\n\t\tposition.width = tableNode.outerWidth();\n\t\tposition.left = tableNode.offset().left;\n\t\tposition.theadTop = thead.offset().top;\n\t\tposition.tbodyTop = scrollEnabled ? scrollBody.offset().top : tbody.offset().top;\n\t\tposition.tbodyHeight = scrollEnabled ? scrollBody.outerHeight() : tbody.outerHeight();\n\t\tposition.theadHeight = thead.outerHeight();\n\t\tposition.theadBottom = position.theadTop + position.theadHeight;\n\n\t\tif ( tfoot.length ) {\n\t\t\tposition.tfootTop = position.tbodyTop + position.tbodyHeight; //tfoot.offset().top;\n\t\t\tposition.tfootBottom = position.tfootTop + tfoot.outerHeight();\n\t\t\tposition.tfootHeight = tfoot.outerHeight();\n\t\t}\n\t\telse {\n\t\t\tposition.tfootTop = position.tbodyTop + tbody.outerHeight();\n\t\t\tposition.tfootBottom = position.tfootTop;\n\t\t\tposition.tfootHeight = position.tfootTop;\n\t\t}\n\t},\n\n\n\t/**\n\t * Mode calculation - determine what mode the fixed items should be placed\n\t * into.\n\t *\n\t * @param  {boolean} forceChange Force a redraw of the mode, even if already\n\t *     in that mode.\n\t * @private\n\t */\n\t_scroll: function ( forceChange )\n\t{\n\t\tif (this.s.dt.settings()[0].bDestroying) {\n\t\t\treturn;\n\t\t}\n\n\t\t// ScrollBody details\n\t\tvar scrollEnabled = this._scrollEnabled();\n\t\tvar scrollBody = $(this.s.dt.table().node()).parent();\n\t\tvar scrollOffset =  scrollBody.offset();\n\t\tvar scrollHeight =  scrollBody.outerHeight();\n\n\t\t// Window details\n\t\tvar windowLeft = $(document).scrollLeft();\n\t\tvar windowTop = $(document).scrollTop();\n\t\tvar windowHeight = $(window).height();\n\t\tvar windowBottom = windowHeight + windowTop\n\n\n\t\tvar position = this.s.position;\n\t\tvar headerMode, footerMode;\n\n\t\t// Body Details\n\t\tvar bodyTop = (scrollEnabled ? scrollOffset.top : position.tbodyTop);\n\t\tvar bodyLeft = (scrollEnabled ? scrollOffset.left : position.left);\n\t\tvar bodyBottom = (scrollEnabled ? scrollOffset.top + scrollHeight : position.tfootTop);\n\t\tvar bodyWidth = (scrollEnabled ? scrollBody.outerWidth() : position.tbodyWidth);\n\n\t\tvar windowBottom = windowTop + windowHeight;\n\n\t\tif ( this.c.header ) {\n\t\t\tif ( ! this.s.enable ) {\n\t\t\t\theaderMode = 'in-place';\n\t\t\t}\n\t\t\t// The header is in it's normal place if the body top is lower than\n\t\t\t//  the scroll of the window plus the headerOffset and the height of the header\n\t\t\telse if ( ! position.visible || windowTop + this.c.headerOffset + position.theadHeight <= bodyTop) {\n\t\t\t\theaderMode = 'in-place';\n\t\t\t}\n\t\t\t// The header should be floated if\n\t\t\telse if (\n\t\t\t\t// The scrolling plus the header offset plus the height of the header is lower than the top of the body\n\t\t\t\twindowTop + this.c.headerOffset + position.theadHeight > bodyTop &&\n\t\t\t\t// And the scrolling at the top plus the header offset is above the bottom of the body\n\t\t\t\twindowTop + this.c.headerOffset + position.theadHeight < bodyBottom\n\t\t\t) {\n\t\t\t\theaderMode = 'in';\n\t\t\t\tvar scrollBody = $($(this.s.dt.table().node()).parent());\n\n\t\t\t\t// Further to the above, If the scrolling plus the header offset plus the header height is lower\n\t\t\t\t// than the bottom of the table a shuffle is required so have to force the calculation\n\t\t\t\tif(windowTop + this.c.headerOffset + position.theadHeight > bodyBottom || this.dom.header.floatingParent === undefined){\n\t\t\t\t\tforceChange = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.dom.header.floatingParent\n\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t'top': this.c.headerOffset,\n\t\t\t\t\t\t\t'position': 'fixed'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.append(this.dom.header.floating);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Anything else and the view is below the table\n\t\t\telse {\n\t\t\t\theaderMode = 'below';\n\t\t\t}\n\n\t\t\tif ( forceChange || headerMode !== this.s.headerMode ) {\n\t\t\t\tthis._modeChange( headerMode, 'header', forceChange );\n\t\t\t}\n\n\t\t\tthis._horizontal( 'header', windowLeft );\n\t\t}\n\n\t\tvar header = {\n\t\t\toffset: {top: 0, left: 0},\n\t\t\theight: 0\n\t\t}\n\t\tvar footer = {\n\t\t\toffset: {top: 0, left: 0},\n\t\t\theight: 0\n\t\t}\n\n\t\tif ( this.c.footer && this.dom.tfoot.length ) {\n\t\t\tif ( ! this.s.enable ) {\n\t\t\t\tfooterMode = 'in-place';\n\t\t\t}\n\t\t\telse if ( ! position.visible || position.tfootBottom + this.c.footerOffset <= windowBottom ) {\n\t\t\t\tfooterMode = 'in-place';\n\t\t\t}\n\t\t\telse if (\n\t\t\t\tbodyBottom + position.tfootHeight + this.c.footerOffset > windowBottom &&\n\t\t\t\tbodyTop + this.c.footerOffset < windowBottom\n\t\t\t) {\n\t\t\t\tfooterMode = 'in';\n\t\t\t\tforceChange = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfooterMode = 'above';\n\t\t\t}\n\t\t\t\n\t\t\tif ( forceChange || footerMode !== this.s.footerMode ) {\n\t\t\t\tthis._modeChange( footerMode, 'footer', forceChange );\n\t\t\t}\n\n\t\t\tthis._horizontal( 'footer', windowLeft );\n\t\t\t\n\t\t\tvar getOffsetHeight = function (el) {\n\t\t\t\treturn {\n\t\t\t\t\toffset: el.offset(),\n\t\t\t\t\theight: el.outerHeight()\n\t\t\t\t};\n\t\t\t};\n\t\t\n\t\t\theader = this.dom.header.floating ? getOffsetHeight(this.dom.header.floating) : getOffsetHeight(this.dom.thead);\n\t\t\tfooter = this.dom.footer.floating ? getOffsetHeight(this.dom.footer.floating) : getOffsetHeight(this.dom.tfoot);\n\n\t\t\t// If scrolling is enabled and the footer is off the screen\n\t\t\tif (scrollEnabled && footer.offset.top > windowTop){// && footer.offset.top >= windowBottom) {\n\t\t\t\t// Calculate the gap between the top of the scrollBody and the top of the window\n\t\t\t\tvar overlap = windowTop - scrollOffset.top;\n\t\t\t\t// The new height is the bottom of the window\n\t\t\t\tvar newHeight = windowBottom +\n\t\t\t\t\t// If the gap between the top of the scrollbody and the window is more than\n\t\t\t\t\t//  the height of the header then the top of the table is still visible so add that gap\n\t\t\t\t\t// Doing this has effectively calculated the height from the top of the table to the bottom of the current page\n\t\t\t\t\t(overlap > -header.height ? overlap : 0) -\n\t\t\t\t\t// Take from that\n\t\t\t\t\t(\n\t\t\t\t\t\t// The top of the header plus\n\t\t\t\t\t\theader.offset.top +\n\t\t\t\t\t\t// The header height if the standard header is present\n\t\t\t\t\t\t(overlap < -header.height ? header.height : 0) +\n\t\t\t\t\t\t// And the height of the footer\n\t\t\t\t\t\tfooter.height\n\t\t\t\t\t)\n\n\t\t\t\t\t// Don't want a negative height\n\t\t\t\tif (newHeight < 0) {\n\t\t\t\t\tnewHeight = 0;\n\t\t\t\t}\n\n\t\t\t\t// At the end of the above calculation the space between the header (top of the page if floating)\n\t\t\t\t// and the point just above the footer should be the new value for the height of the table.\n\t\t\t\tscrollBody.outerHeight(newHeight);\n\t\t\t\t\n\t\t\t\t// Need some rounding here as sometimes very small decimal places are encountered\n\t\t\t\t// If the actual height is bigger or equal to the height we just applied then the footer is \"Floating\"\n\t\t\t\tif(Math.round(scrollBody.outerHeight()) >= Math.round(newHeight)) {\n\t\t\t\t\t$(this.dom.tfoot.parent()).addClass(\"fixedHeader-floating\");\n\t\t\t\t}\n\t\t\t\t// Otherwise max-width has kicked in so it is not floating\n\t\t\t\telse {\n\t\t\t\t\t$(this.dom.tfoot.parent()).removeClass(\"fixedHeader-floating\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(this.dom.header.floating){\n\t\t\tthis.dom.header.floatingParent.css('left', bodyLeft-windowLeft);\n\t\t}\n\t\tif(this.dom.footer.floating){\n\t\t\tthis.dom.footer.floatingParent.css('left', bodyLeft-windowLeft);\n\t\t}\n\n\t\t// If fixed columns is being used on this table then the blockers need to be copied across\n\t\t// Cloning these is cleaner than creating as our own as it will keep consistency with fixedColumns automatically\n\t\t// ASSUMING that the class remains the same\n\t\tif (this.s.dt.settings()[0]._fixedColumns !== undefined) {\n\t\t\tvar adjustBlocker = function (side, end, el) {\n\t\t\t\tif (el === undefined) {\n\t\t\t\t\tvar blocker = $('div.dtfc-'+side+'-'+end+'-blocker');\n\n\t\t\t\t\tel = blocker.length === 0 ?\n\t\t\t\t\t\tnull :\n\t\t\t\t\t\tblocker.clone().appendTo('body').css('z-index', 1);\n\t\t\t\t}\n\n\t\t\t\tif(el !== null) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\ttop: end === 'top' ? header.offset.top : footer.offset.top,\n\t\t\t\t\t\tleft: side === 'right' ? bodyLeft + bodyWidth - el.width() : bodyLeft\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\t// Adjust all blockers\n\t\t\tthis.dom.header.rightBlocker = adjustBlocker('right', 'top', this.dom.header.rightBlocker);\n\t\t\tthis.dom.header.leftBlocker = adjustBlocker('left', 'top', this.dom.header.leftBlocker);\n\t\t\tthis.dom.footer.rightBlocker = adjustBlocker('right', 'bottom', this.dom.footer.rightBlocker);\n\t\t\tthis.dom.footer.leftBlocker = adjustBlocker('left', 'bottom', this.dom.footer.leftBlocker);\n\t\t}\n\t},\n\n\t/**\n\t * Function to check if scrolling is enabled on the table or not\n\t * @returns Boolean value indicating if scrolling on the table is enabled or not\n\t */\n\t_scrollEnabled: function() {\n\t\tvar oScroll = this.s.dt.settings()[0].oScroll;\n\t\tif(oScroll.sY !== \"\" || oScroll.sX !== \"\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn false\n\t}\n} );\n\n\n/**\n * Version\n * @type {String}\n * @static\n */\nFixedHeader.version = \"3.2.4\";\n\n/**\n * Defaults\n * @type {Object}\n * @static\n */\nFixedHeader.defaults = {\n\theader: true,\n\tfooter: false,\n\theaderOffset: 0,\n\tfooterOffset: 0\n};\n\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * DataTables interfaces\n */\n\n// Attach for constructor access\n$.fn.dataTable.FixedHeader = FixedHeader;\n$.fn.DataTable.FixedHeader = FixedHeader;\n\n\n// DataTables creation - check if the FixedHeader option has been defined on the\n// table and if so, initialise\n$(document).on( 'init.dt.dtfh', function (e, settings, json) {\n\tif ( e.namespace !== 'dt' ) {\n\t\treturn;\n\t}\n\n\tvar init = settings.oInit.fixedHeader;\n\tvar defaults = DataTable.defaults.fixedHeader;\n\n\tif ( (init || defaults) && ! settings._fixedHeader ) {\n\t\tvar opts = $.extend( {}, defaults, init );\n\n\t\tif ( init !== false ) {\n\t\t\tnew FixedHeader( settings, opts );\n\t\t}\n\t}\n} );\n\n// DataTables API methods\nDataTable.Api.register( 'fixedHeader()', function () {} );\n\nDataTable.Api.register( 'fixedHeader.adjust()', function () {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\tvar fh = ctx._fixedHeader;\n\n\t\tif ( fh ) {\n\t\t\tfh.update();\n\t\t}\n\t} );\n} );\n\nDataTable.Api.register( 'fixedHeader.enable()', function ( flag ) {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\tvar fh = ctx._fixedHeader;\n\n\t\tflag = ( flag !== undefined ? flag : true );\n\t\tif ( fh && flag !== fh.enabled() ) {\n\t\t\tfh.enable( flag );\n\t\t}\n\t} );\n} );\n\nDataTable.Api.register( 'fixedHeader.enabled()', function () {\n\tif ( this.context.length ) {\n\t\tvar fh = this.context[0]._fixedHeader;\n\n\t\tif ( fh ) {\n\t\t\treturn fh.enabled();\n\t\t}\n\t}\n\n\treturn false;\n} );\n\nDataTable.Api.register( 'fixedHeader.disable()', function ( ) {\n\treturn this.iterator( 'table', function ( ctx ) {\n\t\tvar fh = ctx._fixedHeader;\n\n\t\tif ( fh && fh.enabled() ) {\n\t\t\tfh.enable( false );\n\t\t}\n\t} );\n} );\n\n$.each( ['header', 'footer'], function ( i, el ) {\n\tDataTable.Api.register( 'fixedHeader.'+el+'Offset()', function ( offset ) {\n\t\tvar ctx = this.context;\n\n\t\tif ( offset === undefined ) {\n\t\t\treturn ctx.length && ctx[0]._fixedHeader ?\n\t\t\t\tctx[0]._fixedHeader[el +'Offset']() :\n\t\t\t\tundefined;\n\t\t}\n\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\tvar fh = ctx._fixedHeader;\n\n\t\t\tif ( fh ) {\n\t\t\t\tfh[ el +'Offset' ]( offset );\n\t\t\t}\n\t\t} );\n\t} );\n} );\n\n\nreturn FixedHeader;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 51940 characters]\n//# sourceURL=webpack-internal:///./node_modules/datatables.net-fixedheader/js/dataTables.fixedHeader.js\n");

/***/ }),

/***/ "datatables.net":
/*!*********************************!*\
  !*** external "$.fn.dataTable" ***!
  \*********************************/
/***/ (function(module) {

"use strict";
module.exports = window["$.fn.dataTable"];

/***/ }),

/***/ "jquery":
/*!*************************!*\
  !*** external "jQuery" ***!
  \*************************/
/***/ (function(module) {

"use strict";
module.exports = window["jQuery"];

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	!function() {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = function(module) {
/******/ 			var getter = module && module.__esModule ?
/******/ 				function() { return module['default']; } :
/******/ 				function() { return module; };
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	!function() {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = function(exports, definition) {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	!function() {
/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	!function() {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = function(exports) {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	}();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module can't be inlined because the eval-source-map devtool is used.
/******/ 	var __webpack_exports__ = __webpack_require__("./libs/datatables-fixedheader/datatables.fixedheader.js");
/******/ 	var __webpack_export_target__ = window;
/******/ 	for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
/******/ 	if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
/******/ 	
/******/ })()
;