Files
CTFd/CTFd/themes/admin/static/js/core.dev.js

146 lines
140 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["default~pages/challenge~pages/challenges~pages/configs~pages/editor~pages/main~pages/notifications~p~d5a3cc0a"],{
/***/ "./CTFd/themes/admin/assets/js/pages/main.js":
/*!***************************************************!*\
!*** ./CTFd/themes/admin/assets/js/pages/main.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! core/CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _moment = _interopRequireDefault(__webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\"));\n\nvar _nunjucks = _interopRequireDefault(__webpack_require__(/*! nunjucks */ \"./node_modules/nunjucks/browser/nunjucks.js\"));\n\nvar _howler = __webpack_require__(/*! howler */ \"./node_modules/howler/dist/howler.js\");\n\nvar _events = _interopRequireDefault(__webpack_require__(/*! core/events */ \"./CTFd/themes/core/assets/js/events.js\"));\n\nvar _times = _interopRequireDefault(__webpack_require__(/*! core/times */ \"./CTFd/themes/core/assets/js/times.js\"));\n\nvar _styles = _interopRequireDefault(__webpack_require__(/*! ../styles */ \"./CTFd/themes/admin/assets/js/styles.js\"));\n\nvar _helpers = _interopRequireDefault(__webpack_require__(/*! core/helpers */ \"./CTFd/themes/core/assets/js/helpers.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_CTFd.default.init(window.init);\n\nwindow.CTFd = _CTFd.default;\nwindow.helpers = _helpers.default;\nwindow.$ = _jquery.default;\nwindow.Moment = _moment.default;\nwindow.nunjucks = _nunjucks.default;\nwindow.Howl = _howler.Howl;\n(0, _jquery.default)(function () {\n (0, _styles.default)();\n (0, _times.default)();\n (0, _events.default)(_CTFd.default.config.urlRoot);\n});\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/pages/main.js?");
/***/ }),
/***/ "./CTFd/themes/admin/assets/js/styles.js":
/*!***********************************************!*\
!*** ./CTFd/themes/admin/assets/js/styles.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! bootstrap/dist/js/bootstrap.bundle */ \"./node_modules/bootstrap/dist/js/bootstrap.bundle.js\");\n\nvar _utils = __webpack_require__(/*! core/utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function _default() {\n // TODO: This is kind of a hack to mimic a React-like state construct.\n // It should be removed once we have a real front-end framework in place.\n (0, _jquery.default)(\":input\").each(function () {\n (0, _jquery.default)(this).data(\"initial\", (0, _jquery.default)(this).val());\n });\n (0, _jquery.default)(\".form-control\").bind({\n focus: function focus() {\n (0, _jquery.default)(this).addClass(\"input-filled-valid\");\n },\n blur: function blur() {\n if ((0, _jquery.default)(this).val() === \"\") {\n (0, _jquery.default)(this).removeClass(\"input-filled-valid\");\n }\n }\n });\n (0, _jquery.default)(\".modal\").on(\"show.bs.modal\", function (e) {\n (0, _jquery.default)(\".form-control\").each(function () {\n if ((0, _jquery.default)(this).val()) {\n (0, _jquery.default)(this).addClass(\"input-filled-valid\");\n }\n });\n });\n (0, _jquery.default)(function () {\n (0, _jquery.default)(\".form-control\").each(function () {\n if ((0, _jquery.default)(this).val()) {\n (0, _jquery.default)(this).addClass(\"input-filled-valid\");\n }\n });\n (0, _jquery.default)(\"tr[data-href]\").click(function () {\n var sel = getSelection().toString();\n\n if (!sel) {\n var href = (0, _jquery.default)(this).attr(\"data-href\");\n\n if (href) {\n window.location = href;\n }\n }\n\n return false;\n });\n (0, _jquery.default)(\"[data-checkbox]\").click(function (e) {\n if ((0, _jquery.default)(e.target).is(\"input[type=checkbox]\")) {\n e.stopImmediatePropagation();\n return;\n }\n\n var checkbox = (0, _jquery.default)(this).find(\"input[type=checkbox]\"); // Doing it this way with an event allows data-checkbox-all to work\n\n checkbox.click();\n e.stopImmediatePropagation();\n });\n (0, _jquery.default)(\"[data-checkbox-all]\").on(\"click change\", function (e) {\n var checked = (0, _jquery.default)(this).prop(\"checked\");\n var idx = (0, _jquery.default)(this).index() + 1;\n (0, _jquery.default)(this).closest(\"table\").find(\"tr td:nth-child(\".concat(idx, \") input[type=checkbox]\")).prop(\"checked\", checked);\n e.stopImmediatePropagation();\n });\n (0, _jquery.default)(\"tr[data-href] a, tr[data-href] button\").click(function (e) {\n // TODO: This is a hack to allow modal close buttons to work\n if (!(0, _jquery.default)(this).attr(\"data-dismiss\")) {\n e.stopPropagation();\n }\n });\n (0, _jquery.default)(\".page-select\").change(function () {\n var url = new URL(window.location);\n url.searchParams.set(\"page\", this.value);\n window.location.href = url.toString();\n });\n (0, _jquery.default)('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\n sessionStorage.setItem('activeTab', (0, _jquery.default)(e.target).attr('href'));\n });\n var activeTab = sessionStorage.getItem('activeTab');\n\n if (activeTab) {\n var target = (0, _jquery.default)(\".nav-tabs a[href=\\\"\".concat(activeTab, \"\\\"], .nav-pills a[href=\\\"\").concat(activeTab, \"\\\"]\"));\n\n if (target.length) {\n target.tab('show');\n } else {\n sessionStorage.removeItem('activeTab');\n }\n }\n\n (0, _utils.makeSortableTables)();\n (0, _jquery.default)('[data-toggle=\"tooltip\"]').tooltip();\n });\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/admin/assets/js/styles.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/CTFd.js":
/*!********************************************!*\
!*** ./CTFd/themes/core/assets/js/CTFd.js ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _fetch = _interopRequireDefault(__webpack_require__(/*! ./fetch */ \"./CTFd/themes/core/assets/js/fetch.js\"));\n\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ \"./CTFd/themes/core/assets/js/config.js\"));\n\nvar _api = __webpack_require__(/*! ./api */ \"./CTFd/themes/core/assets/js/api.js\");\n\n__webpack_require__(/*! ./patch */ \"./CTFd/themes/core/assets/js/patch.js\");\n\nvar _markdownIt = _interopRequireDefault(__webpack_require__(/*! markdown-it */ \"./node_modules/markdown-it/index.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _ezq = _interopRequireDefault(__webpack_require__(/*! ./ezq */ \"./CTFd/themes/core/assets/js/ezq.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } else { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar api = new _api.API(\"/\");\nvar user = {};\nvar _internal = {};\nvar ui = {\n ezq: _ezq.default\n};\nvar lib = {\n $: _jquery.default,\n markdown: markdown\n};\nvar initialized = false;\n\nvar init = function init(data) {\n if (initialized) {\n return;\n }\n\n initialized = true;\n _config.default.urlRoot = data.urlRoot || _config.default.urlRoot;\n _config.default.csrfNonce = data.csrfNonce || _config.default.csrfNonce;\n _config.default.userMode = data.userMode || _config.default.userMode;\n api.domain = _config.default.urlRoot + \"/api/v1\";\n user.id = data.userId;\n};\n\nvar plugin = {\n run: function run(f) {\n f(CTFd);\n }\n};\n\nfunction markdown(config) {\n // Merge passed config with original. Default to original.\n var md_config = _objectSpread({}, {\n html: true,\n linkify: true\n }, {}, config);\n\n var md = (0, _markdownIt.default)(md_config);\n\n md.renderer.rules.link_open = function (tokens, idx, options, env, self) {\n tokens[idx].attrPush([\"target\", \"_blank\"]);\n return self.renderToken(tokens, idx, options);\n };\n\n return md;\n}\n\nvar CTFd = {\n init: init,\n config: _config.default,\n fetch: _fetch.default,\n user: user,\n ui: ui,\n api: api,\n lib: lib,\n _internal: _internal,\n plugin: plugin\n};\nvar _default = CTFd;\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/CTFd.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/api.js":
/*!*******************************************!*\
!*** ./CTFd/themes/core/assets/js/api.js ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nvar _fetch = _interopRequireDefault(__webpack_require__(/*! ./fetch */ \"./CTFd/themes/core/assets/js/fetch.js\"));\n\nvar _q = _interopRequireDefault(__webpack_require__(/*! q */ \"./node_modules/q/q.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n *\n * @class API\n * @param {(string|object)} [domainOrOptions] - The project domain or options object. If object, see the object's optional properties.\n * @param {string} [domainOrOptions.domain] - The project domain\n * @param {object} [domainOrOptions.token] - auth token - object with value property and optional headerOrQueryName and isQuery properties\n */\nvar API = function () {\n \"use strict\";\n\n function API(options) {\n var domain = _typeof(options) === \"object\" ? options.domain : options;\n this.domain = domain ? domain : \"\";\n\n if (this.domain.length === 0) {\n throw new Error(\"Domain parameter must be specified as a string.\");\n }\n }\n\n function serializeQueryParams(parameters) {\n var str = [];\n\n for (var p in parameters) {\n if (parameters.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p]));\n }\n }\n\n return str.join(\"&\");\n }\n\n function mergeQueryParams(parameters, queryParameters) {\n if (parameters.$queryParameters) {\n Object.keys(parameters.$queryParameters).forEach(function (parameterName) {\n var parameter = parameters.$queryParameters[parameterName];\n queryParameters[parameterName] = parameter;\n });\n }\n\n return queryParameters;\n }\n /**\n * HTTP Request\n * @method\n * @name API#request\n * @param {string} method - http method\n * @param {string} url - url to do request\n * @param {object} parameters\n * @param {object} body - body parameters / object\n * @param {object} headers - header parameters\n * @param {object} queryParameters - querystring parameters\n * @param {object} form - form data object\n * @param {object} deferred - promise object\n */\n\n\n API.prototype.request = function (method, url, parameters, body, headers, queryParameters, form, deferred) {\n var queryParams = queryParameters && Object.keys(queryParameters).length ? serializeQueryParams(queryParameters) : null;\n var urlWithParams = url + (queryParams ? \"?\" + queryParams : \"\");\n\n if (body && !Object.keys(body).length) {\n body = undefined;\n }\n\n (0, _fetch.default)(urlWithParams, {\n method: method,\n headers: headers,\n body: JSON.stringify(body)\n }).then(function (response) {\n return response.json();\n }).then(function (body) {\n deferred.resolve(body);\n }).catch(function (error) {\n deferred.reject(error);\n });\n };\n /**\n *\n * @method\n * @name API#post_award_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_award_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/awards\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_award\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.awardId - An Award ID\n */\n\n\n API.prototype.delete_award = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/awards/{award_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{award_id}\", parameters[\"awardId\"]);\n\n if (parameters[\"awardId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: awardId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_award\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.awardId - An Award ID\n */\n\n\n API.prototype.get_award = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/awards/{award_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{award_id}\", parameters[\"awardId\"]);\n\n if (parameters[\"awardId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: awardId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_challenge_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_challenge_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_challenge_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_challenge_attempt\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_challenge_attempt = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/attempt\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_types\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_challenge_types = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/types\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_challenge\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.challengeId - A Challenge ID\n */\n\n\n API.prototype.patch_challenge = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_challenge\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.challengeId - A Challenge ID\n */\n\n\n API.prototype.delete_challenge = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.challengeId - A Challenge ID\n */\n\n\n API.prototype.get_challenge = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_files\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.id - A Challenge ID\n * @param {string} parameters.challengeId -\n */\n\n\n API.prototype.get_challenge_files = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}/files\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"id\"] !== undefined) {\n queryParameters[\"id\"] = parameters[\"id\"];\n }\n\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_flags\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.id - A Challenge ID\n * @param {string} parameters.challengeId -\n */\n\n\n API.prototype.get_challenge_flags = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}/flags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"id\"] !== undefined) {\n queryParameters[\"id\"] = parameters[\"id\"];\n }\n\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_hints\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.id - A Challenge ID\n * @param {string} parameters.challengeId -\n */\n\n\n API.prototype.get_challenge_hints = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}/hints\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"id\"] !== undefined) {\n queryParameters[\"id\"] = parameters[\"id\"];\n }\n\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_solves\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.id - A Challenge ID\n * @param {string} parameters.challengeId -\n */\n\n\n API.prototype.get_challenge_solves = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}/solves\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"id\"] !== undefined) {\n queryParameters[\"id\"] = parameters[\"id\"];\n }\n\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_tags\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.id - A Challenge ID\n * @param {string} parameters.challengeId -\n */\n\n\n API.prototype.get_challenge_tags = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/{challenge_id}/tags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"id\"] !== undefined) {\n queryParameters[\"id\"] = parameters[\"id\"];\n }\n\n path = path.replace(\"{challenge_id}\", parameters[\"challengeId\"]);\n\n if (parameters[\"challengeId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: challengeId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_config_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_config_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_config_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.patch_config_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_config_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_config_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_config\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.configKey -\n */\n\n\n API.prototype.patch_config = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs/{config_key}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n if (parameters[\"configKey\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: configKey\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_config\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.configKey -\n */\n\n\n API.prototype.delete_config = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs/{config_key}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n if (parameters[\"configKey\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: configKey\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_config\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.configKey -\n */\n\n\n API.prototype.get_config = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs/{config_key}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n if (parameters[\"configKey\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: configKey\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_files_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_files_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/files\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_files_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_files_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/files\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_files_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.fileId -\n */\n\n\n API.prototype.delete_files_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/files/{file_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{file_id}\", parameters[\"fileId\"]);\n\n if (parameters[\"fileId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: fileId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_files_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.fileId -\n */\n\n\n API.prototype.get_files_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/files/{file_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{file_id}\", parameters[\"fileId\"]);\n\n if (parameters[\"fileId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: fileId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_flag_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_flag_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_flag_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_flag_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_flag_types\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_flag_types = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags/types\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_flag_types_1\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.typeName -\n */\n\n\n API.prototype.get_flag_types_1 = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags/types/{type_name}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{type_name}\", parameters[\"typeName\"]);\n\n if (parameters[\"typeName\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: typeName\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_flag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.flagId -\n */\n\n\n API.prototype.patch_flag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags/{flag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n if (parameters[\"flagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: flagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_flag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.flagId -\n */\n\n\n API.prototype.delete_flag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags/{flag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n if (parameters[\"flagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: flagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_flag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.flagId -\n */\n\n\n API.prototype.get_flag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/flags/{flag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{flag_id}\", parameters[\"flagId\"]);\n\n if (parameters[\"flagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: flagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_hint_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_hint_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_hint_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_hint_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_hint\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.hintId -\n */\n\n\n API.prototype.patch_hint = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints/{hint_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n if (parameters[\"hintId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: hintId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_hint\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.hintId -\n */\n\n\n API.prototype.delete_hint = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints/{hint_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n if (parameters[\"hintId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: hintId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_hint\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.hintId -\n */\n\n\n API.prototype.get_hint = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints/{hint_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n if (parameters[\"hintId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: hintId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_notification_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_notification_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/notifications\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_notification_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_notification_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/notifications\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_notification\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.notificationId - A Notification ID\n */\n\n\n API.prototype.delete_notification = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/notifications/{notification_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{notification_id}\", parameters[\"notificationId\"]);\n\n if (parameters[\"notificationId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: notificationId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_notification\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.notificationId - A Notification ID\n */\n\n\n API.prototype.get_notification = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/notifications/{notification_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{notification_id}\", parameters[\"notificationId\"]);\n\n if (parameters[\"notificationId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: notificationId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_page_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_page_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/pages\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_page_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_page_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/pages\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_page_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.pageId -\n */\n\n\n API.prototype.patch_page_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/pages/{page_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n if (parameters[\"pageId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: pageId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_page_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.pageId -\n */\n\n\n API.prototype.delete_page_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/pages/{page_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n if (parameters[\"pageId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: pageId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_page_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.pageId -\n */\n\n\n API.prototype.get_page_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/pages/{page_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{page_id}\", parameters[\"pageId\"]);\n\n if (parameters[\"pageId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: pageId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_scoreboard_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_scoreboard_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/scoreboard\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_scoreboard_detail\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.count - How many top teams to return\n */\n\n\n API.prototype.get_scoreboard_detail = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/scoreboard/top/{count}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{count}\", parameters[\"count\"]);\n\n if (parameters[\"count\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: count\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_solve_statistics\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_challenge_solve_statistics = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/challenges/solves\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_solve_percentages\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_challenge_solve_percentages = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/challenges/solves/percentages\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_challenge_property_counts\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.column -\n */\n\n\n API.prototype.get_challenge_property_counts = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/challenges/{column}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{column}\", parameters[\"column\"]);\n\n if (parameters[\"column\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: column\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_submission_property_counts\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.column -\n */\n\n\n API.prototype.get_submission_property_counts = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/submissions/{column}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{column}\", parameters[\"column\"]);\n\n if (parameters[\"column\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: column\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_statistics\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_team_statistics = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/teams\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_statistics\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_user_statistics = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/users\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_property_counts\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.column -\n */\n\n\n API.prototype.get_user_property_counts = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/statistics/users/{column}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{column}\", parameters[\"column\"]);\n\n if (parameters[\"column\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: column\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_submissions_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_submissions_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/submissions\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_submissions_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_submissions_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/submissions\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_submission\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.submissionId - A Submission ID\n */\n\n\n API.prototype.delete_submission = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/submissions/{submission_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{submission_id}\", parameters[\"submissionId\"]);\n\n if (parameters[\"submissionId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: submissionId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_submission\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.submissionId - A Submission ID\n */\n\n\n API.prototype.get_submission = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/submissions/{submission_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{submission_id}\", parameters[\"submissionId\"]);\n\n if (parameters[\"submissionId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: submissionId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_tag_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_tag_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_tag_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_tag_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_tag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.tagId - A Tag ID\n */\n\n\n API.prototype.patch_tag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags/{tag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n if (parameters[\"tagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: tagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_tag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.tagId - A Tag ID\n */\n\n\n API.prototype.delete_tag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags/{tag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n if (parameters[\"tagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: tagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_tag\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.tagId - A Tag ID\n */\n\n\n API.prototype.get_tag = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags/{tag_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{tag_id}\", parameters[\"tagId\"]);\n\n if (parameters[\"tagId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: tagId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_team_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_team_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_team_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_team_private\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Current Team\n */\n\n\n API.prototype.patch_team_private = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/me\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"teamId\"] !== undefined) {\n queryParameters[\"team_id\"] = parameters[\"teamId\"];\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_private\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Current Team\n */\n\n\n API.prototype.get_team_private = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/me\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n\n if (parameters[\"teamId\"] !== undefined) {\n queryParameters[\"team_id\"] = parameters[\"teamId\"];\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_team_public\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID\n */\n\n\n API.prototype.patch_team_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_team_public\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID\n */\n\n\n API.prototype.delete_team_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_public\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID\n */\n\n\n API.prototype.get_team_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_awards\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID or 'me'\n */\n\n\n API.prototype.get_team_awards = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}/awards\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_fails\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID or 'me'\n */\n\n\n API.prototype.get_team_fails = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}/fails\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_team_solves\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.teamId - Team ID or 'me'\n */\n\n\n API.prototype.get_team_solves = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}/solves\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_unlock_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_unlock_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/unlocks\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_unlock_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_unlock_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/unlocks\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#post_user_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.post_user_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_list\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_user_list = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_user_private\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.patch_user_private = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/me\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_private\n * @param {object} parameters - method options and parameters\n */\n\n\n API.prototype.get_user_private = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/me\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#patch_user_public\n * @param {object} parameters - method options and parameters\n * @param {integer} parameters.userId - User ID\n */\n\n\n API.prototype.patch_user_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#delete_user_public\n * @param {object} parameters - method options and parameters\n * @param {integer} parameters.userId - User ID\n */\n\n\n API.prototype.delete_user_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"DELETE\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_public\n * @param {object} parameters - method options and parameters\n * @param {integer} parameters.userId - User ID\n */\n\n\n API.prototype.get_user_public = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_awards\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.userId - User ID or 'me'\n */\n\n\n API.prototype.get_user_awards = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}/awards\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_fails\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.userId - User ID or 'me'\n */\n\n\n API.prototype.get_user_fails = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}/fails\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n /**\n *\n * @method\n * @name API#get_user_solves\n * @param {object} parameters - method options and parameters\n * @param {string} parameters.userId - User ID or 'me'\n */\n\n\n API.prototype.get_user_solves = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}/solves\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n };\n\n return API;\n}();\n\nexports.API = API;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/api.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/config.js":
/*!**********************************************!*\
!*** ./CTFd/themes/core/assets/js/config.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n urlRoot: \"\",\n csrfNonce: \"\",\n userMode: \"\"\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/config.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/events.js":
/*!**********************************************!*\
!*** ./CTFd/themes/core/assets/js/events.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _howler = __webpack_require__(/*! howler */ \"./node_modules/howler/dist/howler.js\");\n\nvar _eventSourcePolyfill = __webpack_require__(/*! event-source-polyfill */ \"./node_modules/event-source-polyfill/src/eventsource.js\");\n\nvar _ezq = __webpack_require__(/*! ./ezq */ \"./CTFd/themes/core/assets/js/ezq.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./CTFd/themes/core/assets/js/utils.js\");\n\nvar EventSource = _eventSourcePolyfill.NativeEventSource || _eventSourcePolyfill.EventSourcePolyfill;\n\nvar _default = function _default(root) {\n var source = new EventSource(root + \"/events\");\n var wc = new _utils.WindowController();\n var howl = new _howler.Howl({\n src: [root + \"/themes/core/static/sounds/notification.webm\", root + \"/themes/core/static/sounds/notification.mp3\"]\n });\n (0, _utils.init_notification_counter)();\n\n function connect() {\n source.addEventListener(\"notification\", function (event) {\n var data = JSON.parse(event.data);\n wc.broadcast(\"notification\", data);\n render(data);\n }, false);\n }\n\n function disconnect() {\n if (source) {\n source.close();\n }\n }\n\n function render(data) {\n switch (data.type) {\n case \"toast\":\n (0, _utils.inc_notification_counter)(); // Trim toast body to length\n\n var length = 50;\n var trimmed_content = data.content.length > length ? data.content.substring(0, length - 3) + \"...\" : data.content;\n var clicked = false;\n (0, _ezq.ezToast)({\n title: data.title,\n body: trimmed_content,\n onclick: function onclick() {\n (0, _ezq.ezAlert)({\n title: data.title,\n body: data.content,\n button: \"Got it!\",\n success: function success() {\n clicked = true;\n (0, _utils.dec_notification_counter)();\n }\n });\n },\n onclose: function onclose() {\n if (!clicked) {\n (0, _utils.dec_notification_counter)();\n }\n }\n });\n break;\n\n case \"alert\":\n (0, _utils.inc_notification_counter)();\n (0, _ezq.ezAlert)({\n title: data.title,\n body: data.content,\n button: \"Got it!\",\n success: function success() {\n (0, _utils.dec_notification_counter)();\n }\n });\n break;\n\n case \"background\":\n (0, _utils.inc_notification_counter)();\n break;\n\n default:\n (0, _utils.inc_notification_counter)();\n break;\n }\n\n if (data.sound) {\n howl.play();\n }\n }\n\n wc.notification = function (data) {\n render(data);\n };\n\n wc.masterDidChange = function () {\n if (this.isMaster) {\n connect();\n } else {\n disconnect();\n }\n };\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/events.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/ezq.js":
/*!*******************************************!*\
!*** ./CTFd/themes/core/assets/js/ezq.js ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ezAlert = ezAlert;\nexports.ezToast = ezToast;\nexports.ezQuery = ezQuery;\nexports.ezProgressBar = ezProgressBar;\nexports.ezBadge = ezBadge;\nexports.default = void 0;\n\n__webpack_require__(/*! bootstrap/js/dist/modal */ \"./node_modules/bootstrap/js/dist/modal.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar modalTpl = '<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\">' + ' <div class=\"modal-dialog\" role=\"document\">' + ' <div class=\"modal-content\">' + ' <div class=\"modal-header\">' + ' <h5 class=\"modal-title\">{0}</h5>' + ' <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">' + ' <span aria-hidden=\"true\">&times;</span>' + \" </button>\" + \" </div>\" + ' <div class=\"modal-body\">' + \" </div>\" + ' <div class=\"modal-footer\">' + \" </div>\" + \" </div>\" + \" </div>\" + \"</div>\";\nvar toastTpl = '<div class=\"toast m-3\" role=\"alert\">' + ' <div class=\"toast-header\">' + ' <strong class=\"mr-auto\">{0}</strong>' + ' <button type=\"button\" class=\"ml-2 mb-1 close\" data-dismiss=\"toast\" aria-label=\"Close\">' + ' <span aria-hidden=\"true\">&times;</span>' + \" </button>\" + \" </div>\" + ' <div class=\"toast-body\">{1}</div>' + \"</div>\";\nvar progressTpl = '<div class=\"progress\">' + ' <div class=\"progress-bar progress-bar-success progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width: {0}%\">' + \" </div>\" + \"</div>\";\nvar errorTpl = '<div class=\"alert alert-danger alert-dismissable\" role=\"alert\">\\n' + ' <span class=\"sr-only\">Error:</span>\\n' + \" {0}\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar successTpl = '<div class=\"alert alert-success alert-dismissable submit-row\" role=\"alert\">\\n' + \" <strong>Success!</strong>\\n\" + \" {0}\\n\" + ' <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\\n' + \"</div>\";\nvar buttonTpl = '<button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\">{0}</button>';\nvar noTpl = '<button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\">No</button>';\nvar yesTpl = '<button type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\">Yes</button>';\n\nfunction ezAlert(args) {\n var modal = modalTpl.format(args.title);\n var obj = (0, _jquery.default)(modal);\n\n if (typeof args.body === \"string\") {\n obj.find(\".modal-body\").append(\"<p>\".concat(args.body, \"</p>\"));\n } else {\n obj.find(\".modal-body\").append((0, _jquery.default)(args.body));\n }\n\n var button = (0, _jquery.default)(buttonTpl.format(args.button));\n\n if (args.success) {\n (0, _jquery.default)(button).click(function () {\n args.success();\n });\n }\n\n if (args.large) {\n obj.find(\".modal-dialog\").addClass(\"modal-lg\");\n }\n\n obj.find(\".modal-footer\").append(button);\n (0, _jquery.default)(\"main\").append(obj);\n obj.modal(\"show\");\n (0, _jquery.default)(obj).on(\"hidden.bs.modal\", function () {\n (0, _jquery.default)(this).modal(\"dispose\");\n });\n return obj;\n}\n\nfunction ezToast(args) {\n var container_available = (0, _jquery.default)(\"#ezq--notifications-toast-container\").length;\n\n if (!container_available) {\n (0, _jquery.default)(\"body\").append((0, _jquery.default)(\"<div/>\").attr({\n id: \"ezq--notifications-toast-container\"\n }).css({\n position: \"fixed\",\n bottom: \"0\",\n right: \"0\",\n \"min-width\": \"20%\"\n }));\n }\n\n var res = toastTpl.format(args.title, args.body);\n var obj = (0, _jquery.default)(res);\n\n if (args.onclose) {\n (0, _jquery.default)(obj).find(\"button[data-dismiss=toast]\").click(function () {\n args.onclose();\n });\n }\n\n if (args.onclick) {\n var body = (0, _jquery.default)(obj).find(\".toast-body\");\n body.addClass(\"cursor-pointer\");\n body.click(function () {\n args.onclick();\n });\n }\n\n var autohide = args.autohide !== false;\n var animation = args.animation !== false;\n var delay = args.delay || 10000; // 10 seconds\n\n (0, _jquery.default)(\"#ezq--notifications-toast-container\").prepend(obj);\n obj.toast({\n autohide: autohide,\n delay: delay,\n animation: animation\n });\n obj.toast(\"show\");\n return obj;\n}\n\nfunction ezQuery(args) {\n var modal = modalTpl.format(args.title);\n var obj = (0, _jquery.default)(modal);\n\n if (typeof args.body === \"string\") {\n obj.find(\".modal-body\").append(\"<p>\".concat(args.body, \"</p>\"));\n } else {\n obj.find(\".modal-body\").append((0, _jquery.default)(args.body));\n }\n\n var yes = (0, _jquery.default)(yesTpl);\n var no = (0, _jquery.default)(noTpl);\n obj.find(\".modal-footer\").append(no);\n obj.find(\".modal-footer\").append(yes);\n (0, _jquery.default)(\"main\").append(obj);\n (0, _jquery.default)(obj).on(\"hidden.bs.modal\", function () {\n (0, _jquery.default)(this).modal(\"dispose\");\n });\n (0, _jquery.default)(yes).click(function () {\n args.success();\n });\n obj.modal(\"show\");\n return obj;\n}\n\nfunction ezProgressBar(args) {\n if (args.target) {\n var _obj = (0, _jquery.default)(args.target);\n\n var pbar = _obj.find(\".progress-bar\");\n\n pbar.css(\"width\", args.width + \"%\");\n return _obj;\n }\n\n var progress = progressTpl.format(args.width);\n var modal = modalTpl.format(args.title);\n var obj = (0, _jquery.default)(modal);\n obj.find(\".modal-body\").append((0, _jquery.default)(progress));\n (0, _jquery.default)(\"main\").append(obj);\n return obj.modal(\"show\");\n}\n\nfunction ezBadge(args) {\n var mapping = {\n success: successTpl,\n error: errorTpl\n };\n var tpl = mapping[args.type].format(args.body);\n return (0, _jquery.default)(tpl);\n}\n\nvar ezq = {\n ezAlert: ezAlert,\n ezToast: ezToast,\n ezQuery: ezQuery,\n ezProgressBar: ezProgressBar,\n ezBadge: ezBadge\n};\nvar _default = ezq;\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/ezq.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/fetch.js":
/*!*********************************************!*\
!*** ./CTFd/themes/core/assets/js/fetch.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! whatwg-fetch */ \"./node_modules/whatwg-fetch/fetch.js\");\n\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ \"./CTFd/themes/core/assets/js/config.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetch = window.fetch;\n\nvar _default = function _default(url, options) {\n if (options === undefined) {\n options = {\n method: \"GET\",\n credentials: \"same-origin\",\n headers: {}\n };\n }\n\n url = _config.default.urlRoot + url;\n\n if (options.headers === undefined) {\n options.headers = {};\n }\n\n options.credentials = \"same-origin\";\n options.headers[\"Accept\"] = \"application/json\";\n options.headers[\"Content-Type\"] = \"application/json\";\n options.headers[\"CSRF-Token\"] = _config.default.csrfNonce;\n return fetch(url, options);\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/fetch.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/patch.js":
/*!*********************************************!*\
!*** ./CTFd/themes/core/assets/js/patch.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nvar _q = _interopRequireDefault(__webpack_require__(/*! q */ \"./node_modules/q/q.js\"));\n\nvar _api = __webpack_require__(/*! ./api */ \"./CTFd/themes/core/assets/js/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } else { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction mergeQueryParams(parameters, queryParameters) {\n return _objectSpread({}, parameters, {}, queryParameters);\n}\n\nfunction serializeQueryParams(parameters) {\n var str = [];\n\n for (var p in parameters) {\n if (parameters.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(parameters[p]));\n }\n }\n\n return str.join(\"&\");\n}\n\n_api.API.prototype.requestRaw = function (method, url, parameters, body, headers, queryParameters, form, deferred) {\n var queryParams = queryParameters && Object.keys(queryParameters).length ? serializeQueryParams(queryParameters) : null;\n var urlWithParams = url + (queryParams ? \"?\" + queryParams : \"\");\n\n if (body && !Object.keys(body).length) {\n body = undefined;\n }\n\n fetch(urlWithParams, {\n method: method,\n headers: headers,\n body: body\n }).then(function (response) {\n return response.json();\n }).then(function (body) {\n deferred.resolve(body);\n }).catch(function (error) {\n deferred.reject(error);\n });\n};\n\n_api.API.prototype.patch_user_public = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/{user_id}\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{user_id}\", parameters[\"userId\"]);\n\n if (parameters[\"userId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: userId\"));\n return deferred.promise;\n }\n\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.patch_user_private = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/users/me\";\n var headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n this.request(\"PATCH\", domain + path, parameters, body, headers, {}, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.post_unlock_list = function (parameters, body) {\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/unlocks\";\n var headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n this.request(\"POST\", domain + path, parameters, body, headers, {}, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.post_notification_list = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/notifications\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.post_files_list = function (parameters, body) {\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/files\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n this.requestRaw(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.patch_config = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs/{config_key}\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{config_key}\", parameters[\"configKey\"]);\n\n if (parameters[\"configKey\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: configKey\"));\n return deferred.promise;\n }\n\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.patch_config_list = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/configs\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.post_tag_list = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/tags\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.patch_team_public = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/teams/{team_id}\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{team_id}\", parameters[\"teamId\"]);\n\n if (parameters[\"teamId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: teamId\"));\n return deferred.promise;\n }\n\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"PATCH\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.post_challenge_attempt = function (parameters, body) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/challenges/attempt\";\n var queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"POST\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n_api.API.prototype.get_hint = function (parameters) {\n if (parameters === undefined) {\n parameters = {};\n }\n\n var deferred = _q.default.defer();\n\n var domain = this.domain,\n path = \"/hints/{hint_id}\";\n var body = {},\n queryParameters = {},\n headers = {},\n form = {};\n headers[\"Accept\"] = [\"application/json\"];\n headers[\"Content-Type\"] = [\"application/json\"];\n path = path.replace(\"{hint_id}\", parameters[\"hintId\"]);\n\n if (parameters[\"hintId\"] === undefined) {\n deferred.reject(new Error(\"Missing required parameter: hintId\"));\n return deferred.promise;\n }\n\n delete parameters[\"hintId\"];\n queryParameters = mergeQueryParams(parameters, queryParameters);\n this.request(\"GET\", domain + path, parameters, body, headers, queryParameters, form, deferred);\n return deferred.promise;\n};\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/patch.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/times.js":
/*!*********************************************!*\
!*** ./CTFd/themes/core/assets/js/times.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _moment = _interopRequireDefault(__webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\"));\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function _default() {\n (0, _jquery.default)(\"[data-time]\").each(function (i, elem) {\n elem.innerText = (0, _moment.default)((0, _jquery.default)(elem).data(\"time\")).local().format(\"MMMM Do, h:mm:ss A\");\n });\n};\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/times.js?");
/***/ }),
/***/ "./CTFd/themes/core/assets/js/utils.js":
/*!*********************************************!*\
!*** ./CTFd/themes/core/assets/js/utils.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
;
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WindowController = WindowController;\nexports.colorHash = colorHash;\nexports.htmlEntities = htmlEntities;\nexports.cumulativeSum = cumulativeSum;\nexports.init_notification_counter = init_notification_counter;\nexports.set_notification_counter = set_notification_counter;\nexports.inc_notification_counter = inc_notification_counter;\nexports.dec_notification_counter = dec_notification_counter;\nexports.clear_notification_counter = clear_notification_counter;\nexports.copyToClipboard = copyToClipboard;\nexports.makeSortableTables = makeSortableTables;\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_jquery.default.fn.serializeJSON = function (omit_nulls) {\n var params = {};\n var form = (0, _jquery.default)(this);\n var values = form.serializeArray();\n values = values.concat(form.find(\"input[type=checkbox]:checked\").map(function () {\n return {\n name: this.name,\n value: true\n };\n }).get());\n values = values.concat(form.find(\"input[type=checkbox]:not(:checked)\").map(function () {\n return {\n name: this.name,\n value: false\n };\n }).get());\n values.map(function (x) {\n if (omit_nulls) {\n if (x.value !== null && x.value !== \"\") {\n params[x.name] = x.value;\n } else {\n var input = form.find(\":input[name=\".concat(x.name, \"]\"));\n\n if (input.data(\"initial\") !== input.val()) {\n params[x.name] = x.value;\n }\n }\n } else {\n params[x.name] = x.value;\n }\n });\n return params;\n}; //http://stackoverflow.com/a/2648463 - wizardry!\n\n\nString.prototype.format = String.prototype.f = function () {\n var s = this,\n i = arguments.length;\n\n while (i--) {\n s = s.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\"), arguments[i]);\n }\n\n return s;\n}; //http://stackoverflow.com/a/7616484\n\n\nString.prototype.hashCode = function () {\n var hash = 0,\n i,\n chr,\n len;\n if (this.length == 0) return hash;\n\n for (i = 0, len = this.length; i < len; i++) {\n chr = this.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n return hash;\n}; // https://gist.github.com/neilj/4146038\n// https://fastmail.blog/2012/11/26/inter-tab-communication-using-local-storage/\n\n\nfunction WindowController() {\n this.id = Math.random();\n this.isMaster = false;\n this.others = {};\n window.addEventListener(\"storage\", this, false);\n window.addEventListener(\"unload\", this, false);\n this.broadcast(\"hello\");\n var that = this;\n\n var check = function check() {\n that.check();\n that._checkTimeout = setTimeout(check, 9000);\n };\n\n var ping = function ping() {\n that.sendPing();\n that._pingTimeout = setTimeout(ping, 17000);\n };\n\n this._checkTimeout = setTimeout(check, 500);\n this._pingTimeout = setTimeout(ping, 17000);\n}\n\nWindowController.prototype.destroy = function () {\n clearTimeout(this._pingTimeout);\n clearTimeout(this._checkTimeout);\n window.removeEventListener(\"storage\", this, false);\n window.removeEventListener(\"unload\", this, false);\n this.broadcast(\"bye\");\n};\n\nWindowController.prototype.handleEvent = function (event) {\n if (event.type === \"unload\") {\n this.destroy();\n } else if (event.key === \"broadcast\") {\n try {\n var data = JSON.parse(event.newValue);\n\n if (data.id !== this.id) {\n this[data.type](data);\n }\n } catch (error) {}\n }\n};\n\nWindowController.prototype.sendPing = function () {\n this.broadcast(\"ping\");\n};\n\nWindowController.prototype.hello = function (event) {\n this.ping(event);\n\n if (event.id < this.id) {\n this.check();\n } else {\n this.sendPing();\n }\n};\n\nWindowController.prototype.ping = function (event) {\n this.others[event.id] = +new Date();\n};\n\nWindowController.prototype.bye = function (event) {\n delete this.others[event.id];\n this.check();\n};\n\nWindowController.prototype.check = function (event) {\n var now = +new Date(),\n takeMaster = true,\n id;\n\n for (id in this.others) {\n if (this.others[id] + 23000 < now) {\n delete this.others[id];\n } else if (id < this.id) {\n takeMaster = false;\n }\n }\n\n if (this.isMaster !== takeMaster) {\n this.isMaster = takeMaster;\n this.masterDidChange();\n }\n};\n\nWindowController.prototype.masterDidChange = function () {};\n\nWindowController.prototype.broadcast = function (type, data) {\n var event = {\n id: this.id,\n type: type\n };\n\n for (var x in data) {\n event[x] = data[x];\n }\n\n try {\n localStorage.setItem(\"broadcast\", JSON.stringify(event));\n } catch (error) {\n console.log(error);\n }\n};\n\nfunction colorHash(str) {\n var hash = 0;\n\n for (var i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n var colour = \"#\";\n\n for (var _i = 0; _i < 3; _i++) {\n var value = hash >> _i * 8 & 0xff;\n colour += (\"00\" + value.toString(16)).substr(-2);\n }\n\n return colour;\n}\n\nfunction htmlEntities(string) {\n return (0, _jquery.default)(\"<div/>\").text(string).html();\n}\n\nfunction cumulativeSum(arr) {\n var result = arr.concat();\n\n for (var i = 0; i < arr.length; i++) {\n result[i] = arr.slice(0, i + 1).reduce(function (p, i) {\n return p + i;\n });\n }\n\n return result;\n}\n\nvar storage = window.localStorage;\nvar counter_key = \"unread_notifications\";\n\nfunction init_notification_counter() {\n var count = storage.getItem(counter_key);\n\n if (count === null) {\n storage.setItem(counter_key, 0);\n } else {\n if (count > 0) {\n (0, _jquery.default)(\".badge-notification\").text(count);\n }\n }\n}\n\nfunction set_notification_counter(count) {\n storage.setItem(counter_key, count);\n}\n\nfunction inc_notification_counter() {\n var count = storage.getItem(counter_key) || 0;\n storage.setItem(counter_key, ++count);\n (0, _jquery.default)(\".badge-notification\").text(count);\n}\n\nfunction dec_notification_counter() {\n var count = storage.getItem(counter_key) || 0;\n\n if (count > 0) {\n storage.setItem(counter_key, --count);\n (0, _jquery.default)(\".badge-notification\").text(count);\n } // Always clear if count is 0\n\n\n if (count == 0) {\n clear_notification_counter();\n }\n}\n\nfunction clear_notification_counter() {\n storage.setItem(counter_key, 0);\n (0, _jquery.default)(\".badge-notification\").empty();\n}\n\nfunction copyToClipboard(event, selector) {\n // Select element\n (0, _jquery.default)(selector).select(); // Copy to clipboard\n\n document.execCommand(\"copy\"); // Show tooltip to user\n\n (0, _jquery.default)(event.target).tooltip({\n title: \"Copied!\",\n trigger: \"manual\"\n });\n (0, _jquery.default)(event.target).tooltip(\"show\");\n setTimeout(function () {\n (0, _jquery.default)(event.target).tooltip(\"hide\");\n }, 1500);\n}\n\nfunction makeSortableTables() {\n (0, _jquery.default)(\"th.sort-col\").append(\" <i class=\\\"fas fa-sort\\\"></i>\");\n (0, _jquery.default)(\"th.sort-col\").click(function () {\n var table = (0, _jquery.default)(this).parents(\"table\").eq(0);\n var rows = table.find(\"tr:gt(0)\").toArray().sort(comparer((0, _jquery.default)(this).index()));\n this.asc = !this.asc;\n\n if (!this.asc) {\n rows = rows.reverse();\n }\n\n for (var i = 0; i < rows.length; i++) {\n table.append(rows[i]);\n }\n });\n\n function comparer(index) {\n return function (a, b) {\n var valA = getCellValue(a, index),\n valB = getCellValue(b, index);\n return _jquery.default.isNumeric(valA) && _jquery.default.isNumeric(valB) ? valA - valB : valA.toString().localeCompare(valB);\n };\n }\n\n function getCellValue(row, index) {\n return (0, _jquery.default)(row).children(\"td\").eq(index).text();\n }\n}\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/utils.js?");
/***/ }),
/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!**************************************************!*\
!*** ./node_modules/moment/locale sync ^\.\/.*$ ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack:///./node_modules/moment/locale_sync_^\\.\\/.*$?");
/***/ })
}]);