1/******/ (function() { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
vendor: 813 bytes, lines 4-25
4/***/ "./node_modules/core-js/internals/a-callable.js": 5/*!******************************************************!*\ 6 !*** ./node_modules/core-js/internals/a-callable.js ***! 7 \******************************************************/ 8/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 9 10"use strict"; 11 12var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 13var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js"); 14 15var $TypeError = TypeError; 16 17// `Assert: IsCallable(argument) is true` 18module.exports = function (argument) { 19 if (isCallable(argument)) return argument; 20 throw new $TypeError(tryToString(argument) + ' is not a function'); 21}; 22 23 24/***/ }), 25
vendor: 1,246 bytes, lines 26-57
26/***/ "./node_modules/core-js/internals/add-to-unscopables.js": 27/*!**************************************************************!*\ 28 !*** ./node_modules/core-js/internals/add-to-unscopables.js ***! 29 \**************************************************************/ 30/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 31 32"use strict"; 33 34var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 35var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); 36var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); 37 38var UNSCOPABLES = wellKnownSymbol('unscopables'); 39var ArrayPrototype = Array.prototype; 40 41// Array.prototype[@@unscopables] 42// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 43if (ArrayPrototype[UNSCOPABLES] === undefined) { 44 defineProperty(ArrayPrototype, UNSCOPABLES, { 45 configurable: true, 46 value: create(null) 47 }); 48} 49 50// add a key to Array.prototype[@@unscopables] 51module.exports = function (key) { 52 ArrayPrototype[UNSCOPABLES][key] = true; 53}; 54 55 56/***/ }), 57
vendor: 717 bytes, lines 58-76
58/***/ "./node_modules/core-js/internals/advance-string-index.js": 59/*!****************************************************************!*\ 60 !*** ./node_modules/core-js/internals/advance-string-index.js ***! 61 \****************************************************************/ 62/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 63 64"use strict"; 65 66var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt); 67 68// `AdvanceStringIndex` abstract operation 69// https://tc39.es/ecma262/#sec-advancestringindex 70module.exports = function (S, index, unicode) { 71 return index + (unicode ? charAt(S, index).length : 1); 72}; 73 74 75/***/ }), 76
vendor: 688 bytes, lines 77-98
77/***/ "./node_modules/core-js/internals/an-object.js": 78/*!*****************************************************!*\ 79 !*** ./node_modules/core-js/internals/an-object.js ***! 80 \*****************************************************/ 81/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 82 83"use strict"; 84 85var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 86 87var $String = String; 88var $TypeError = TypeError; 89 90// `Assert: Type(argument) is Object` 91module.exports = function (argument) { 92 if (isObject(argument)) return argument; 93 throw new $TypeError($String(argument) + ' is not an object'); 94}; 95 96 97/***/ }), 98
vendor: 1,052 bytes, lines 99-121
99/***/ "./node_modules/core-js/internals/array-for-each.js": 100/*!**********************************************************!*\ 101 !*** ./node_modules/core-js/internals/array-for-each.js ***! 102 \**********************************************************/ 103/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 104 105"use strict"; 106 107var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach); 108var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js"); 109 110var STRICT_METHOD = arrayMethodIsStrict('forEach'); 111 112// `Array.prototype.forEach` method implementation 113// https://tc39.es/ecma262/#sec-array.prototype.foreach 114module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { 115 return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 116// eslint-disable-next-line es/no-array-prototype-foreach -- safe 117} : [].forEach; 118 119 120/***/ }), 121
vendor: 1,943 bytes, lines 122-166
122/***/ "./node_modules/core-js/internals/array-includes.js": 123/*!**********************************************************!*\ 124 !*** ./node_modules/core-js/internals/array-includes.js ***! 125 \**********************************************************/ 126/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 127 128"use strict"; 129 130var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); 131var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); 132var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); 133 134// `Array.prototype.{ indexOf, includes }` methods implementation 135var createMethod = function (IS_INCLUDES) { 136 return function ($this, el, fromIndex) { 137 var O = toIndexedObject($this); 138 var length = lengthOfArrayLike(O); 139 if (length === 0) return !IS_INCLUDES && -1; 140 var index = toAbsoluteIndex(fromIndex, length); 141 var value; 142 // Array#includes uses SameValueZero equality algorithm 143 // eslint-disable-next-line no-self-compare -- NaN check 144 if (IS_INCLUDES && el !== el) while (length > index) { 145 value = O[index++]; 146 // eslint-disable-next-line no-self-compare -- NaN check 147 if (value !== value) return true; 148 // Array#indexOf ignores holes, Array#includes - not 149 } else for (;length > index; index++) { 150 if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; 151 } return !IS_INCLUDES && -1; 152 }; 153}; 154 155module.exports = { 156 // `Array.prototype.includes` method 157 // https://tc39.es/ecma262/#sec-array.prototype.includes 158 includes: createMethod(true), 159 // `Array.prototype.indexOf` method 160 // https://tc39.es/ecma262/#sec-array.prototype.indexof 161 indexOf: createMethod(false) 162}; 163 164 165/***/ }), 166
vendor: 3,714 bytes, lines 167-251
167/***/ "./node_modules/core-js/internals/array-iteration.js": 168/*!***********************************************************!*\ 169 !*** ./node_modules/core-js/internals/array-iteration.js ***! 170 \***********************************************************/ 171/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 172 173"use strict"; 174 175var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js"); 176var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 177var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); 178var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); 179var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); 180var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); 181 182var push = uncurryThis([].push); 183 184// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation 185var createMethod = function (TYPE) { 186 var IS_MAP = TYPE === 1; 187 var IS_FILTER = TYPE === 2; 188 var IS_SOME = TYPE === 3; 189 var IS_EVERY = TYPE === 4; 190 var IS_FIND_INDEX = TYPE === 6; 191 var IS_FILTER_REJECT = TYPE === 7; 192 var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; 193 return function ($this, callbackfn, that, specificCreate) { 194 var O = toObject($this); 195 var self = IndexedObject(O); 196 var length = lengthOfArrayLike(self); 197 var boundFunction = bind(callbackfn, that); 198 var index = 0; 199 var create = specificCreate || arraySpeciesCreate; 200 var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; 201 var value, result; 202 for (;length > index; index++) if (NO_HOLES || index in self) { 203 value = self[index]; 204 result = boundFunction(value, index, O); 205 if (TYPE) { 206 if (IS_MAP) target[index] = result; // map 207 else if (result) switch (TYPE) { 208 case 3: return true; // some 209 case 5: return value; // find 210 case 6: return index; // findIndex 211 case 2: push(target, value); // filter 212 } else switch (TYPE) { 213 case 4: return false; // every 214 case 7: push(target, value); // filterReject 215 } 216 } 217 } 218 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; 219 }; 220}; 221 222module.exports = { 223 // `Array.prototype.forEach` method 224 // https://tc39.es/ecma262/#sec-array.prototype.foreach 225 forEach: createMethod(0), 226 // `Array.prototype.map` method 227 // https://tc39.es/ecma262/#sec-array.prototype.map 228 map: createMethod(1), 229 // `Array.prototype.filter` method 230 // https://tc39.es/ecma262/#sec-array.prototype.filter 231 filter: createMethod(2), 232 // `Array.prototype.some` method 233 // https://tc39.es/ecma262/#sec-array.prototype.some 234 some: createMethod(3), 235 // `Array.prototype.every` method 236 // https://tc39.es/ecma262/#sec-array.prototype.every 237 every: createMethod(4), 238 // `Array.prototype.find` method 239 // https://tc39.es/ecma262/#sec-array.prototype.find 240 find: createMethod(5), 241 // `Array.prototype.findIndex` method 242 // https://tc39.es/ecma262/#sec-array.prototype.findIndex 243 findIndex: createMethod(6), 244 // `Array.prototype.filterReject` method 245 // https://github.com/tc39/proposal-array-filtering 246 filterReject: createMethod(7) 247}; 248 249 250/***/ }), 251
vendor: 1,315 bytes, lines 252-282
252/***/ "./node_modules/core-js/internals/array-method-has-species-support.js": 253/*!****************************************************************************!*\ 254 !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***! 255 \****************************************************************************/ 256/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 257 258"use strict"; 259 260var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 261var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 262var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); 263 264var SPECIES = wellKnownSymbol('species'); 265 266module.exports = function (METHOD_NAME) { 267 // We can't use this feature detection in V8 since it causes 268 // deoptimization and serious performance degradation 269 // https://github.com/zloirock/core-js/issues/677 270 return V8_VERSION >= 51 || !fails(function () { 271 var array = []; 272 var constructor = array.constructor = {}; 273 constructor[SPECIES] = function () { 274 return { foo: 1 }; 275 }; 276 return array[METHOD_NAME](Boolean).foo !== 1; 277 }); 278}; 279 280 281/***/ }), 282
vendor: 761 bytes, lines 283-303
283/***/ "./node_modules/core-js/internals/array-method-is-strict.js": 284/*!******************************************************************!*\ 285 !*** ./node_modules/core-js/internals/array-method-is-strict.js ***! 286 \******************************************************************/ 287/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 288 289"use strict"; 290 291var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 292 293module.exports = function (METHOD_NAME, argument) { 294 var method = [][METHOD_NAME]; 295 return !!method && fails(function () { 296 // eslint-disable-next-line no-useless-call -- required for testing 297 method.call(null, argument || function () { return 1; }, 1); 298 }); 299}; 300 301 302/***/ }), 303
vendor: 524 bytes, lines 304-318
304/***/ "./node_modules/core-js/internals/array-slice.js": 305/*!*******************************************************!*\ 306 !*** ./node_modules/core-js/internals/array-slice.js ***! 307 \*******************************************************/ 308/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 309 310"use strict"; 311 312var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 313 314module.exports = uncurryThis([].slice); 315 316 317/***/ }), 318
vendor: 1,428 bytes, lines 319-352
319/***/ "./node_modules/core-js/internals/array-species-constructor.js": 320/*!*********************************************************************!*\ 321 !*** ./node_modules/core-js/internals/array-species-constructor.js ***! 322 \*********************************************************************/ 323/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 324 325"use strict"; 326 327var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); 328var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); 329var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 330var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 331 332var SPECIES = wellKnownSymbol('species'); 333var $Array = Array; 334 335// a part of `ArraySpeciesCreate` abstract operation 336// https://tc39.es/ecma262/#sec-arrayspeciescreate 337module.exports = function (originalArray) { 338 var C; 339 if (isArray(originalArray)) { 340 C = originalArray.constructor; 341 // cross-realm fallback 342 if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; 343 else if (isObject(C)) { 344 C = C[SPECIES]; 345 if (C === null) C = undefined; 346 } 347 } return C === undefined ? $Array : C; 348}; 349 350 351/***/ }), 352
vendor: 771 bytes, lines 353-371
353/***/ "./node_modules/core-js/internals/array-species-create.js": 354/*!****************************************************************!*\ 355 !*** ./node_modules/core-js/internals/array-species-create.js ***! 356 \****************************************************************/ 357/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 358 359"use strict"; 360 361var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js"); 362 363// `ArraySpeciesCreate` abstract operation 364// https://tc39.es/ecma262/#sec-arrayspeciescreate 365module.exports = function (originalArray, length) { 366 return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); 367}; 368 369 370/***/ }), 371
vendor: 646 bytes, lines 372-391
372/***/ "./node_modules/core-js/internals/classof-raw.js": 373/*!*******************************************************!*\ 374 !*** ./node_modules/core-js/internals/classof-raw.js ***! 375 \*******************************************************/ 376/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 377 378"use strict"; 379 380var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 381 382var toString = uncurryThis({}.toString); 383var stringSlice = uncurryThis(''.slice); 384 385module.exports = function (it) { 386 return stringSlice(toString(it), 8, -1); 387}; 388 389 390/***/ }), 391
vendor: 1,689 bytes, lines 392-432
392/***/ "./node_modules/core-js/internals/classof.js": 393/*!***************************************************!*\ 394 !*** ./node_modules/core-js/internals/classof.js ***! 395 \***************************************************/ 396/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 397 398"use strict"; 399 400var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); 401var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 402var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 403var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 404 405var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 406var $Object = Object; 407 408// ES3 wrong here 409var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments'; 410 411// fallback for IE11 Script Access Denied error 412var tryGet = function (it, key) { 413 try { 414 return it[key]; 415 } catch (error) { /* empty */ } 416}; 417 418// getting tag from ES6+ `Object.prototype.toString` 419module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { 420 var O, tag, result; 421 return it === undefined ? 'Undefined' : it === null ? 'Null' 422 // @@toStringTag case 423 : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag 424 // builtinTag case 425 : CORRECT_ARGUMENTS ? classofRaw(O) 426 // ES3 arguments fallback 427 : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result; 428}; 429 430 431/***/ }), 432
vendor: 1,414 bytes, lines 433-460
433/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": 434/*!***********************************************************************!*\ 435 !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! 436 \***********************************************************************/ 437/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 438 439"use strict"; 440 441var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 442var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); 443var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); 444var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); 445 446module.exports = function (target, source, exceptions) { 447 var keys = ownKeys(source); 448 var defineProperty = definePropertyModule.f; 449 var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 450 for (var i = 0; i < keys.length; i++) { 451 var key = keys[i]; 452 if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { 453 defineProperty(target, key, getOwnPropertyDescriptor(source, key)); 454 } 455 } 456}; 457 458 459/***/ }), 460
vendor: 828 bytes, lines 461-487
461/***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js": 462/*!*******************************************************************!*\ 463 !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***! 464 \*******************************************************************/ 465/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 466 467"use strict"; 468 469var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 470 471var MATCH = wellKnownSymbol('match'); 472 473module.exports = function (METHOD_NAME) { 474 var regexp = /./; 475 try { 476 '/./'[METHOD_NAME](regexp); 477 } catch (error1) { 478 try { 479 regexp[MATCH] = false; 480 return '/./'[METHOD_NAME](regexp); 481 } catch (error2) { /* empty */ } 482 } return false; 483}; 484 485 486/***/ }), 487
vendor: 1,082 bytes, lines 488-509
488/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js": 489/*!**************************************************************************!*\ 490 !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***! 491 \**************************************************************************/ 492/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 493 494"use strict"; 495 496var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 497var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); 498var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); 499 500module.exports = DESCRIPTORS ? function (object, key, value) { 501 return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); 502} : function (object, key, value) { 503 object[key] = value; 504 return object; 505}; 506 507 508/***/ }), 509
vendor: 527 bytes, lines 510-529
510/***/ "./node_modules/core-js/internals/create-property-descriptor.js": 511/*!**********************************************************************!*\ 512 !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! 513 \**********************************************************************/ 514/***/ (function(module) { 515 516"use strict"; 517 518module.exports = function (bitmap, value) { 519 return { 520 enumerable: !(bitmap & 1), 521 configurable: !(bitmap & 2), 522 writable: !(bitmap & 4), 523 value: value 524 }; 525}; 526 527 528/***/ }), 529
vendor: 970 bytes, lines 530-549
530/***/ "./node_modules/core-js/internals/create-property.js": 531/*!***********************************************************!*\ 532 !*** ./node_modules/core-js/internals/create-property.js ***! 533 \***********************************************************/ 534/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 535 536"use strict"; 537 538var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 539var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); 540var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); 541 542module.exports = function (object, key, value) { 543 if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value)); 544 else object[key] = value; 545}; 546 547 548/***/ }), 549
vendor: 1,614 bytes, lines 550-588
550/***/ "./node_modules/core-js/internals/define-built-in.js": 551/*!***********************************************************!*\ 552 !*** ./node_modules/core-js/internals/define-built-in.js ***! 553 \***********************************************************/ 554/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 555 556"use strict"; 557 558var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 559var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); 560var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js"); 561var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); 562 563module.exports = function (O, key, value, options) { 564 if (!options) options = {}; 565 var simple = options.enumerable; 566 var name = options.name !== undefined ? options.name : key; 567 if (isCallable(value)) makeBuiltIn(value, name, options); 568 if (options.global) { 569 if (simple) O[key] = value; 570 else defineGlobalProperty(key, value); 571 } else { 572 try { 573 if (!options.unsafe) delete O[key]; 574 else if (O[key]) simple = true; 575 } catch (error) { /* empty */ } 576 if (simple) O[key] = value; 577 else definePropertyModule.f(O, key, { 578 value: value, 579 enumerable: false, 580 configurable: !options.nonConfigurable, 581 writable: !options.nonWritable 582 }); 583 } return O; 584}; 585 586 587/***/ }), 588
vendor: 826 bytes, lines 589-612
589/***/ "./node_modules/core-js/internals/define-global-property.js": 590/*!******************************************************************!*\ 591 !*** ./node_modules/core-js/internals/define-global-property.js ***! 592 \******************************************************************/ 593/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 594 595"use strict"; 596 597var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 598 599// eslint-disable-next-line es/no-object-defineproperty -- safe 600var defineProperty = Object.defineProperty; 601 602module.exports = function (key, value) { 603 try { 604 defineProperty(globalThis, key, { value: value, configurable: true, writable: true }); 605 } catch (error) { 606 globalThis[key] = value; 607 } return value; 608}; 609 610 611/***/ }), 612
vendor: 711 bytes, lines 613-631
613/***/ "./node_modules/core-js/internals/descriptors.js": 614/*!*******************************************************!*\ 615 !*** ./node_modules/core-js/internals/descriptors.js ***! 616 \*******************************************************/ 617/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 618 619"use strict"; 620 621var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 622 623// Detect IE8's incomplete defineProperty implementation 624module.exports = !fails(function () { 625 // eslint-disable-next-line es/no-object-defineproperty -- required for testing 626 return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; 627}); 628 629 630/***/ }), 631
vendor: 874 bytes, lines 632-653
632/***/ "./node_modules/core-js/internals/document-create-element.js": 633/*!*******************************************************************!*\ 634 !*** ./node_modules/core-js/internals/document-create-element.js ***! 635 \*******************************************************************/ 636/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 637 638"use strict"; 639 640var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 641var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 642 643var document = globalThis.document; 644// typeof document.createElement is 'object' in old IE 645var EXISTS = isObject(document) && isObject(document.createElement); 646 647module.exports = function (it) { 648 return EXISTS ? document.createElement(it) : {}; 649}; 650 651 652/***/ }), 653
vendor: 1,055 bytes, lines 654-700
654/***/ "./node_modules/core-js/internals/dom-iterables.js": 655/*!*********************************************************!*\ 656 !*** ./node_modules/core-js/internals/dom-iterables.js ***! 657 \*********************************************************/ 658/***/ (function(module) { 659 660"use strict"; 661 662// iterable DOM collections 663// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods 664module.exports = { 665 CSSRuleList: 0, 666 CSSStyleDeclaration: 0, 667 CSSValueList: 0, 668 ClientRectList: 0, 669 DOMRectList: 0, 670 DOMStringList: 0, 671 DOMTokenList: 1, 672 DataTransferItemList: 0, 673 FileList: 0, 674 HTMLAllCollection: 0, 675 HTMLCollection: 0, 676 HTMLFormElement: 0, 677 HTMLSelectElement: 0, 678 MediaList: 0, 679 MimeTypeArray: 0, 680 NamedNodeMap: 0, 681 NodeList: 1, 682 PaintRequestList: 0, 683 Plugin: 0, 684 PluginArray: 0, 685 SVGLengthList: 0, 686 SVGNumberList: 0, 687 SVGPathSegList: 0, 688 SVGPointList: 0, 689 SVGStringList: 0, 690 SVGTransformList: 0, 691 SourceBufferList: 0, 692 StyleSheetList: 0, 693 TextTrackCueList: 0, 694 TextTrackList: 0, 695 TouchList: 0 696}; 697 698 699/***/ }), 700
vendor: 895 bytes, lines 701-719
701/***/ "./node_modules/core-js/internals/dom-token-list-prototype.js": 702/*!********************************************************************!*\ 703 !*** ./node_modules/core-js/internals/dom-token-list-prototype.js ***! 704 \********************************************************************/ 705/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 706 707"use strict"; 708 709// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` 710var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); 711 712var classList = documentCreateElement('span').classList; 713var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; 714 715module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; 716 717 718/***/ }), 719
vendor: 480 bytes, lines 720-741
720/***/ "./node_modules/core-js/internals/enum-bug-keys.js": 721/*!*********************************************************!*\ 722 !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! 723 \*********************************************************/ 724/***/ (function(module) { 725 726"use strict"; 727 728// IE8- don't enum bug keys 729module.exports = [ 730 'constructor', 731 'hasOwnProperty', 732 'isPrototypeOf', 733 'propertyIsEnumerable', 734 'toLocaleString', 735 'toString', 736 'valueOf' 737]; 738 739 740/***/ }), 741
vendor: 649 bytes, lines 742-759
742/***/ "./node_modules/core-js/internals/environment-user-agent.js": 743/*!******************************************************************!*\ 744 !*** ./node_modules/core-js/internals/environment-user-agent.js ***! 745 \******************************************************************/ 746/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 747 748"use strict"; 749 750var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 751 752var navigator = globalThis.navigator; 753var userAgent = navigator && navigator.userAgent; 754 755module.exports = userAgent ? String(userAgent) : ''; 756 757 758/***/ }), 759
vendor: 1,402 bytes, lines 760-798
760/***/ "./node_modules/core-js/internals/environment-v8-version.js": 761/*!******************************************************************!*\ 762 !*** ./node_modules/core-js/internals/environment-v8-version.js ***! 763 \******************************************************************/ 764/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 765 766"use strict"; 767 768var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 769var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js"); 770 771var process = globalThis.process; 772var Deno = globalThis.Deno; 773var versions = process && process.versions || Deno && Deno.version; 774var v8 = versions && versions.v8; 775var match, version; 776 777if (v8) { 778 match = v8.split('.'); 779 // in old Chrome, versions of V8 isn't V8 = Chrome / 10 780 // but their correct versions are not interesting for us 781 version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); 782} 783 784// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` 785// so check `userAgent` even if `.v8` exists, but 0 786if (!version && userAgent) { 787 match = userAgent.match(/Edge\/(\d+)/); 788 if (!match || match[1] >= 74) { 789 match = userAgent.match(/Chrome\/(\d+)/); 790 if (match) version = +match[1]; 791 } 792} 793 794module.exports = version; 795 796 797/***/ }), 798
vendor: 3,567 bytes, lines 799-864
799/***/ "./node_modules/core-js/internals/export.js": 800/*!**************************************************!*\ 801 !*** ./node_modules/core-js/internals/export.js ***! 802 \**************************************************/ 803/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 804 805"use strict"; 806 807var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 808var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f); 809var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); 810var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); 811var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); 812var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); 813var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); 814 815/* 816 options.target - name of the target object 817 options.global - target is the global object 818 options.stat - export as static methods of target 819 options.proto - export as prototype methods of target 820 options.real - real prototype method for the `pure` version 821 options.forced - export even if the native feature is available 822 options.bind - bind methods to the target, required for the `pure` version 823 options.wrap - wrap constructors to preventing global pollution, required for the `pure` version 824 options.unsafe - use the simple assignment of property instead of delete + defineProperty 825 options.sham - add a flag to not completely full polyfills 826 options.enumerable - export as enumerable property 827 options.dontCallGetSet - prevent calling a getter on target 828 options.name - the .name of the function if it does not match the key 829*/ 830module.exports = function (options, source) { 831 var TARGET = options.target; 832 var GLOBAL = options.global; 833 var STATIC = options.stat; 834 var FORCED, target, key, targetProperty, sourceProperty, descriptor; 835 if (GLOBAL) { 836 target = globalThis; 837 } else if (STATIC) { 838 target = globalThis[TARGET] || defineGlobalProperty(TARGET, {}); 839 } else { 840 target = globalThis[TARGET] && globalThis[TARGET].prototype; 841 } 842 if (target) for (key in source) { 843 sourceProperty = source[key]; 844 if (options.dontCallGetSet) { 845 descriptor = getOwnPropertyDescriptor(target, key); 846 targetProperty = descriptor && descriptor.value; 847 } else targetProperty = target[key]; 848 FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); 849 // contained in target 850 if (!FORCED && targetProperty !== undefined) { 851 if (typeof sourceProperty == typeof targetProperty) continue; 852 copyConstructorProperties(sourceProperty, targetProperty); 853 } 854 // add a flag to not completely full polyfills 855 if (options.sham || (targetProperty && targetProperty.sham)) { 856 createNonEnumerableProperty(sourceProperty, 'sham', true); 857 } 858 defineBuiltIn(target, key, sourceProperty, options); 859 } 860}; 861 862 863/***/ }), 864
vendor: 378 bytes, lines 865-883
865/***/ "./node_modules/core-js/internals/fails.js": 866/*!*************************************************!*\ 867 !*** ./node_modules/core-js/internals/fails.js ***! 868 \*************************************************/ 869/***/ (function(module) { 870 871"use strict"; 872 873module.exports = function (exec) { 874 try { 875 return !!exec(); 876 } catch (error) { 877 return true; 878 } 879}; 880 881 882/***/ }), 883
vendor: 3,603 bytes, lines 884-970
884/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": 885/*!******************************************************************************!*\ 886 !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! 887 \******************************************************************************/ 888/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 889 890"use strict"; 891 892// TODO: Remove from `core-js@4` since it's moved to entry points 893__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js"); 894var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 895var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); 896var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); 897var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 898var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 899var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); 900 901var SPECIES = wellKnownSymbol('species'); 902var RegExpPrototype = RegExp.prototype; 903 904module.exports = function (KEY, exec, FORCED, SHAM) { 905 var SYMBOL = wellKnownSymbol(KEY); 906 907 var DELEGATES_TO_SYMBOL = !fails(function () { 908 // String methods call symbol-named RegExp methods 909 var O = {}; 910 O[SYMBOL] = function () { return 7; }; 911 return ''[KEY](O) !== 7; 912 }); 913 914 var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { 915 // Symbol-named RegExp methods call .exec 916 var execCalled = false; 917 var re = /a/; 918 919 if (KEY === 'split') { 920 // We can't use real regex here since it causes deoptimization 921 // and serious performance degradation in V8 922 // https://github.com/zloirock/core-js/issues/306 923 re = {}; 924 // RegExp[@@split] doesn't call the regex's exec method, but first creates 925 // a new one. We need to return the patched regex when creating the new one. 926 re.constructor = {}; 927 re.constructor[SPECIES] = function () { return re; }; 928 re.flags = ''; 929 re[SYMBOL] = /./[SYMBOL]; 930 } 931 932 re.exec = function () { 933 execCalled = true; 934 return null; 935 }; 936 937 re[SYMBOL](''); 938 return !execCalled; 939 }); 940 941 if ( 942 !DELEGATES_TO_SYMBOL || 943 !DELEGATES_TO_EXEC || 944 FORCED 945 ) { 946 var nativeRegExpMethod = /./[SYMBOL]; 947 var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { 948 var $exec = regexp.exec; 949 if ($exec === regexpExec || $exec === RegExpPrototype.exec) { 950 if (DELEGATES_TO_SYMBOL && !forceStringMethod) { 951 // The native String method already delegates to @@method (this 952 // polyfilled function), leasing to infinite recursion. 953 // We avoid it by directly calling the native @@method method. 954 return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) }; 955 } 956 return { done: true, value: call(nativeMethod, str, regexp, arg2) }; 957 } 958 return { done: false }; 959 }); 960 961 defineBuiltIn(String.prototype, KEY, methods[0]); 962 defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); 963 } 964 965 if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); 966}; 967 968 969/***/ }), 970
vendor: 847 bytes, lines 971-992
971/***/ "./node_modules/core-js/internals/function-apply.js": 972/*!**********************************************************!*\ 973 !*** ./node_modules/core-js/internals/function-apply.js ***! 974 \**********************************************************/ 975/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 976 977"use strict"; 978 979var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); 980 981var FunctionPrototype = Function.prototype; 982var apply = FunctionPrototype.apply; 983var call = FunctionPrototype.call; 984 985// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe 986module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { 987 return call.apply(apply, arguments); 988}); 989 990 991/***/ }), 992
vendor: 1,071 bytes, lines 993-1017
993/***/ "./node_modules/core-js/internals/function-bind-context.js": 994/*!*****************************************************************!*\ 995 !*** ./node_modules/core-js/internals/function-bind-context.js ***! 996 \*****************************************************************/ 997/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 998 999"use strict"; 1000 1001var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js/internals/function-uncurry-this-clause.js"); 1002var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); 1003var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); 1004 1005var bind = uncurryThis(uncurryThis.bind); 1006 1007// optional / simple context binding 1008module.exports = function (fn, that) { 1009 aCallable(fn); 1010 return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { 1011 return fn.apply(that, arguments); 1012 }; 1013}; 1014 1015 1016/***/ }), 1017
vendor: 775 bytes, lines 1018-1037
1018/***/ "./node_modules/core-js/internals/function-bind-native.js": 1019/*!****************************************************************!*\ 1020 !*** ./node_modules/core-js/internals/function-bind-native.js ***! 1021 \****************************************************************/ 1022/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1023 1024"use strict"; 1025 1026var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1027 1028module.exports = !fails(function () { 1029 // eslint-disable-next-line es/no-function-prototype-bind -- safe 1030 var test = (function () { /* empty */ }).bind(); 1031 // eslint-disable-next-line no-prototype-builtins -- safe 1032 return typeof test != 'function' || test.hasOwnProperty('prototype'); 1033}); 1034 1035 1036/***/ }), 1037
vendor: 696 bytes, lines 1038-1056
1038/***/ "./node_modules/core-js/internals/function-call.js": 1039/*!*********************************************************!*\ 1040 !*** ./node_modules/core-js/internals/function-call.js ***! 1041 \*********************************************************/ 1042/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1043 1044"use strict"; 1045 1046var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); 1047 1048var call = Function.prototype.call; 1049// eslint-disable-next-line es/no-function-prototype-bind -- safe 1050module.exports = NATIVE_BIND ? call.bind(call) : function () { 1051 return call.apply(call, arguments); 1052}; 1053 1054 1055/***/ }), 1056
vendor: 1,199 bytes, lines 1057-1085
1057/***/ "./node_modules/core-js/internals/function-name.js": 1058/*!*********************************************************!*\ 1059 !*** ./node_modules/core-js/internals/function-name.js ***! 1060 \*********************************************************/ 1061/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1062 1063"use strict"; 1064 1065var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 1066var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 1067 1068var FunctionPrototype = Function.prototype; 1069// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 1070var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; 1071 1072var EXISTS = hasOwn(FunctionPrototype, 'name'); 1073// additional protection from minified / mangled / dropped function names 1074var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; 1075var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); 1076 1077module.exports = { 1078 EXISTS: EXISTS, 1079 PROPER: PROPER, 1080 CONFIGURABLE: CONFIGURABLE 1081}; 1082 1083 1084/***/ }), 1085
vendor: 898 bytes, lines 1086-1106
1086/***/ "./node_modules/core-js/internals/function-uncurry-this-clause.js": 1087/*!************************************************************************!*\ 1088 !*** ./node_modules/core-js/internals/function-uncurry-this-clause.js ***! 1089 \************************************************************************/ 1090/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1091 1092"use strict"; 1093 1094var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 1095var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1096 1097module.exports = function (fn) { 1098 // Nashorn bug: 1099 // https://github.com/zloirock/core-js/issues/1128 1100 // https://github.com/zloirock/core-js/issues/1130 1101 if (classofRaw(fn) === 'Function') return uncurryThis(fn); 1102}; 1103 1104 1105/***/ }), 1106
vendor: 888 bytes, lines 1107-1130
1107/***/ "./node_modules/core-js/internals/function-uncurry-this.js": 1108/*!*****************************************************************!*\ 1109 !*** ./node_modules/core-js/internals/function-uncurry-this.js ***! 1110 \*****************************************************************/ 1111/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1112 1113"use strict"; 1114 1115var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); 1116 1117var FunctionPrototype = Function.prototype; 1118var call = FunctionPrototype.call; 1119// eslint-disable-next-line es/no-function-prototype-bind -- safe 1120var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); 1121 1122module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { 1123 return function () { 1124 return call.apply(fn, arguments); 1125 }; 1126}; 1127 1128 1129/***/ }), 1130
vendor: 858 bytes, lines 1131-1152
1131/***/ "./node_modules/core-js/internals/get-built-in.js": 1132/*!********************************************************!*\ 1133 !*** ./node_modules/core-js/internals/get-built-in.js ***! 1134 \********************************************************/ 1135/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1136 1137"use strict"; 1138 1139var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 1140var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1141 1142var aFunction = function (argument) { 1143 return isCallable(argument) ? argument : undefined; 1144}; 1145 1146module.exports = function (namespace, method) { 1147 return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method]; 1148}; 1149 1150 1151/***/ }), 1152
vendor: 799 bytes, lines 1153-1173
1153/***/ "./node_modules/core-js/internals/get-method.js": 1154/*!******************************************************!*\ 1155 !*** ./node_modules/core-js/internals/get-method.js ***! 1156 \******************************************************/ 1157/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1158 1159"use strict"; 1160 1161var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); 1162var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); 1163 1164// `GetMethod` abstract operation 1165// https://tc39.es/ecma262/#sec-getmethod 1166module.exports = function (V, P) { 1167 var func = V[P]; 1168 return isNullOrUndefined(func) ? undefined : aCallable(func); 1169}; 1170 1171 1172/***/ }), 1173
vendor: 2,126 bytes, lines 1174-1230
1174/***/ "./node_modules/core-js/internals/get-substitution.js": 1175/*!************************************************************!*\ 1176 !*** ./node_modules/core-js/internals/get-substitution.js ***! 1177 \************************************************************/ 1178/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1179 1180"use strict"; 1181 1182var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1183var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); 1184 1185var floor = Math.floor; 1186var charAt = uncurryThis(''.charAt); 1187var replace = uncurryThis(''.replace); 1188var stringSlice = uncurryThis(''.slice); 1189// eslint-disable-next-line redos/no-vulnerable -- safe 1190var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; 1191var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; 1192 1193// `GetSubstitution` abstract operation 1194// https://tc39.es/ecma262/#sec-getsubstitution 1195module.exports = function (matched, str, position, captures, namedCaptures, replacement) { 1196 var tailPos = position + matched.length; 1197 var m = captures.length; 1198 var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; 1199 if (namedCaptures !== undefined) { 1200 namedCaptures = toObject(namedCaptures); 1201 symbols = SUBSTITUTION_SYMBOLS; 1202 } 1203 return replace(replacement, symbols, function (match, ch) { 1204 var capture; 1205 switch (charAt(ch, 0)) { 1206 case '$': return '$'; 1207 case '&': return matched; 1208 case '`': return stringSlice(str, 0, position); 1209 case "'": return stringSlice(str, tailPos); 1210 case '<': 1211 capture = namedCaptures[stringSlice(ch, 1, -1)]; 1212 break; 1213 default: // \d\d? 1214 var n = +ch; 1215 if (n === 0) return match; 1216 if (n > m) { 1217 var f = floor(n / 10); 1218 if (f === 0) return match; 1219 if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); 1220 return match; 1221 } 1222 capture = captures[n - 1]; 1223 } 1224 return capture === undefined ? '' : capture; 1225 }); 1226}; 1227 1228 1229/***/ }), 1230
vendor: 1,006 bytes, lines 1231-1257
1231/***/ "./node_modules/core-js/internals/global-this.js": 1232/*!*******************************************************!*\ 1233 !*** ./node_modules/core-js/internals/global-this.js ***! 1234 \*******************************************************/ 1235/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1236 1237"use strict"; 1238 1239var check = function (it) { 1240 return it && it.Math === Math && it; 1241}; 1242 1243// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 1244module.exports = 1245 // eslint-disable-next-line es/no-global-this -- safe 1246 check(typeof globalThis == 'object' && globalThis) || 1247 check(typeof window == 'object' && window) || 1248 // eslint-disable-next-line no-restricted-globals -- safe 1249 check(typeof self == 'object' && self) || 1250 check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || 1251 check(typeof this == 'object' && this) || 1252 // eslint-disable-next-line no-new-func -- fallback 1253 (function () { return this; })() || Function('return this')(); 1254 1255 1256/***/ }), 1257
vendor: 923 bytes, lines 1258-1280
1258/***/ "./node_modules/core-js/internals/has-own-property.js": 1259/*!************************************************************!*\ 1260 !*** ./node_modules/core-js/internals/has-own-property.js ***! 1261 \************************************************************/ 1262/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1263 1264"use strict"; 1265 1266var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1267var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); 1268 1269var hasOwnProperty = uncurryThis({}.hasOwnProperty); 1270 1271// `HasOwnProperty` abstract operation 1272// https://tc39.es/ecma262/#sec-hasownproperty 1273// eslint-disable-next-line es/no-object-hasown -- safe 1274module.exports = Object.hasOwn || function hasOwn(it, key) { 1275 return hasOwnProperty(toObject(it), key); 1276}; 1277 1278 1279/***/ }), 1280
vendor: 315 bytes, lines 1281-1293
1281/***/ "./node_modules/core-js/internals/hidden-keys.js": 1282/*!*******************************************************!*\ 1283 !*** ./node_modules/core-js/internals/hidden-keys.js ***! 1284 \*******************************************************/ 1285/***/ (function(module) { 1286 1287"use strict"; 1288 1289module.exports = {}; 1290 1291 1292/***/ }), 1293
vendor: 497 bytes, lines 1294-1308
1294/***/ "./node_modules/core-js/internals/html.js": 1295/*!************************************************!*\ 1296 !*** ./node_modules/core-js/internals/html.js ***! 1297 \************************************************/ 1298/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1299 1300"use strict"; 1301 1302var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); 1303 1304module.exports = getBuiltIn('document', 'documentElement'); 1305 1306 1307/***/ }), 1308
vendor: 1,023 bytes, lines 1309-1331
1309/***/ "./node_modules/core-js/internals/ie8-dom-define.js": 1310/*!**********************************************************!*\ 1311 !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! 1312 \**********************************************************/ 1313/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1314 1315"use strict"; 1316 1317var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 1318var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1319var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); 1320 1321// Thanks to IE8 for its funny defineProperty 1322module.exports = !DESCRIPTORS && !fails(function () { 1323 // eslint-disable-next-line es/no-object-defineproperty -- required for testing 1324 return Object.defineProperty(createElement('div'), 'a', { 1325 get: function () { return 7; } 1326 }).a !== 7; 1327}); 1328 1329 1330/***/ }), 1331
vendor: 1,168 bytes, lines 1332-1358
1332/***/ "./node_modules/core-js/internals/indexed-object.js": 1333/*!**********************************************************!*\ 1334 !*** ./node_modules/core-js/internals/indexed-object.js ***! 1335 \**********************************************************/ 1336/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1337 1338"use strict"; 1339 1340var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1341var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1342var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 1343 1344var $Object = Object; 1345var split = uncurryThis(''.split); 1346 1347// fallback for non-array-like ES3 and non-enumerable old V8 strings 1348module.exports = fails(function () { 1349 // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 1350 // eslint-disable-next-line no-prototype-builtins -- safe 1351 return !$Object('z').propertyIsEnumerable(0); 1352}) ? function (it) { 1353 return classof(it) === 'String' ? split(it, '') : $Object(it); 1354} : $Object; 1355 1356 1357/***/ }), 1358
vendor: 1,030 bytes, lines 1359-1384
1359/***/ "./node_modules/core-js/internals/inspect-source.js": 1360/*!**********************************************************!*\ 1361 !*** ./node_modules/core-js/internals/inspect-source.js ***! 1362 \**********************************************************/ 1363/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1364 1365"use strict"; 1366 1367var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1368var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1369var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); 1370 1371var functionToString = uncurryThis(Function.toString); 1372 1373// this helper broken in `[email protected]`, so we can't use `shared` helper 1374if (!isCallable(store.inspectSource)) { 1375 store.inspectSource = function (it) { 1376 return functionToString(it); 1377 }; 1378} 1379 1380module.exports = store.inspectSource; 1381 1382 1383/***/ }), 1384
vendor: 3,016 bytes, lines 1385-1466
1385/***/ "./node_modules/core-js/internals/internal-state.js": 1386/*!**********************************************************!*\ 1387 !*** ./node_modules/core-js/internals/internal-state.js ***! 1388 \**********************************************************/ 1389/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1390 1391"use strict"; 1392 1393var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js/internals/weak-map-basic-detection.js"); 1394var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 1395var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 1396var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); 1397var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 1398var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); 1399var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); 1400var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); 1401 1402var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; 1403var TypeError = globalThis.TypeError; 1404var WeakMap = globalThis.WeakMap; 1405var set, get, has; 1406 1407var enforce = function (it) { 1408 return has(it) ? get(it) : set(it, {}); 1409}; 1410 1411var getterFor = function (TYPE) { 1412 return function (it) { 1413 var state; 1414 if (!isObject(it) || (state = get(it)).type !== TYPE) { 1415 throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); 1416 } return state; 1417 }; 1418}; 1419 1420if (NATIVE_WEAK_MAP || shared.state) { 1421 var store = shared.state || (shared.state = new WeakMap()); 1422 /* eslint-disable no-self-assign -- prototype methods protection */ 1423 store.get = store.get; 1424 store.has = store.has; 1425 store.set = store.set; 1426 /* eslint-enable no-self-assign -- prototype methods protection */ 1427 set = function (it, metadata) { 1428 if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); 1429 metadata.facade = it; 1430 store.set(it, metadata); 1431 return metadata; 1432 }; 1433 get = function (it) { 1434 return store.get(it) || {}; 1435 }; 1436 has = function (it) { 1437 return store.has(it); 1438 }; 1439} else { 1440 var STATE = sharedKey('state'); 1441 hiddenKeys[STATE] = true; 1442 set = function (it, metadata) { 1443 if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); 1444 metadata.facade = it; 1445 createNonEnumerableProperty(it, STATE, metadata); 1446 return metadata; 1447 }; 1448 get = function (it) { 1449 return hasOwn(it, STATE) ? it[STATE] : {}; 1450 }; 1451 has = function (it) { 1452 return hasOwn(it, STATE); 1453 }; 1454} 1455 1456module.exports = { 1457 set: set, 1458 get: get, 1459 has: has, 1460 enforce: enforce, 1461 getterFor: getterFor 1462}; 1463 1464 1465/***/ }), 1466
vendor: 682 bytes, lines 1467-1486
1467/***/ "./node_modules/core-js/internals/is-array.js": 1468/*!****************************************************!*\ 1469 !*** ./node_modules/core-js/internals/is-array.js ***! 1470 \****************************************************/ 1471/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1472 1473"use strict"; 1474 1475var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 1476 1477// `IsArray` abstract operation 1478// https://tc39.es/ecma262/#sec-isarray 1479// eslint-disable-next-line es/no-array-isarray -- safe 1480module.exports = Array.isArray || function isArray(argument) { 1481 return classof(argument) === 'Array'; 1482}; 1483 1484 1485/***/ }), 1486
vendor: 813 bytes, lines 1487-1509
1487/***/ "./node_modules/core-js/internals/is-callable.js": 1488/*!*******************************************************!*\ 1489 !*** ./node_modules/core-js/internals/is-callable.js ***! 1490 \*******************************************************/ 1491/***/ (function(module) { 1492 1493"use strict"; 1494 1495// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot 1496var documentAll = typeof document == 'object' && document.all; 1497 1498// `IsCallable` abstract operation 1499// https://tc39.es/ecma262/#sec-iscallable 1500// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing 1501module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { 1502 return typeof argument == 'function' || argument === documentAll; 1503} : function (argument) { 1504 return typeof argument == 'function'; 1505}; 1506 1507 1508/***/ }), 1509
vendor: 2,541 bytes, lines 1510-1572
1510/***/ "./node_modules/core-js/internals/is-constructor.js": 1511/*!**********************************************************!*\ 1512 !*** ./node_modules/core-js/internals/is-constructor.js ***! 1513 \**********************************************************/ 1514/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1515 1516"use strict"; 1517 1518var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1519var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1520var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1521var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); 1522var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); 1523var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); 1524 1525var noop = function () { /* empty */ }; 1526var construct = getBuiltIn('Reflect', 'construct'); 1527var constructorRegExp = /^\s*(?:class|function)\b/; 1528var exec = uncurryThis(constructorRegExp.exec); 1529var INCORRECT_TO_STRING = !constructorRegExp.test(noop); 1530 1531var isConstructorModern = function isConstructor(argument) { 1532 if (!isCallable(argument)) return false; 1533 try { 1534 construct(noop, [], argument); 1535 return true; 1536 } catch (error) { 1537 return false; 1538 } 1539}; 1540 1541var isConstructorLegacy = function isConstructor(argument) { 1542 if (!isCallable(argument)) return false; 1543 switch (classof(argument)) { 1544 case 'AsyncFunction': 1545 case 'GeneratorFunction': 1546 case 'AsyncGeneratorFunction': return false; 1547 } 1548 try { 1549 // we can't check .prototype since constructors produced by .bind haven't it 1550 // `Function#toString` throws on some built-it function in some legacy engines 1551 // (for example, `DOMQuad` and similar in FF41-) 1552 return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); 1553 } catch (error) { 1554 return true; 1555 } 1556}; 1557 1558isConstructorLegacy.sham = true; 1559 1560// `IsConstructor` abstract operation 1561// https://tc39.es/ecma262/#sec-isconstructor 1562module.exports = !construct || fails(function () { 1563 var called; 1564 return isConstructorModern(isConstructorModern.call) 1565 || !isConstructorModern(Object) 1566 || !isConstructorModern(function () { called = true; }) 1567 || called; 1568}) ? isConstructorLegacy : isConstructorModern; 1569 1570 1571/***/ }), 1572
vendor: 1,081 bytes, lines 1573-1606
1573/***/ "./node_modules/core-js/internals/is-forced.js": 1574/*!*****************************************************!*\ 1575 !*** ./node_modules/core-js/internals/is-forced.js ***! 1576 \*****************************************************/ 1577/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1578 1579"use strict"; 1580 1581var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1582var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1583 1584var replacement = /#|\.prototype\./; 1585 1586var isForced = function (feature, detection) { 1587 var value = data[normalize(feature)]; 1588 return value === POLYFILL ? true 1589 : value === NATIVE ? false 1590 : isCallable(detection) ? fails(detection) 1591 : !!detection; 1592}; 1593 1594var normalize = isForced.normalize = function (string) { 1595 return String(string).replace(replacement, '.').toLowerCase(); 1596}; 1597 1598var data = isForced.data = {}; 1599var NATIVE = isForced.NATIVE = 'N'; 1600var POLYFILL = isForced.POLYFILL = 'P'; 1601 1602module.exports = isForced; 1603 1604 1605/***/ }), 1606
vendor: 539 bytes, lines 1607-1623
1607/***/ "./node_modules/core-js/internals/is-null-or-undefined.js": 1608/*!****************************************************************!*\ 1609 !*** ./node_modules/core-js/internals/is-null-or-undefined.js ***! 1610 \****************************************************************/ 1611/***/ (function(module) { 1612 1613"use strict"; 1614 1615// we can't use just `it == null` since of `document.all` special case 1616// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec 1617module.exports = function (it) { 1618 return it === null || it === undefined; 1619}; 1620 1621 1622/***/ }), 1623
vendor: 554 bytes, lines 1624-1640
1624/***/ "./node_modules/core-js/internals/is-object.js": 1625/*!*****************************************************!*\ 1626 !*** ./node_modules/core-js/internals/is-object.js ***! 1627 \*****************************************************/ 1628/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1629 1630"use strict"; 1631 1632var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1633 1634module.exports = function (it) { 1635 return typeof it == 'object' ? it !== null : isCallable(it); 1636}; 1637 1638 1639/***/ }), 1640
vendor: 302 bytes, lines 1641-1653
1641/***/ "./node_modules/core-js/internals/is-pure.js": 1642/*!***************************************************!*\ 1643 !*** ./node_modules/core-js/internals/is-pure.js ***! 1644 \***************************************************/ 1645/***/ (function(module) { 1646 1647"use strict"; 1648 1649module.exports = false; 1650 1651 1652/***/ }), 1653
vendor: 975 bytes, lines 1654-1677
1654/***/ "./node_modules/core-js/internals/is-regexp.js": 1655/*!*****************************************************!*\ 1656 !*** ./node_modules/core-js/internals/is-regexp.js ***! 1657 \*****************************************************/ 1658/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1659 1660"use strict"; 1661 1662var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 1663var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 1664var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 1665 1666var MATCH = wellKnownSymbol('match'); 1667 1668// `IsRegExp` abstract operation 1669// https://tc39.es/ecma262/#sec-isregexp 1670module.exports = function (it) { 1671 var isRegExp; 1672 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp'); 1673}; 1674 1675 1676/***/ }), 1677
vendor: 1,112 bytes, lines 1678-1702
1678/***/ "./node_modules/core-js/internals/is-symbol.js": 1679/*!*****************************************************!*\ 1680 !*** ./node_modules/core-js/internals/is-symbol.js ***! 1681 \*****************************************************/ 1682/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1683 1684"use strict"; 1685 1686var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); 1687var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1688var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js"); 1689var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); 1690 1691var $Object = Object; 1692 1693module.exports = USE_SYMBOL_AS_UID ? function (it) { 1694 return typeof it == 'symbol'; 1695} : function (it) { 1696 var $Symbol = getBuiltIn('Symbol'); 1697 return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); 1698}; 1699 1700 1701/***/ }), 1702
vendor: 653 bytes, lines 1703-1721
1703/***/ "./node_modules/core-js/internals/length-of-array-like.js": 1704/*!****************************************************************!*\ 1705 !*** ./node_modules/core-js/internals/length-of-array-like.js ***! 1706 \****************************************************************/ 1707/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1708 1709"use strict"; 1710 1711var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); 1712 1713// `LengthOfArrayLike` abstract operation 1714// https://tc39.es/ecma262/#sec-lengthofarraylike 1715module.exports = function (obj) { 1716 return toLength(obj.length); 1717}; 1718 1719 1720/***/ }), 1721
vendor: 3,500 bytes, lines 1722-1787
1722/***/ "./node_modules/core-js/internals/make-built-in.js": 1723/*!*********************************************************!*\ 1724 !*** ./node_modules/core-js/internals/make-built-in.js ***! 1725 \*********************************************************/ 1726/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1727 1728"use strict"; 1729 1730var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 1731var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 1732var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 1733var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 1734var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 1735var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE); 1736var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js"); 1737var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); 1738 1739var enforceInternalState = InternalStateModule.enforce; 1740var getInternalState = InternalStateModule.get; 1741var $String = String; 1742// eslint-disable-next-line es/no-object-defineproperty -- safe 1743var defineProperty = Object.defineProperty; 1744var stringSlice = uncurryThis(''.slice); 1745var replace = uncurryThis(''.replace); 1746var join = uncurryThis([].join); 1747 1748var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { 1749 return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; 1750}); 1751 1752var TEMPLATE = String(String).split('String'); 1753 1754var makeBuiltIn = module.exports = function (value, name, options) { 1755 if (stringSlice($String(name), 0, 7) === 'Symbol(') { 1756 name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; 1757 } 1758 if (options && options.getter) name = 'get ' + name; 1759 if (options && options.setter) name = 'set ' + name; 1760 if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { 1761 if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); 1762 else value.name = name; 1763 } 1764 if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { 1765 defineProperty(value, 'length', { value: options.arity }); 1766 } 1767 try { 1768 if (options && hasOwn(options, 'constructor') && options.constructor) { 1769 if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); 1770 // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable 1771 } else if (value.prototype) value.prototype = undefined; 1772 } catch (error) { /* empty */ } 1773 var state = enforceInternalState(value); 1774 if (!hasOwn(state, 'source')) { 1775 state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); 1776 } return value; 1777}; 1778 1779// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative 1780// eslint-disable-next-line no-extend-native -- required 1781Function.prototype.toString = makeBuiltIn(function toString() { 1782 return isCallable(this) && getInternalState(this).source || inspectSource(this); 1783}, 'toString'); 1784 1785 1786/***/ }), 1787
vendor: 560 bytes, lines 1788-1809
1788/***/ "./node_modules/core-js/internals/math-trunc.js": 1789/*!******************************************************!*\ 1790 !*** ./node_modules/core-js/internals/math-trunc.js ***! 1791 \******************************************************/ 1792/***/ (function(module) { 1793 1794"use strict"; 1795 1796var ceil = Math.ceil; 1797var floor = Math.floor; 1798 1799// `Math.trunc` method 1800// https://tc39.es/ecma262/#sec-math.trunc 1801// eslint-disable-next-line es/no-math-trunc -- safe 1802module.exports = Math.trunc || function trunc(x) { 1803 var n = +x; 1804 return (n > 0 ? floor : ceil)(n); 1805}; 1806 1807 1808/***/ }), 1809
vendor: 638 bytes, lines 1810-1830
1810/***/ "./node_modules/core-js/internals/not-a-regexp.js": 1811/*!********************************************************!*\ 1812 !*** ./node_modules/core-js/internals/not-a-regexp.js ***! 1813 \********************************************************/ 1814/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1815 1816"use strict"; 1817 1818var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); 1819 1820var $TypeError = TypeError; 1821 1822module.exports = function (it) { 1823 if (isRegExp(it)) { 1824 throw new $TypeError("The method doesn't accept regular expressions"); 1825 } return it; 1826}; 1827 1828 1829/***/ }), 1830
vendor: 3,958 bytes, lines 1831-1926
1831/***/ "./node_modules/core-js/internals/object-create.js": 1832/*!*********************************************************!*\ 1833 !*** ./node_modules/core-js/internals/object-create.js ***! 1834 \*********************************************************/ 1835/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 1836 1837"use strict"; 1838 1839/* global ActiveXObject -- old IE, WSH */ 1840var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 1841var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); 1842var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); 1843var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); 1844var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); 1845var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); 1846var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); 1847 1848var GT = '>'; 1849var LT = '<'; 1850var PROTOTYPE = 'prototype'; 1851var SCRIPT = 'script'; 1852var IE_PROTO = sharedKey('IE_PROTO'); 1853 1854var EmptyConstructor = function () { /* empty */ }; 1855 1856var scriptTag = function (content) { 1857 return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; 1858}; 1859 1860// Create object with fake `null` prototype: use ActiveX Object with cleared prototype 1861var NullProtoObjectViaActiveX = function (activeXDocument) { 1862 activeXDocument.write(scriptTag('')); 1863 activeXDocument.close(); 1864 var temp = activeXDocument.parentWindow.Object; 1865 // eslint-disable-next-line no-useless-assignment -- avoid memory leak 1866 activeXDocument = null; 1867 return temp; 1868}; 1869 1870// Create object with fake `null` prototype: use iframe Object with cleared prototype 1871var NullProtoObjectViaIFrame = function () { 1872 // Thrash, waste and sodomy: IE GC bug 1873 var iframe = documentCreateElement('iframe'); 1874 var JS = 'java' + SCRIPT + ':'; 1875 var iframeDocument; 1876 iframe.style.display = 'none'; 1877 html.appendChild(iframe); 1878 // https://github.com/zloirock/core-js/issues/475 1879 iframe.src = String(JS); 1880 iframeDocument = iframe.contentWindow.document; 1881 iframeDocument.open(); 1882 iframeDocument.write(scriptTag('document.F=Object')); 1883 iframeDocument.close(); 1884 return iframeDocument.F; 1885}; 1886 1887// Check for document.domain and active x support 1888// No need to use active x approach when document.domain is not set 1889// see https://github.com/es-shims/es5-shim/issues/150 1890// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 1891// avoid IE GC bug 1892var activeXDocument; 1893var NullProtoObject = function () { 1894 try { 1895 activeXDocument = new ActiveXObject('htmlfile'); 1896 } catch (error) { /* ignore */ } 1897 NullProtoObject = typeof document != 'undefined' 1898 ? document.domain && activeXDocument 1899 ? NullProtoObjectViaActiveX(activeXDocument) // old IE 1900 : NullProtoObjectViaIFrame() 1901 : NullProtoObjectViaActiveX(activeXDocument); // WSH 1902 var length = enumBugKeys.length; 1903 while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; 1904 return NullProtoObject(); 1905}; 1906 1907hiddenKeys[IE_PROTO] = true; 1908 1909// `Object.create` method 1910// https://tc39.es/ecma262/#sec-object.create 1911// eslint-disable-next-line es/no-object-create -- safe 1912module.exports = Object.create || function create(O, Properties) { 1913 var result; 1914 if (O !== null) { 1915 EmptyConstructor[PROTOTYPE] = anObject(O); 1916 result = new EmptyConstructor(); 1917 EmptyConstructor[PROTOTYPE] = null; 1918 // add "__proto__" for Object.getPrototypeOf polyfill 1919 result[IE_PROTO] = O; 1920 } else result = NullProtoObject(); 1921 return Properties === undefined ? result : definePropertiesModule.f(result, Properties); 1922}; 1923 1924 1925/***/ }), 1926
vendor: 1,733 bytes, lines 1927-1958
1927/***/ "./node_modules/core-js/internals/object-define-properties.js": 1928/*!********************************************************************!*\ 1929 !*** ./node_modules/core-js/internals/object-define-properties.js ***! 1930 \********************************************************************/ 1931/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 1932 1933"use strict"; 1934 1935var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 1936var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); 1937var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); 1938var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 1939var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); 1940var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); 1941 1942// `Object.defineProperties` method 1943// https://tc39.es/ecma262/#sec-object.defineproperties 1944// eslint-disable-next-line es/no-object-defineproperties -- safe 1945exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { 1946 anObject(O); 1947 var props = toIndexedObject(Properties); 1948 var keys = objectKeys(Properties); 1949 var length = keys.length; 1950 var index = 0; 1951 var key; 1952 while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); 1953 return O; 1954}; 1955 1956 1957/***/ }), 1958
vendor: 2,618 bytes, lines 1959-2013
1959/***/ "./node_modules/core-js/internals/object-define-property.js": 1960/*!******************************************************************!*\ 1961 !*** ./node_modules/core-js/internals/object-define-property.js ***! 1962 \******************************************************************/ 1963/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 1964 1965"use strict"; 1966 1967var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 1968var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); 1969var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js"); 1970var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 1971var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); 1972 1973var $TypeError = TypeError; 1974// eslint-disable-next-line es/no-object-defineproperty -- safe 1975var $defineProperty = Object.defineProperty; 1976// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 1977var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 1978var ENUMERABLE = 'enumerable'; 1979var CONFIGURABLE = 'configurable'; 1980var WRITABLE = 'writable'; 1981 1982// `Object.defineProperty` method 1983// https://tc39.es/ecma262/#sec-object.defineproperty 1984exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { 1985 anObject(O); 1986 P = toPropertyKey(P); 1987 anObject(Attributes); 1988 if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { 1989 var current = $getOwnPropertyDescriptor(O, P); 1990 if (current && current[WRITABLE]) { 1991 O[P] = Attributes.value; 1992 Attributes = { 1993 configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], 1994 enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], 1995 writable: false 1996 }; 1997 } 1998 } return $defineProperty(O, P, Attributes); 1999} : $defineProperty : function defineProperty(O, P, Attributes) { 2000 anObject(O); 2001 P = toPropertyKey(P); 2002 anObject(Attributes); 2003 if (IE8_DOM_DEFINE) try { 2004 return $defineProperty(O, P, Attributes); 2005 } catch (error) { /* empty */ } 2006 if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); 2007 if ('value' in Attributes) O[P] = Attributes.value; 2008 return O; 2009}; 2010 2011 2012/***/ }), 2013
vendor: 2,146 bytes, lines 2014-2047
2014/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": 2015/*!******************************************************************************!*\ 2016 !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! 2017 \******************************************************************************/ 2018/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 2019 2020"use strict"; 2021 2022var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 2023var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 2024var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); 2025var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); 2026var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); 2027var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js"); 2028var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 2029var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); 2030 2031// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 2032var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 2033 2034// `Object.getOwnPropertyDescriptor` method 2035// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor 2036exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { 2037 O = toIndexedObject(O); 2038 P = toPropertyKey(P); 2039 if (IE8_DOM_DEFINE) try { 2040 return $getOwnPropertyDescriptor(O, P); 2041 } catch (error) { /* empty */ } 2042 if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); 2043}; 2044 2045 2046/***/ }), 2047
vendor: 1,038 bytes, lines 2048-2070
2048/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": 2049/*!*************************************************************************!*\ 2050 !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! 2051 \*************************************************************************/ 2052/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 2053 2054"use strict"; 2055 2056var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); 2057var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); 2058 2059var hiddenKeys = enumBugKeys.concat('length', 'prototype'); 2060 2061// `Object.getOwnPropertyNames` method 2062// https://tc39.es/ecma262/#sec-object.getownpropertynames 2063// eslint-disable-next-line es/no-object-getownpropertynames -- safe 2064exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { 2065 return internalObjectKeys(O, hiddenKeys); 2066}; 2067 2068 2069/***/ }), 2070
vendor: 513 bytes, lines 2071-2084
2071/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": 2072/*!***************************************************************************!*\ 2073 !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! 2074 \***************************************************************************/ 2075/***/ (function(__unused_webpack_module, exports) { 2076 2077"use strict"; 2078 2079// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe 2080exports.f = Object.getOwnPropertySymbols; 2081 2082 2083/***/ }), 2084
vendor: 576 bytes, lines 2085-2099
2085/***/ "./node_modules/core-js/internals/object-is-prototype-of.js": 2086/*!******************************************************************!*\ 2087 !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***! 2088 \******************************************************************/ 2089/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2090 2091"use strict"; 2092 2093var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2094 2095module.exports = uncurryThis({}.isPrototypeOf); 2096 2097 2098/***/ }), 2099
vendor: 1,446 bytes, lines 2100-2131
2100/***/ "./node_modules/core-js/internals/object-keys-internal.js": 2101/*!****************************************************************!*\ 2102 !*** ./node_modules/core-js/internals/object-keys-internal.js ***! 2103 \****************************************************************/ 2104/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2105 2106"use strict"; 2107 2108var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2109var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 2110var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); 2111var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf); 2112var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); 2113 2114var push = uncurryThis([].push); 2115 2116module.exports = function (object, names) { 2117 var O = toIndexedObject(object); 2118 var i = 0; 2119 var result = []; 2120 var key; 2121 for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); 2122 // Don't enum bug & hidden keys 2123 while (names.length > i) if (hasOwn(O, key = names[i++])) { 2124 ~indexOf(result, key) || push(result, key); 2125 } 2126 return result; 2127}; 2128 2129 2130/***/ }), 2131
vendor: 836 bytes, lines 2132-2152
2132/***/ "./node_modules/core-js/internals/object-keys.js": 2133/*!*******************************************************!*\ 2134 !*** ./node_modules/core-js/internals/object-keys.js ***! 2135 \*******************************************************/ 2136/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2137 2138"use strict"; 2139 2140var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); 2141var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); 2142 2143// `Object.keys` method 2144// https://tc39.es/ecma262/#sec-object.keys 2145// eslint-disable-next-line es/no-object-keys -- safe 2146module.exports = Object.keys || function keys(O) { 2147 return internalObjectKeys(O, enumBugKeys); 2148}; 2149 2150 2151/***/ }), 2152
vendor: 1,020 bytes, lines 2153-2177
2153/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": 2154/*!*************************************************************************!*\ 2155 !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! 2156 \*************************************************************************/ 2157/***/ (function(__unused_webpack_module, exports) { 2158 2159"use strict"; 2160 2161var $propertyIsEnumerable = {}.propertyIsEnumerable; 2162// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 2163var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 2164 2165// Nashorn ~ JDK8 bug 2166var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); 2167 2168// `Object.prototype.propertyIsEnumerable` method implementation 2169// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable 2170exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { 2171 var descriptor = getOwnPropertyDescriptor(this, V); 2172 return !!descriptor && descriptor.enumerable; 2173} : $propertyIsEnumerable; 2174 2175 2176/***/ }), 2177
vendor: 858 bytes, lines 2178-2197
2178/***/ "./node_modules/core-js/internals/object-to-string.js": 2179/*!************************************************************!*\ 2180 !*** ./node_modules/core-js/internals/object-to-string.js ***! 2181 \************************************************************/ 2182/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2183 2184"use strict"; 2185 2186var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); 2187var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); 2188 2189// `Object.prototype.toString` method implementation 2190// https://tc39.es/ecma262/#sec-object.prototype.tostring 2191module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { 2192 return '[object ' + classof(this) + ']'; 2193}; 2194 2195 2196/***/ }), 2197
vendor: 1,291 bytes, lines 2198-2224
2198/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js": 2199/*!*****************************************************************!*\ 2200 !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***! 2201 \*****************************************************************/ 2202/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2203 2204"use strict"; 2205 2206var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 2207var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 2208var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 2209 2210var $TypeError = TypeError; 2211 2212// `OrdinaryToPrimitive` abstract operation 2213// https://tc39.es/ecma262/#sec-ordinarytoprimitive 2214module.exports = function (input, pref) { 2215 var fn, val; 2216 if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; 2217 if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; 2218 if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; 2219 throw new $TypeError("Can't convert object to primitive value"); 2220}; 2221 2222 2223/***/ }), 2224
vendor: 1,431 bytes, lines 2225-2250
2225/***/ "./node_modules/core-js/internals/own-keys.js": 2226/*!****************************************************!*\ 2227 !*** ./node_modules/core-js/internals/own-keys.js ***! 2228 \****************************************************/ 2229/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2230 2231"use strict"; 2232 2233var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); 2234var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2235var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); 2236var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); 2237var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 2238 2239var concat = uncurryThis([].concat); 2240 2241// all object keys, includes non-enumerable and symbols 2242module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { 2243 var keys = getOwnPropertyNamesModule.f(anObject(it)); 2244 var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; 2245 return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; 2246}; 2247 2248 2249/***/ }), 2250
vendor: 1,398 bytes, lines 2251-2282
2251/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js": 2252/*!****************************************************************!*\ 2253 !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***! 2254 \****************************************************************/ 2255/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2256 2257"use strict"; 2258 2259var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 2260var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 2261var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 2262var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); 2263var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); 2264 2265var $TypeError = TypeError; 2266 2267// `RegExpExec` abstract operation 2268// https://tc39.es/ecma262/#sec-regexpexec 2269module.exports = function (R, S) { 2270 var exec = R.exec; 2271 if (isCallable(exec)) { 2272 var result = call(exec, R, S); 2273 if (result !== null) anObject(result); 2274 return result; 2275 } 2276 if (classof(R) === 'RegExp') return call(regexpExec, R, S); 2277 throw new $TypeError('RegExp#exec called on incompatible receiver'); 2278}; 2279 2280 2281/***/ }), 2282
vendor: 5,081 bytes, lines 2283-2410
2283/***/ "./node_modules/core-js/internals/regexp-exec.js": 2284/*!*******************************************************!*\ 2285 !*** ./node_modules/core-js/internals/regexp-exec.js ***! 2286 \*******************************************************/ 2287/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2288 2289"use strict"; 2290 2291/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ 2292/* eslint-disable regexp/no-useless-quantifier -- testing */ 2293var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 2294var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2295var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); 2296var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); 2297var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js"); 2298var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); 2299var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); 2300var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get); 2301var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js"); 2302var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js"); 2303 2304var nativeReplace = shared('native-string-replace', String.prototype.replace); 2305var nativeExec = RegExp.prototype.exec; 2306var patchedExec = nativeExec; 2307var charAt = uncurryThis(''.charAt); 2308var indexOf = uncurryThis(''.indexOf); 2309var replace = uncurryThis(''.replace); 2310var stringSlice = uncurryThis(''.slice); 2311 2312var UPDATES_LAST_INDEX_WRONG = (function () { 2313 var re1 = /a/; 2314 var re2 = /b*/g; 2315 call(nativeExec, re1, 'a'); 2316 call(nativeExec, re2, 'a'); 2317 return re1.lastIndex !== 0 || re2.lastIndex !== 0; 2318})(); 2319 2320var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; 2321 2322// nonparticipating capturing group, copied from es5-shim's String#split patch. 2323var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; 2324 2325var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; 2326 2327if (PATCH) { 2328 patchedExec = function exec(string) { 2329 var re = this; 2330 var state = getInternalState(re); 2331 var str = toString(string); 2332 var raw = state.raw; 2333 var result, reCopy, lastIndex, match, i, object, group; 2334 2335 if (raw) { 2336 raw.lastIndex = re.lastIndex; 2337 result = call(patchedExec, raw, str); 2338 re.lastIndex = raw.lastIndex; 2339 return result; 2340 } 2341 2342 var groups = state.groups; 2343 var sticky = UNSUPPORTED_Y && re.sticky; 2344 var flags = call(regexpFlags, re); 2345 var source = re.source; 2346 var charsAdded = 0; 2347 var strCopy = str; 2348 2349 if (sticky) { 2350 flags = replace(flags, 'y', ''); 2351 if (indexOf(flags, 'g') === -1) { 2352 flags += 'g'; 2353 } 2354 2355 strCopy = stringSlice(str, re.lastIndex); 2356 // Support anchored sticky behavior. 2357 if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { 2358 source = '(?: ' + source + ')'; 2359 strCopy = ' ' + strCopy; 2360 charsAdded++; 2361 } 2362 // ^(? + rx + ) is needed, in combination with some str slicing, to 2363 // simulate the 'y' flag. 2364 reCopy = new RegExp('^(?:' + source + ')', flags); 2365 } 2366 2367 if (NPCG_INCLUDED) { 2368 reCopy = new RegExp('^' + source + '$(?!\\s)', flags); 2369 } 2370 if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; 2371 2372 match = call(nativeExec, sticky ? reCopy : re, strCopy); 2373 2374 if (sticky) { 2375 if (match) { 2376 match.input = stringSlice(match.input, charsAdded); 2377 match[0] = stringSlice(match[0], charsAdded); 2378 match.index = re.lastIndex; 2379 re.lastIndex += match[0].length; 2380 } else re.lastIndex = 0; 2381 } else if (UPDATES_LAST_INDEX_WRONG && match) { 2382 re.lastIndex = re.global ? match.index + match[0].length : lastIndex; 2383 } 2384 if (NPCG_INCLUDED && match && match.length > 1) { 2385 // Fix browsers whose `exec` methods don't consistently return `undefined` 2386 // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ 2387 call(nativeReplace, match[0], reCopy, function () { 2388 for (i = 1; i < arguments.length - 2; i++) { 2389 if (arguments[i] === undefined) match[i] = undefined; 2390 } 2391 }); 2392 } 2393 2394 if (match && groups) { 2395 match.groups = object = create(null); 2396 for (i = 0; i < groups.length; i++) { 2397 group = groups[i]; 2398 object[group[0]] = match[group[1]]; 2399 } 2400 } 2401 2402 return match; 2403 }; 2404} 2405 2406module.exports = patchedExec; 2407 2408 2409/***/ }), 2410
vendor: 958 bytes, lines 2411-2439
2411/***/ "./node_modules/core-js/internals/regexp-flags.js": 2412/*!********************************************************!*\ 2413 !*** ./node_modules/core-js/internals/regexp-flags.js ***! 2414 \********************************************************/ 2415/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2416 2417"use strict"; 2418 2419var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 2420 2421// `RegExp.prototype.flags` getter implementation 2422// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags 2423module.exports = function () { 2424 var that = anObject(this); 2425 var result = ''; 2426 if (that.hasIndices) result += 'd'; 2427 if (that.global) result += 'g'; 2428 if (that.ignoreCase) result += 'i'; 2429 if (that.multiline) result += 'm'; 2430 if (that.dotAll) result += 's'; 2431 if (that.unicode) result += 'u'; 2432 if (that.unicodeSets) result += 'v'; 2433 if (that.sticky) result += 'y'; 2434 return result; 2435}; 2436 2437 2438/***/ }), 2439
vendor: 1,356 bytes, lines 2440-2481
2440/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js": 2441/*!*****************************************************************!*\ 2442 !*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***! 2443 \*****************************************************************/ 2444/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2445 2446"use strict"; 2447 2448var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 2449var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2450 2451// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError 2452var $RegExp = globalThis.RegExp; 2453 2454var UNSUPPORTED_Y = fails(function () { 2455 var re = $RegExp('a', 'y'); 2456 re.lastIndex = 2; 2457 return re.exec('abcd') !== null; 2458}); 2459 2460// UC Browser bug 2461// https://github.com/zloirock/core-js/issues/1008 2462var MISSED_STICKY = UNSUPPORTED_Y || fails(function () { 2463 return !$RegExp('a', 'y').sticky; 2464}); 2465 2466var BROKEN_CARET = UNSUPPORTED_Y || fails(function () { 2467 // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 2468 var re = $RegExp('^r', 'gy'); 2469 re.lastIndex = 2; 2470 return re.exec('str') !== null; 2471}); 2472 2473module.exports = { 2474 BROKEN_CARET: BROKEN_CARET, 2475 MISSED_STICKY: MISSED_STICKY, 2476 UNSUPPORTED_Y: UNSUPPORTED_Y 2477}; 2478 2479 2480/***/ }), 2481
vendor: 891 bytes, lines 2482-2503
2482/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js": 2483/*!**********************************************************************!*\ 2484 !*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***! 2485 \**********************************************************************/ 2486/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2487 2488"use strict"; 2489 2490var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 2491var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2492 2493// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError 2494var $RegExp = globalThis.RegExp; 2495 2496module.exports = fails(function () { 2497 var re = $RegExp('.', 's'); 2498 return !(re.dotAll && re.test('\n') && re.flags === 's'); 2499}); 2500 2501 2502/***/ }), 2503
vendor: 914 bytes, lines 2504-2526
2504/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js": 2505/*!******************************************************************!*\ 2506 !*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***! 2507 \******************************************************************/ 2508/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2509 2510"use strict"; 2511 2512var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 2513var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2514 2515// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError 2516var $RegExp = globalThis.RegExp; 2517 2518module.exports = fails(function () { 2519 var re = $RegExp('(?<a>b)', 'g'); 2520 return re.exec('b').groups.a !== 'b' || 2521 'b'.replace(re, '$<a>c') !== 'bc'; 2522}); 2523 2524 2525/***/ }), 2526
vendor: 801 bytes, lines 2527-2548
2527/***/ "./node_modules/core-js/internals/require-object-coercible.js": 2528/*!********************************************************************!*\ 2529 !*** ./node_modules/core-js/internals/require-object-coercible.js ***! 2530 \********************************************************************/ 2531/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2532 2533"use strict"; 2534 2535var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); 2536 2537var $TypeError = TypeError; 2538 2539// `RequireObjectCoercible` abstract operation 2540// https://tc39.es/ecma262/#sec-requireobjectcoercible 2541module.exports = function (it) { 2542 if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); 2543 return it; 2544}; 2545 2546 2547/***/ }), 2548
vendor: 654 bytes, lines 2549-2568
2549/***/ "./node_modules/core-js/internals/shared-key.js": 2550/*!******************************************************!*\ 2551 !*** ./node_modules/core-js/internals/shared-key.js ***! 2552 \******************************************************/ 2553/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2554 2555"use strict"; 2556 2557var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); 2558var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); 2559 2560var keys = shared('keys'); 2561 2562module.exports = function (key) { 2563 return keys[key] || (keys[key] = uid(key)); 2564}; 2565 2566 2567/***/ }), 2568
vendor: 1,140 bytes, lines 2569-2594
2569/***/ "./node_modules/core-js/internals/shared-store.js": 2570/*!********************************************************!*\ 2571 !*** ./node_modules/core-js/internals/shared-store.js ***! 2572 \********************************************************/ 2573/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2574 2575"use strict"; 2576 2577var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); 2578var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2579var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js"); 2580 2581var SHARED = '__core-js_shared__'; 2582var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {}); 2583 2584(store.versions || (store.versions = [])).push({ 2585 version: '3.41.0', 2586 mode: IS_PURE ? 'pure' : 'global', 2587 copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)', 2588 license: 'https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE', 2589 source: 'https://github.com/zloirock/core-js' 2590}); 2591 2592 2593/***/ }), 2594
vendor: 535 bytes, lines 2595-2611
2595/***/ "./node_modules/core-js/internals/shared.js": 2596/*!**************************************************!*\ 2597 !*** ./node_modules/core-js/internals/shared.js ***! 2598 \**************************************************/ 2599/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2600 2601"use strict"; 2602 2603var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js"); 2604 2605module.exports = function (key, value) { 2606 return store[key] || (store[key] = value || {}); 2607}; 2608 2609 2610/***/ }), 2611
vendor: 2,062 bytes, lines 2612-2659
2612/***/ "./node_modules/core-js/internals/string-multibyte.js": 2613/*!************************************************************!*\ 2614 !*** ./node_modules/core-js/internals/string-multibyte.js ***! 2615 \************************************************************/ 2616/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2617 2618"use strict"; 2619 2620var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2621var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); 2622var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); 2623var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); 2624 2625var charAt = uncurryThis(''.charAt); 2626var charCodeAt = uncurryThis(''.charCodeAt); 2627var stringSlice = uncurryThis(''.slice); 2628 2629var createMethod = function (CONVERT_TO_STRING) { 2630 return function ($this, pos) { 2631 var S = toString(requireObjectCoercible($this)); 2632 var position = toIntegerOrInfinity(pos); 2633 var size = S.length; 2634 var first, second; 2635 if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; 2636 first = charCodeAt(S, position); 2637 return first < 0xD800 || first > 0xDBFF || position + 1 === size 2638 || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF 2639 ? CONVERT_TO_STRING 2640 ? charAt(S, position) 2641 : first 2642 : CONVERT_TO_STRING 2643 ? stringSlice(S, position, position + 2) 2644 : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; 2645 }; 2646}; 2647 2648module.exports = { 2649 // `String.prototype.codePointAt` method 2650 // https://tc39.es/ecma262/#sec-string.prototype.codepointat 2651 codeAt: createMethod(false), 2652 // `String.prototype.at` method 2653 // https://github.com/mathiasbynens/String.prototype.at 2654 charAt: createMethod(true) 2655}; 2656 2657 2658/***/ }), 2659
vendor: 1,558 bytes, lines 2660-2689
2660/***/ "./node_modules/core-js/internals/symbol-constructor-detection.js": 2661/*!************************************************************************!*\ 2662 !*** ./node_modules/core-js/internals/symbol-constructor-detection.js ***! 2663 \************************************************************************/ 2664/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2665 2666"use strict"; 2667 2668/* eslint-disable es/no-symbol -- required for testing */ 2669var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js"); 2670var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 2671var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2672 2673var $String = globalThis.String; 2674 2675// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing 2676module.exports = !!Object.getOwnPropertySymbols && !fails(function () { 2677 var symbol = Symbol('symbol detection'); 2678 // Chrome 38 Symbol has incorrect toString conversion 2679 // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances 2680 // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, 2681 // of course, fail. 2682 return !$String(symbol) || !(Object(symbol) instanceof Symbol) || 2683 // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances 2684 !Symbol.sham && V8_VERSION && V8_VERSION < 41; 2685}); 2686 2687 2688/***/ }), 2689
vendor: 914 bytes, lines 2690-2713
2690/***/ "./node_modules/core-js/internals/to-absolute-index.js": 2691/*!*************************************************************!*\ 2692 !*** ./node_modules/core-js/internals/to-absolute-index.js ***! 2693 \*************************************************************/ 2694/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2695 2696"use strict"; 2697 2698var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); 2699 2700var max = Math.max; 2701var min = Math.min; 2702 2703// Helper for a popular repeating case of the spec: 2704// Let integer be ? ToInteger(index). 2705// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). 2706module.exports = function (index, length) { 2707 var integer = toIntegerOrInfinity(index); 2708 return integer < 0 ? max(integer + length, 0) : min(integer, length); 2709}; 2710 2711 2712/***/ }), 2713
vendor: 800 bytes, lines 2714-2732
2714/***/ "./node_modules/core-js/internals/to-indexed-object.js": 2715/*!*************************************************************!*\ 2716 !*** ./node_modules/core-js/internals/to-indexed-object.js ***! 2717 \*************************************************************/ 2718/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2719 2720"use strict"; 2721 2722// toObject with fallback for non-array-like ES3 strings 2723var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); 2724var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); 2725 2726module.exports = function (it) { 2727 return IndexedObject(requireObjectCoercible(it)); 2728}; 2729 2730 2731/***/ }), 2732
vendor: 787 bytes, lines 2733-2753
2733/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js": 2734/*!******************************************************************!*\ 2735 !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***! 2736 \******************************************************************/ 2737/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2738 2739"use strict"; 2740 2741var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js/internals/math-trunc.js"); 2742 2743// `ToIntegerOrInfinity` abstract operation 2744// https://tc39.es/ecma262/#sec-tointegerorinfinity 2745module.exports = function (argument) { 2746 var number = +argument; 2747 // eslint-disable-next-line no-self-compare -- NaN check 2748 return number !== number || number === 0 ? 0 : trunc(number); 2749}; 2750 2751 2752/***/ }), 2753
vendor: 752 bytes, lines 2754-2775
2754/***/ "./node_modules/core-js/internals/to-length.js": 2755/*!*****************************************************!*\ 2756 !*** ./node_modules/core-js/internals/to-length.js ***! 2757 \*****************************************************/ 2758/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2759 2760"use strict"; 2761 2762var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); 2763 2764var min = Math.min; 2765 2766// `ToLength` abstract operation 2767// https://tc39.es/ecma262/#sec-tolength 2768module.exports = function (argument) { 2769 var len = toIntegerOrInfinity(argument); 2770 return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 2771}; 2772 2773 2774/***/ }), 2775
vendor: 684 bytes, lines 2776-2796
2776/***/ "./node_modules/core-js/internals/to-object.js": 2777/*!*****************************************************!*\ 2778 !*** ./node_modules/core-js/internals/to-object.js ***! 2779 \*****************************************************/ 2780/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2781 2782"use strict"; 2783 2784var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); 2785 2786var $Object = Object; 2787 2788// `ToObject` abstract operation 2789// https://tc39.es/ecma262/#sec-toobject 2790module.exports = function (argument) { 2791 return $Object(requireObjectCoercible(argument)); 2792}; 2793 2794 2795/***/ }), 2796
vendor: 1,765 bytes, lines 2797-2833
2797/***/ "./node_modules/core-js/internals/to-primitive.js": 2798/*!********************************************************!*\ 2799 !*** ./node_modules/core-js/internals/to-primitive.js ***! 2800 \********************************************************/ 2801/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2802 2803"use strict"; 2804 2805var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 2806var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 2807var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); 2808var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); 2809var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js"); 2810var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 2811 2812var $TypeError = TypeError; 2813var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); 2814 2815// `ToPrimitive` abstract operation 2816// https://tc39.es/ecma262/#sec-toprimitive 2817module.exports = function (input, pref) { 2818 if (!isObject(input) || isSymbol(input)) return input; 2819 var exoticToPrim = getMethod(input, TO_PRIMITIVE); 2820 var result; 2821 if (exoticToPrim) { 2822 if (pref === undefined) pref = 'default'; 2823 result = call(exoticToPrim, input, pref); 2824 if (!isObject(result) || isSymbol(result)) return result; 2825 throw new $TypeError("Can't convert object to primitive value"); 2826 } 2827 if (pref === undefined) pref = 'number'; 2828 return ordinaryToPrimitive(input, pref); 2829}; 2830 2831 2832/***/ }), 2833
vendor: 809 bytes, lines 2834-2854
2834/***/ "./node_modules/core-js/internals/to-property-key.js": 2835/*!***********************************************************!*\ 2836 !*** ./node_modules/core-js/internals/to-property-key.js ***! 2837 \***********************************************************/ 2838/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2839 2840"use strict"; 2841 2842var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); 2843var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js"); 2844 2845// `ToPropertyKey` abstract operation 2846// https://tc39.es/ecma262/#sec-topropertykey 2847module.exports = function (argument) { 2848 var key = toPrimitive(argument, 'string'); 2849 return isSymbol(key) ? key : key + ''; 2850}; 2851 2852 2853/***/ }), 2854
vendor: 664 bytes, lines 2855-2874
2855/***/ "./node_modules/core-js/internals/to-string-tag-support.js": 2856/*!*****************************************************************!*\ 2857 !*** ./node_modules/core-js/internals/to-string-tag-support.js ***! 2858 \*****************************************************************/ 2859/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2860 2861"use strict"; 2862 2863var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 2864 2865var TO_STRING_TAG = wellKnownSymbol('toStringTag'); 2866var test = {}; 2867 2868test[TO_STRING_TAG] = 'z'; 2869 2870module.exports = String(test) === '[object z]'; 2871 2872 2873/***/ }), 2874
vendor: 641 bytes, lines 2875-2894
2875/***/ "./node_modules/core-js/internals/to-string.js": 2876/*!*****************************************************!*\ 2877 !*** ./node_modules/core-js/internals/to-string.js ***! 2878 \*****************************************************/ 2879/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2880 2881"use strict"; 2882 2883var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); 2884 2885var $String = String; 2886 2887module.exports = function (argument) { 2888 if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); 2889 return $String(argument); 2890}; 2891 2892 2893/***/ }), 2894
vendor: 450 bytes, lines 2895-2915
2895/***/ "./node_modules/core-js/internals/try-to-string.js": 2896/*!*********************************************************!*\ 2897 !*** ./node_modules/core-js/internals/try-to-string.js ***! 2898 \*********************************************************/ 2899/***/ (function(module) { 2900 2901"use strict"; 2902 2903var $String = String; 2904 2905module.exports = function (argument) { 2906 try { 2907 return $String(argument); 2908 } catch (error) { 2909 return 'Object'; 2910 } 2911}; 2912 2913 2914/***/ }), 2915
vendor: 664 bytes, lines 2916-2936
2916/***/ "./node_modules/core-js/internals/uid.js": 2917/*!***********************************************!*\ 2918 !*** ./node_modules/core-js/internals/uid.js ***! 2919 \***********************************************/ 2920/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2921 2922"use strict"; 2923 2924var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 2925 2926var id = 0; 2927var postfix = Math.random(); 2928var toString = uncurryThis(1.0.toString); 2929 2930module.exports = function (key) { 2931 return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); 2932}; 2933 2934 2935/***/ }), 2936
vendor: 672 bytes, lines 2937-2954
2937/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js": 2938/*!*************************************************************!*\ 2939 !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***! 2940 \*************************************************************/ 2941/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2942 2943"use strict"; 2944 2945/* eslint-disable es/no-symbol -- required for testing */ 2946var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); 2947 2948module.exports = NATIVE_SYMBOL && 2949 !Symbol.sham && 2950 typeof Symbol.iterator == 'symbol'; 2951 2952 2953/***/ }), 2954
vendor: 962 bytes, lines 2955-2978
2955/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js": 2956/*!*******************************************************************!*\ 2957 !*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***! 2958 \*******************************************************************/ 2959/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2960 2961"use strict"; 2962 2963var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); 2964var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 2965 2966// V8 ~ Chrome 36- 2967// https://bugs.chromium.org/p/v8/issues/detail?id=3334 2968module.exports = DESCRIPTORS && fails(function () { 2969 // eslint-disable-next-line es/no-object-defineproperty -- required for testing 2970 return Object.defineProperty(function () { /* empty */ }, 'prototype', { 2971 value: 42, 2972 writable: false 2973 }).prototype !== 42; 2974}); 2975 2976 2977/***/ }), 2978
vendor: 748 bytes, lines 2979-2996
2979/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js": 2980/*!********************************************************************!*\ 2981 !*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***! 2982 \********************************************************************/ 2983/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2984 2985"use strict"; 2986 2987var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 2988var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 2989 2990var WeakMap = globalThis.WeakMap; 2991 2992module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); 2993 2994 2995/***/ }), 2996
vendor: 1,572 bytes, lines 2997-3026
2997/***/ "./node_modules/core-js/internals/well-known-symbol.js": 2998/*!*************************************************************!*\ 2999 !*** ./node_modules/core-js/internals/well-known-symbol.js ***! 3000 \*************************************************************/ 3001/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 3002 3003"use strict"; 3004 3005var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 3006var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); 3007var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); 3008var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); 3009var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js"); 3010var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js"); 3011 3012var Symbol = globalThis.Symbol; 3013var WellKnownSymbolsStore = shared('wks'); 3014var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; 3015 3016module.exports = function (name) { 3017 if (!hasOwn(WellKnownSymbolsStore, name)) { 3018 WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) 3019 ? Symbol[name] 3020 : createWellKnownSymbol('Symbol.' + name); 3021 } return WellKnownSymbolsStore[name]; 3022}; 3023 3024 3025/***/ }), 3026
vendor: 1,324 bytes, lines 3027-3059
3027/***/ "./node_modules/core-js/modules/es.array.find.js": 3028/*!*******************************************************!*\ 3029 !*** ./node_modules/core-js/modules/es.array.find.js ***! 3030 \*******************************************************/ 3031/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3032 3033"use strict"; 3034 3035var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); 3036var $find = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find); 3037var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); 3038 3039var FIND = 'find'; 3040var SKIPS_HOLES = true; 3041 3042// Shouldn't skip holes 3043// eslint-disable-next-line es/no-array-prototype-find -- testing 3044if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); 3045 3046// `Array.prototype.find` method 3047// https://tc39.es/ecma262/#sec-array.prototype.find 3048$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { 3049 find: function find(callbackfn /* , that = undefined */) { 3050 return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); 3051 } 3052}); 3053 3054// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 3055addToUnscopables(FIND); 3056 3057 3058/***/ }), 3059
vendor: 1,423 bytes, lines 3060-3092
3060/***/ "./node_modules/core-js/modules/es.array.includes.js": 3061/*!***********************************************************!*\ 3062 !*** ./node_modules/core-js/modules/es.array.includes.js ***! 3063 \***********************************************************/ 3064/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3065 3066"use strict"; 3067 3068var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); 3069var $includes = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes); 3070var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 3071var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); 3072 3073// FF99+ bug 3074var BROKEN_ON_SPARSE = fails(function () { 3075 // eslint-disable-next-line es/no-array-prototype-includes -- detection 3076 return !Array(1).includes(); 3077}); 3078 3079// `Array.prototype.includes` method 3080// https://tc39.es/ecma262/#sec-array.prototype.includes 3081$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { 3082 includes: function includes(el /* , fromIndex = 0 */) { 3083 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); 3084 } 3085}); 3086 3087// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables 3088addToUnscopables('includes'); 3089 3090 3091/***/ }), 3092
vendor: 3,238 bytes, lines 3093-3152
3093/***/ "./node_modules/core-js/modules/es.array.slice.js": 3094/*!********************************************************!*\ 3095 !*** ./node_modules/core-js/modules/es.array.slice.js ***! 3096 \********************************************************/ 3097/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3098 3099"use strict"; 3100 3101var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); 3102var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); 3103var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js"); 3104var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); 3105var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); 3106var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js"); 3107var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); 3108var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); 3109var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 3110var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); 3111var nativeSlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); 3112 3113var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); 3114 3115var SPECIES = wellKnownSymbol('species'); 3116var $Array = Array; 3117var max = Math.max; 3118 3119// `Array.prototype.slice` method 3120// https://tc39.es/ecma262/#sec-array.prototype.slice 3121// fallback for not array-like ES3 strings and DOM objects 3122$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { 3123 slice: function slice(start, end) { 3124 var O = toIndexedObject(this); 3125 var length = lengthOfArrayLike(O); 3126 var k = toAbsoluteIndex(start, length); 3127 var fin = toAbsoluteIndex(end === undefined ? length : end, length); 3128 // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible 3129 var Constructor, result, n; 3130 if (isArray(O)) { 3131 Constructor = O.constructor; 3132 // cross-realm fallback 3133 if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { 3134 Constructor = undefined; 3135 } else if (isObject(Constructor)) { 3136 Constructor = Constructor[SPECIES]; 3137 if (Constructor === null) Constructor = undefined; 3138 } 3139 if (Constructor === $Array || Constructor === undefined) { 3140 return nativeSlice(O, k, fin); 3141 } 3142 } 3143 result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0)); 3144 for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); 3145 result.length = n; 3146 return result; 3147 } 3148}); 3149 3150 3151/***/ }), 3152
vendor: 999 bytes, lines 3153-3173
3153/***/ "./node_modules/core-js/modules/es.object.to-string.js": 3154/*!*************************************************************!*\ 3155 !*** ./node_modules/core-js/modules/es.object.to-string.js ***! 3156 \*************************************************************/ 3157/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3158 3159"use strict"; 3160 3161var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js"); 3162var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js"); 3163var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js"); 3164 3165// `Object.prototype.toString` method 3166// https://tc39.es/ecma262/#sec-object.prototype.tostring 3167if (!TO_STRING_TAG_SUPPORT) { 3168 defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); 3169} 3170 3171 3172/***/ }), 3173
vendor: 751 bytes, lines 3174-3193
3174/***/ "./node_modules/core-js/modules/es.regexp.exec.js": 3175/*!********************************************************!*\ 3176 !*** ./node_modules/core-js/modules/es.regexp.exec.js ***! 3177 \********************************************************/ 3178/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3179 3180"use strict"; 3181 3182var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); 3183var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); 3184 3185// `RegExp.prototype.exec` method 3186// https://tc39.es/ecma262/#sec-regexp.prototype.exec 3187$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { 3188 exec: exec 3189}); 3190 3191 3192/***/ }), 3193
vendor: 1,652 bytes, lines 3194-3225
3194/***/ "./node_modules/core-js/modules/es.string.includes.js": 3195/*!************************************************************!*\ 3196 !*** ./node_modules/core-js/modules/es.string.includes.js ***! 3197 \************************************************************/ 3198/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3199 3200"use strict"; 3201 3202var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); 3203var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 3204var notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js"); 3205var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); 3206var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); 3207var correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js"); 3208 3209var stringIndexOf = uncurryThis(''.indexOf); 3210 3211// `String.prototype.includes` method 3212// https://tc39.es/ecma262/#sec-string.prototype.includes 3213$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { 3214 includes: function includes(searchString /* , position = 0 */) { 3215 return !!~stringIndexOf( 3216 toString(requireObjectCoercible(this)), 3217 toString(notARegExp(searchString)), 3218 arguments.length > 1 ? arguments[1] : undefined 3219 ); 3220 } 3221}); 3222 3223 3224/***/ }), 3225
vendor: 7,253 bytes, lines 3226-3378
3226/***/ "./node_modules/core-js/modules/es.string.replace.js": 3227/*!***********************************************************!*\ 3228 !*** ./node_modules/core-js/modules/es.string.replace.js ***! 3229 \***********************************************************/ 3230/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3231 3232"use strict"; 3233 3234var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js"); 3235var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js"); 3236var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); 3237var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); 3238var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); 3239var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); 3240var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js"); 3241var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js"); 3242var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js"); 3243var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); 3244var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js"); 3245var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); 3246var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); 3247var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js"); 3248var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js"); 3249var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); 3250var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); 3251 3252var REPLACE = wellKnownSymbol('replace'); 3253var max = Math.max; 3254var min = Math.min; 3255var concat = uncurryThis([].concat); 3256var push = uncurryThis([].push); 3257var stringIndexOf = uncurryThis(''.indexOf); 3258var stringSlice = uncurryThis(''.slice); 3259 3260var maybeToString = function (it) { 3261 return it === undefined ? it : String(it); 3262}; 3263 3264// IE <= 11 replaces $0 with the whole match, as if it was $& 3265// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 3266var REPLACE_KEEPS_$0 = (function () { 3267 // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing 3268 return 'a'.replace(/./, '$0') === '$0'; 3269})(); 3270 3271// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string 3272var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { 3273 if (/./[REPLACE]) { 3274 return /./[REPLACE]('a', '$0') === ''; 3275 } 3276 return false; 3277})(); 3278 3279var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { 3280 var re = /./; 3281 re.exec = function () { 3282 var result = []; 3283 result.groups = { a: '7' }; 3284 return result; 3285 }; 3286 // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive 3287 return ''.replace(re, '$<a>') !== '7'; 3288}); 3289 3290// @@replace logic 3291fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { 3292 var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; 3293 3294 return [ 3295 // `String.prototype.replace` method 3296 // https://tc39.es/ecma262/#sec-string.prototype.replace 3297 function replace(searchValue, replaceValue) { 3298 var O = requireObjectCoercible(this); 3299 var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE); 3300 return replacer 3301 ? call(replacer, searchValue, O, replaceValue) 3302 : call(nativeReplace, toString(O), searchValue, replaceValue); 3303 }, 3304 // `RegExp.prototype[@@replace]` method 3305 // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace 3306 function (string, replaceValue) { 3307 var rx = anObject(this); 3308 var S = toString(string); 3309 3310 if ( 3311 typeof replaceValue == 'string' && 3312 stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && 3313 stringIndexOf(replaceValue, '$<') === -1 3314 ) { 3315 var res = maybeCallNative(nativeReplace, rx, S, replaceValue); 3316 if (res.done) return res.value; 3317 } 3318 3319 var functionalReplace = isCallable(replaceValue); 3320 if (!functionalReplace) replaceValue = toString(replaceValue); 3321 3322 var global = rx.global; 3323 var fullUnicode; 3324 if (global) { 3325 fullUnicode = rx.unicode; 3326 rx.lastIndex = 0; 3327 } 3328 3329 var results = []; 3330 var result; 3331 while (true) { 3332 result = regExpExec(rx, S); 3333 if (result === null) break; 3334 3335 push(results, result); 3336 if (!global) break; 3337 3338 var matchStr = toString(result[0]); 3339 if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); 3340 } 3341 3342 var accumulatedResult = ''; 3343 var nextSourcePosition = 0; 3344 for (var i = 0; i < results.length; i++) { 3345 result = results[i]; 3346 3347 var matched = toString(result[0]); 3348 var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); 3349 var captures = []; 3350 var replacement; 3351 // NOTE: This is equivalent to 3352 // captures = result.slice(1).map(maybeToString) 3353 // but for some reason `nativeSlice.call(result, 1, result.length)` (called in 3354 // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and 3355 // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. 3356 for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); 3357 var namedCaptures = result.groups; 3358 if (functionalReplace) { 3359 var replacerArgs = concat([matched], captures, position, S); 3360 if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); 3361 replacement = toString(apply(replaceValue, undefined, replacerArgs)); 3362 } else { 3363 replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); 3364 } 3365 if (position >= nextSourcePosition) { 3366 accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; 3367 nextSourcePosition = position + matched.length; 3368 } 3369 } 3370 3371 return accumulatedResult + stringSlice(S, nextSourcePosition); 3372 } 3373 ]; 3374}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); 3375 3376 3377/***/ }), 3378
vendor: 1,694 bytes, lines 3379-3412
3379/***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js": 3380/*!**********************************************************************!*\ 3381 !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***! 3382 \**********************************************************************/ 3383/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 3384 3385"use strict"; 3386 3387var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js"); 3388var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); 3389var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js"); 3390var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); 3391var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js"); 3392 3393var handlePrototype = function (CollectionPrototype) { 3394 // some Chrome versions have non-configurable methods on DOMTokenList 3395 if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { 3396 createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); 3397 } catch (error) { 3398 CollectionPrototype.forEach = forEach; 3399 } 3400}; 3401 3402for (var COLLECTION_NAME in DOMIterables) { 3403 if (DOMIterables[COLLECTION_NAME]) { 3404 handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype); 3405 } 3406} 3407 3408handlePrototype(DOMTokenListPrototype); 3409 3410 3411/***/ }), 3412
vendor: 14,097 bytes, lines 3413-3884
3413/***/ "./node_modules/headroom.js/dist/headroom.js": 3414/*!***************************************************!*\ 3415 !*** ./node_modules/headroom.js/dist/headroom.js ***! 3416 \***************************************************/ 3417/***/ (function(module, exports) { 3418 3419var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 3420 * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it 3421 * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js 3422 * License: MIT 3423 */ 3424 3425(function(root, factory) { 3426 'use strict'; 3427 3428 if (true) { 3429 // AMD. Register as an anonymous module. 3430 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 3431 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 3432 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 3433 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 3434 } 3435 else {} 3436}(this, function() { 3437 'use strict'; 3438 3439 /* exported features */ 3440 3441 var features = { 3442 bind : !!(function(){}.bind), 3443 classList : 'classList' in document.documentElement, 3444 rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame) 3445 }; 3446 window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; 3447 3448 /** 3449 * Handles debouncing of events via requestAnimationFrame 3450 * @see http://www.html5rocks.com/en/tutorials/speed/animations/ 3451 * @param {Function} callback The callback to handle whichever event 3452 */ 3453 function Debouncer (callback) { 3454 this.callback = callback; 3455 this.ticking = false; 3456 } 3457 Debouncer.prototype = { 3458 constructor : Debouncer, 3459 3460 /** 3461 * dispatches the event to the supplied callback 3462 * @private 3463 */ 3464 update : function() { 3465 this.callback && this.callback(); 3466 this.ticking = false; 3467 }, 3468 3469 /** 3470 * ensures events don't get stacked 3471 * @private 3472 */ 3473 requestTick : function() { 3474 if(!this.ticking) { 3475 requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this))); 3476 this.ticking = true; 3477 } 3478 }, 3479 3480 /** 3481 * Attach this as the event listeners 3482 */ 3483 handleEvent : function() { 3484 this.requestTick(); 3485 } 3486 }; 3487 /** 3488 * Check if object is part of the DOM 3489 * @constructor 3490 * @param {Object} obj element to check 3491 */ 3492 function isDOMElement(obj) { 3493 return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType); 3494 } 3495 3496 /** 3497 * Helper function for extending objects 3498 */ 3499 function extend (object /*, objectN ... */) { 3500 if(arguments.length <= 0) { 3501 throw new Error('Missing arguments in extend function'); 3502 } 3503 3504 var result = object || {}, 3505 key, 3506 i; 3507 3508 for (i = 1; i < arguments.length; i++) { 3509 var replacement = arguments[i] || {}; 3510 3511 for (key in replacement) { 3512 // Recurse into object except if the object is a DOM element 3513 if(typeof result[key] === 'object' && ! isDOMElement(result[key])) { 3514 result[key] = extend(result[key], replacement[key]); 3515 } 3516 else { 3517 result[key] = result[key] || replacement[key]; 3518 } 3519 } 3520 } 3521 3522 return result; 3523 } 3524 3525 /** 3526 * Helper function for normalizing tolerance option to object format 3527 */ 3528 function normalizeTolerance (t) { 3529 return t === Object(t) ? t : { down : t, up : t }; 3530 } 3531 3532 /** 3533 * UI enhancement for fixed headers. 3534 * Hides header when scrolling down 3535 * Shows header when scrolling up 3536 * @constructor 3537 * @param {DOMElement} elem the header element 3538 * @param {Object} options options for the widget 3539 */ 3540 function Headroom (elem, options) { 3541 options = extend(options, Headroom.options); 3542 3543 this.lastKnownScrollY = 0; 3544 this.elem = elem; 3545 this.tolerance = normalizeTolerance(options.tolerance); 3546 this.classes = options.classes; 3547 this.offset = options.offset; 3548 this.scroller = options.scroller; 3549 this.initialised = false; 3550 this.onPin = options.onPin; 3551 this.onUnpin = options.onUnpin; 3552 this.onTop = options.onTop; 3553 this.onNotTop = options.onNotTop; 3554 this.onBottom = options.onBottom; 3555 this.onNotBottom = options.onNotBottom; 3556 } 3557 Headroom.prototype = { 3558 constructor : Headroom, 3559 3560 /** 3561 * Initialises the widget 3562 */ 3563 init : function() { 3564 if(!Headroom.cutsTheMustard) { 3565 return; 3566 } 3567 3568 this.debouncer = new Debouncer(this.update.bind(this)); 3569 this.elem.classList.add(this.classes.initial); 3570 3571 // defer event registration to handle browser 3572 // potentially restoring previous scroll position 3573 setTimeout(this.attachEvent.bind(this), 100); 3574 3575 return this; 3576 }, 3577 3578 /** 3579 * Unattaches events and removes any classes that were added 3580 */ 3581 destroy : function() { 3582 var classes = this.classes; 3583 3584 this.initialised = false; 3585 3586 for (var key in classes) { 3587 if(classes.hasOwnProperty(key)) { 3588 this.elem.classList.remove(classes[key]); 3589 } 3590 } 3591 3592 this.scroller.removeEventListener('scroll', this.debouncer, false); 3593 }, 3594 3595 /** 3596 * Attaches the scroll event 3597 * @private 3598 */ 3599 attachEvent : function() { 3600 if(!this.initialised){ 3601 this.lastKnownScrollY = this.getScrollY(); 3602 this.initialised = true; 3603 this.scroller.addEventListener('scroll', this.debouncer, false); 3604 3605 this.debouncer.handleEvent(); 3606 } 3607 }, 3608 3609 /** 3610 * Unpins the header if it's currently pinned 3611 */ 3612 unpin : function() { 3613 var classList = this.elem.classList, 3614 classes = this.classes; 3615 3616 if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) { 3617 classList.add(classes.unpinned); 3618 classList.remove(classes.pinned); 3619 this.onUnpin && this.onUnpin.call(this); 3620 } 3621 }, 3622 3623 /** 3624 * Pins the header if it's currently unpinned 3625 */ 3626 pin : function() { 3627 var classList = this.elem.classList, 3628 classes = this.classes; 3629 3630 if(classList.contains(classes.unpinned)) { 3631 classList.remove(classes.unpinned); 3632 classList.add(classes.pinned); 3633 this.onPin && this.onPin.call(this); 3634 } 3635 }, 3636 3637 /** 3638 * Handles the top states 3639 */ 3640 top : function() { 3641 var classList = this.elem.classList, 3642 classes = this.classes; 3643 3644 if(!classList.contains(classes.top)) { 3645 classList.add(classes.top); 3646 classList.remove(classes.notTop); 3647 this.onTop && this.onTop.call(this); 3648 } 3649 }, 3650 3651 /** 3652 * Handles the not top state 3653 */ 3654 notTop : function() { 3655 var classList = this.elem.classList, 3656 classes = this.classes; 3657 3658 if(!classList.contains(classes.notTop)) { 3659 classList.add(classes.notTop); 3660 classList.remove(classes.top); 3661 this.onNotTop && this.onNotTop.call(this); 3662 } 3663 }, 3664 3665 bottom : function() { 3666 var classList = this.elem.classList, 3667 classes = this.classes; 3668 3669 if(!classList.contains(classes.bottom)) { 3670 classList.add(classes.bottom); 3671 classList.remove(classes.notBottom); 3672 this.onBottom && this.onBottom.call(this); 3673 } 3674 }, 3675 3676 /** 3677 * Handles the not top state 3678 */ 3679 notBottom : function() { 3680 var classList = this.elem.classList, 3681 classes = this.classes; 3682 3683 if(!classList.contains(classes.notBottom)) { 3684 classList.add(classes.notBottom); 3685 classList.remove(classes.bottom); 3686 this.onNotBottom && this.onNotBottom.call(this); 3687 } 3688 }, 3689 3690 /** 3691 * Gets the Y scroll position 3692 * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY 3693 * @return {Number} pixels the page has scrolled along the Y-axis 3694 */ 3695 getScrollY : function() { 3696 return (this.scroller.pageYOffset !== undefined) 3697 ? this.scroller.pageYOffset 3698 : (this.scroller.scrollTop !== undefined) 3699 ? this.scroller.scrollTop 3700 : (document.documentElement || document.body.parentNode || document.body).scrollTop; 3701 }, 3702 3703 /** 3704 * Gets the height of the viewport 3705 * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript 3706 * @return {int} the height of the viewport in pixels 3707 */ 3708 getViewportHeight : function () { 3709 return window.innerHeight 3710 || document.documentElement.clientHeight 3711 || document.body.clientHeight; 3712 }, 3713 3714 /** 3715 * Gets the physical height of the DOM element 3716 * @param {Object} elm the element to calculate the physical height of which 3717 * @return {int} the physical height of the element in pixels 3718 */ 3719 getElementPhysicalHeight : function (elm) { 3720 return Math.max( 3721 elm.offsetHeight, 3722 elm.clientHeight 3723 ); 3724 }, 3725 3726 /** 3727 * Gets the physical height of the scroller element 3728 * @return {int} the physical height of the scroller element in pixels 3729 */ 3730 getScrollerPhysicalHeight : function () { 3731 return (this.scroller === window || this.scroller === document.body) 3732 ? this.getViewportHeight() 3733 : this.getElementPhysicalHeight(this.scroller); 3734 }, 3735 3736 /** 3737 * Gets the height of the document 3738 * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/ 3739 * @return {int} the height of the document in pixels 3740 */ 3741 getDocumentHeight : function () { 3742 var body = document.body, 3743 documentElement = document.documentElement; 3744 3745 return Math.max( 3746 body.scrollHeight, documentElement.scrollHeight, 3747 body.offsetHeight, documentElement.offsetHeight, 3748 body.clientHeight, documentElement.clientHeight 3749 ); 3750 }, 3751 3752 /** 3753 * Gets the height of the DOM element 3754 * @param {Object} elm the element to calculate the height of which 3755 * @return {int} the height of the element in pixels 3756 */ 3757 getElementHeight : function (elm) { 3758 return Math.max( 3759 elm.scrollHeight, 3760 elm.offsetHeight, 3761 elm.clientHeight 3762 ); 3763 }, 3764 3765 /** 3766 * Gets the height of the scroller element 3767 * @return {int} the height of the scroller element in pixels 3768 */ 3769 getScrollerHeight : function () { 3770 return (this.scroller === window || this.scroller === document.body) 3771 ? this.getDocumentHeight() 3772 : this.getElementHeight(this.scroller); 3773 }, 3774 3775 /** 3776 * determines if the scroll position is outside of document boundaries 3777 * @param {int} currentScrollY the current y scroll position 3778 * @return {bool} true if out of bounds, false otherwise 3779 */ 3780 isOutOfBounds : function (currentScrollY) { 3781 var pastTop = currentScrollY < 0, 3782 pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight(); 3783 3784 return pastTop || pastBottom; 3785 }, 3786 3787 /** 3788 * determines if the tolerance has been exceeded 3789 * @param {int} currentScrollY the current scroll y position 3790 * @return {bool} true if tolerance exceeded, false otherwise 3791 */ 3792 toleranceExceeded : function (currentScrollY, direction) { 3793 return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction]; 3794 }, 3795 3796 /** 3797 * determine if it is appropriate to unpin 3798 * @param {int} currentScrollY the current y scroll position 3799 * @param {bool} toleranceExceeded has the tolerance been exceeded? 3800 * @return {bool} true if should unpin, false otherwise 3801 */ 3802 shouldUnpin : function (currentScrollY, toleranceExceeded) { 3803 var scrollingDown = currentScrollY > this.lastKnownScrollY, 3804 pastOffset = currentScrollY >= this.offset; 3805 3806 return scrollingDown && pastOffset && toleranceExceeded; 3807 }, 3808 3809 /** 3810 * determine if it is appropriate to pin 3811 * @param {int} currentScrollY the current y scroll position 3812 * @param {bool} toleranceExceeded has the tolerance been exceeded? 3813 * @return {bool} true if should pin, false otherwise 3814 */ 3815 shouldPin : function (currentScrollY, toleranceExceeded) { 3816 var scrollingUp = currentScrollY < this.lastKnownScrollY, 3817 pastOffset = currentScrollY <= this.offset; 3818 3819 return (scrollingUp && toleranceExceeded) || pastOffset; 3820 }, 3821 3822 /** 3823 * Handles updating the state of the widget 3824 */ 3825 update : function() { 3826 var currentScrollY = this.getScrollY(), 3827 scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up', 3828 toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection); 3829 3830 if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX 3831 return; 3832 } 3833 3834 if (currentScrollY <= this.offset ) { 3835 this.top(); 3836 } else { 3837 this.notTop(); 3838 } 3839 3840 if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) { 3841 this.bottom(); 3842 } 3843 else { 3844 this.notBottom(); 3845 } 3846 3847 if(this.shouldUnpin(currentScrollY, toleranceExceeded)) { 3848 this.unpin(); 3849 } 3850 else if(this.shouldPin(currentScrollY, toleranceExceeded)) { 3851 this.pin(); 3852 } 3853 3854 this.lastKnownScrollY = currentScrollY; 3855 } 3856 }; 3857 /** 3858 * Default options 3859 * @type {Object} 3860 */ 3861 Headroom.options = { 3862 tolerance : { 3863 up : 0, 3864 down : 0 3865 }, 3866 offset : 0, 3867 scroller: window, 3868 classes : { 3869 pinned : 'headroom--pinned', 3870 unpinned : 'headroom--unpinned', 3871 top : 'headroom--top', 3872 notTop : 'headroom--not-top', 3873 bottom : 'headroom--bottom', 3874 notBottom : 'headroom--not-bottom', 3875 initial : 'headroom' 3876 } 3877 }; 3878 Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList; 3879 3880 return Headroom; 3881})); 3882 3883/***/ }), 3884
vendor: 5,508 bytes, lines 3885-4033
3885/***/ "./node_modules/jquery-inview/jquery.inview.js": 3886/*!*****************************************************!*\ 3887 !*** ./node_modules/jquery-inview/jquery.inview.js ***! 3888 \*****************************************************/ 3889/***/ (function(module, exports, __webpack_require__) { 3890 3891var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** 3892 * author Christopher Blum 3893 * - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/ 3894 * - forked from http://github.com/zuk/jquery.inview/ 3895 */ 3896(function (factory) { 3897 if (true) { 3898 // AMD 3899 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 3900 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 3901 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 3902 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 3903 } else {} 3904}(function ($) { 3905 3906 var inviewObjects = [], viewportSize, viewportOffset, 3907 d = document, w = window, documentElement = d.documentElement, timer; 3908 3909 $.event.special.inview = { 3910 add: function(data) { 3911 inviewObjects.push({ data: data, $element: $(this), element: this }); 3912 // Use setInterval in order to also make sure this captures elements within 3913 // "overflow:scroll" elements or elements that appeared in the dom tree due to 3914 // dom manipulation and reflow 3915 // old: $(window).scroll(checkInView); 3916 // 3917 // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays 3918 // intervals while the user scrolls. Therefore the inview event might fire a bit late there 3919 // 3920 // Don't waste cycles with an interval until we get at least one element that 3921 // has bound to the inview event. 3922 if (!timer && inviewObjects.length) { 3923 timer = setInterval(checkInView, 250); 3924 } 3925 }, 3926 3927 remove: function(data) { 3928 for (var i=0; i<inviewObjects.length; i++) { 3929 var inviewObject = inviewObjects[i]; 3930 if (inviewObject.element === this && inviewObject.data.guid === data.guid) { 3931 inviewObjects.splice(i, 1); 3932 break; 3933 } 3934 } 3935 3936 // Clear interval when we no longer have any elements listening 3937 if (!inviewObjects.length) { 3938 clearInterval(timer); 3939 timer = null; 3940 } 3941 } 3942 }; 3943 3944 function getViewportSize() { 3945 var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth }; 3946 3947 // if this is correct then return it. iPad has compat Mode, so will 3948 // go into check clientHeight/clientWidth (which has the wrong value). 3949 if (!size.height) { 3950 mode = d.compatMode; 3951 if (mode || !$.support.boxModel) { // IE, Gecko 3952 domObject = mode === 'CSS1Compat' ? 3953 documentElement : // Standards 3954 d.body; // Quirks 3955 size = { 3956 height: domObject.clientHeight, 3957 width: domObject.clientWidth 3958 }; 3959 } 3960 } 3961 3962 return size; 3963 } 3964 3965 function getViewportOffset() { 3966 return { 3967 top: w.pageYOffset || documentElement.scrollTop || d.body.scrollTop, 3968 left: w.pageXOffset || documentElement.scrollLeft || d.body.scrollLeft 3969 }; 3970 } 3971 3972 function checkInView() { 3973 if (!inviewObjects.length) { 3974 return; 3975 } 3976 3977 var i = 0, $elements = $.map(inviewObjects, function(inviewObject) { 3978 var selector = inviewObject.data.selector, 3979 $element = inviewObject.$element; 3980 return selector ? $element.find(selector) : $element; 3981 }); 3982 3983 viewportSize = viewportSize || getViewportSize(); 3984 viewportOffset = viewportOffset || getViewportOffset(); 3985 3986 for (; i<inviewObjects.length; i++) { 3987 // Ignore elements that are not in the DOM tree 3988 if (!$.contains(documentElement, $elements[i][0])) { 3989 continue; 3990 } 3991 3992 var $element = $($elements[i]), 3993 elementSize = { height: $element[0].offsetHeight, width: $element[0].offsetWidth }, 3994 elementOffset = $element.offset(), 3995 inView = $element.data('inview'); 3996 3997 // Don't ask me why because I haven't figured out yet: 3998 // viewportOffset and viewportSize are sometimes suddenly null in Firefox 5. 3999 // Even though it sounds weird: 4000 // It seems that the execution of this function is interferred by the onresize/onscroll event 4001 // where viewportOffset and viewportSize are unset 4002 if (!viewportOffset || !viewportSize) { 4003 return; 4004 } 4005 4006 if (elementOffset.top + elementSize.height > viewportOffset.top && 4007 elementOffset.top < viewportOffset.top + viewportSize.height && 4008 elementOffset.left + elementSize.width > viewportOffset.left && 4009 elementOffset.left < viewportOffset.left + viewportSize.width) { 4010 if (!inView) { 4011 $element.data('inview', true).trigger('inview', [true]); 4012 } 4013 } else if (inView) { 4014 $element.data('inview', false).trigger('inview', [false]); 4015 } 4016 } 4017 } 4018 4019 $(w).bind("scroll resize scrollstop", function() { 4020 viewportSize = viewportOffset = null; 4021 }); 4022 4023 // IE < 9 scrolls to focused elements without firing the "scroll" event 4024 if (!documentElement.addEventListener && documentElement.attachEvent) { 4025 documentElement.attachEvent("onfocusin", function() { 4026 viewportOffset = null; 4027 }); 4028 } 4029})); 4030 4031 4032/***/ }), 4033
vendor: 285,755 bytes, lines 4034-14760
4034/***/ "./node_modules/jquery/dist/jquery.js": 4035/*!********************************************!*\ 4036 !*** ./node_modules/jquery/dist/jquery.js ***! 4037 \********************************************/ 4038/***/ (function(module, exports) { 4039 4040var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 4041 * jQuery JavaScript Library v3.7.1 4042 * https://jquery.com/ 4043 * 4044 * Copyright OpenJS Foundation and other contributors 4045 * Released under the MIT license 4046 * https://jquery.org/license 4047 * 4048 * Date: 2023-08-28T13:37Z 4049 */ 4050( function( global, factory ) { 4051 4052 "use strict"; 4053 4054 if ( true && typeof module.exports === "object" ) { 4055 4056 // For CommonJS and CommonJS-like environments where a proper `window` 4057 // is present, execute the factory and get jQuery. 4058 // For environments that do not have a `window` with a `document` 4059 // (such as Node.js), expose a factory as module.exports. 4060 // This accentuates the need for the creation of a real `window`. 4061 // e.g. var jQuery = require("jquery")(window); 4062 // See ticket trac-14549 for more info. 4063 module.exports = global.document ? 4064 factory( global, true ) : 4065 function( w ) { 4066 if ( !w.document ) { 4067 throw new Error( "jQuery requires a window with a document" ); 4068 } 4069 return factory( w ); 4070 }; 4071 } else { 4072 factory( global ); 4073 } 4074 4075// Pass this if window is not defined yet 4076} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 4077 4078// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 4079// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode 4080// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common 4081// enough that all such attempts are guarded in a try block. 4082"use strict"; 4083 4084var arr = []; 4085 4086var getProto = Object.getPrototypeOf; 4087 4088var slice = arr.slice; 4089 4090var flat = arr.flat ? function( array ) { 4091 return arr.flat.call( array ); 4092} : function( array ) { 4093 return arr.concat.apply( [], array ); 4094}; 4095 4096 4097var push = arr.push; 4098 4099var indexOf = arr.indexOf; 4100 4101var class2type = {}; 4102 4103var toString = class2type.toString; 4104 4105var hasOwn = class2type.hasOwnProperty; 4106 4107var fnToString = hasOwn.toString; 4108 4109var ObjectFunctionString = fnToString.call( Object ); 4110 4111var support = {}; 4112 4113var isFunction = function isFunction( obj ) { 4114 4115 // Support: Chrome <=57, Firefox <=52 4116 // In some browsers, typeof returns "function" for HTML <object> elements 4117 // (i.e., `typeof document.createElement( "object" ) === "function"`). 4118 // We don't want to classify *any* DOM node as a function. 4119 // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 4120 // Plus for old WebKit, typeof returns "function" for HTML collections 4121 // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) 4122 return typeof obj === "function" && typeof obj.nodeType !== "number" && 4123 typeof obj.item !== "function"; 4124 }; 4125 4126 4127var isWindow = function isWindow( obj ) { 4128 return obj != null && obj === obj.window; 4129 }; 4130 4131 4132var document = window.document; 4133 4134 4135 4136 var preservedScriptAttributes = { 4137 type: true, 4138 src: true, 4139 nonce: true, 4140 noModule: true 4141 }; 4142 4143 function DOMEval( code, node, doc ) { 4144 doc = doc || document; 4145 4146 var i, val, 4147 script = doc.createElement( "script" ); 4148 4149 script.text = code; 4150 if ( node ) { 4151 for ( i in preservedScriptAttributes ) { 4152 4153 // Support: Firefox 64+, Edge 18+ 4154 // Some browsers don't support the "nonce" property on scripts. 4155 // On the other hand, just using `getAttribute` is not enough as 4156 // the `nonce` attribute is reset to an empty string whenever it 4157 // becomes browsing-context connected. 4158 // See https://github.com/whatwg/html/issues/2369 4159 // See https://html.spec.whatwg.org/#nonce-attributes 4160 // The `node.getAttribute` check was added for the sake of 4161 // `jQuery.globalEval` so that it can fake a nonce-containing node 4162 // via an object. 4163 val = node[ i ] || node.getAttribute && node.getAttribute( i ); 4164 if ( val ) { 4165 script.setAttribute( i, val ); 4166 } 4167 } 4168 } 4169 doc.head.appendChild( script ).parentNode.removeChild( script ); 4170 } 4171 4172 4173function toType( obj ) { 4174 if ( obj == null ) { 4175 return obj + ""; 4176 } 4177 4178 // Support: Android <=2.3 only (functionish RegExp) 4179 return typeof obj === "object" || typeof obj === "function" ? 4180 class2type[ toString.call( obj ) ] || "object" : 4181 typeof obj; 4182} 4183/* global Symbol */ 4184// Defining this global in .eslintrc.json would create a danger of using the global 4185// unguarded in another place, it seems safer to define global only for this module 4186 4187 4188 4189var version = "3.7.1", 4190 4191 rhtmlSuffix = /HTML$/i, 4192 4193 // Define a local copy of jQuery 4194 jQuery = function( selector, context ) { 4195 4196 // The jQuery object is actually just the init constructor 'enhanced' 4197 // Need init if jQuery is called (just allow error to be thrown if not included) 4198 return new jQuery.fn.init( selector, context ); 4199 }; 4200 4201jQuery.fn = jQuery.prototype = { 4202 4203 // The current version of jQuery being used 4204 jquery: version, 4205 4206 constructor: jQuery, 4207 4208 // The default length of a jQuery object is 0 4209 length: 0, 4210 4211 toArray: function() { 4212 return slice.call( this ); 4213 }, 4214 4215 // Get the Nth element in the matched element set OR 4216 // Get the whole matched element set as a clean array 4217 get: function( num ) { 4218 4219 // Return all the elements in a clean array 4220 if ( num == null ) { 4221 return slice.call( this ); 4222 } 4223 4224 // Return just the one element from the set 4225 return num < 0 ? this[ num + this.length ] : this[ num ]; 4226 }, 4227 4228 // Take an array of elements and push it onto the stack 4229 // (returning the new matched element set) 4230 pushStack: function( elems ) { 4231 4232 // Build a new jQuery matched element set 4233 var ret = jQuery.merge( this.constructor(), elems ); 4234 4235 // Add the old object onto the stack (as a reference) 4236 ret.prevObject = this; 4237 4238 // Return the newly-formed element set 4239 return ret; 4240 }, 4241 4242 // Execute a callback for every element in the matched set. 4243 each: function( callback ) { 4244 return jQuery.each( this, callback ); 4245 }, 4246 4247 map: function( callback ) { 4248 return this.pushStack( jQuery.map( this, function( elem, i ) { 4249 return callback.call( elem, i, elem ); 4250 } ) ); 4251 }, 4252 4253 slice: function() { 4254 return this.pushStack( slice.apply( this, arguments ) ); 4255 }, 4256 4257 first: function() { 4258 return this.eq( 0 ); 4259 }, 4260 4261 last: function() { 4262 return this.eq( -1 ); 4263 }, 4264 4265 even: function() { 4266 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 4267 return ( i + 1 ) % 2; 4268 } ) ); 4269 }, 4270 4271 odd: function() { 4272 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 4273 return i % 2; 4274 } ) ); 4275 }, 4276 4277 eq: function( i ) { 4278 var len = this.length, 4279 j = +i + ( i < 0 ? len : 0 ); 4280 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); 4281 }, 4282 4283 end: function() { 4284 return this.prevObject || this.constructor(); 4285 }, 4286 4287 // For internal use only. 4288 // Behaves like an Array's method, not like a jQuery method. 4289 push: push, 4290 sort: arr.sort, 4291 splice: arr.splice 4292}; 4293 4294jQuery.extend = jQuery.fn.extend = function() { 4295 var options, name, src, copy, copyIsArray, clone, 4296 target = arguments[ 0 ] || {}, 4297 i = 1, 4298 length = arguments.length, 4299 deep = false; 4300 4301 // Handle a deep copy situation 4302 if ( typeof target === "boolean" ) { 4303 deep = target; 4304 4305 // Skip the boolean and the target 4306 target = arguments[ i ] || {}; 4307 i++; 4308 } 4309 4310 // Handle case when target is a string or something (possible in deep copy) 4311 if ( typeof target !== "object" && !isFunction( target ) ) { 4312 target = {}; 4313 } 4314 4315 // Extend jQuery itself if only one argument is passed 4316 if ( i === length ) { 4317 target = this; 4318 i--; 4319 } 4320 4321 for ( ; i < length; i++ ) { 4322 4323 // Only deal with non-null/undefined values 4324 if ( ( options = arguments[ i ] ) != null ) { 4325 4326 // Extend the base object 4327 for ( name in options ) { 4328 copy = options[ name ]; 4329 4330 // Prevent Object.prototype pollution 4331 // Prevent never-ending loop 4332 if ( name === "__proto__" || target === copy ) { 4333 continue; 4334 } 4335 4336 // Recurse if we're merging plain objects or arrays 4337 if ( deep && copy && ( jQuery.isPlainObject( copy ) || 4338 ( copyIsArray = Array.isArray( copy ) ) ) ) { 4339 src = target[ name ]; 4340 4341 // Ensure proper type for the source value 4342 if ( copyIsArray && !Array.isArray( src ) ) { 4343 clone = []; 4344 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { 4345 clone = {}; 4346 } else { 4347 clone = src; 4348 } 4349 copyIsArray = false; 4350 4351 // Never move original objects, clone them 4352 target[ name ] = jQuery.extend( deep, clone, copy ); 4353 4354 // Don't bring in undefined values 4355 } else if ( copy !== undefined ) { 4356 target[ name ] = copy; 4357 } 4358 } 4359 } 4360 } 4361 4362 // Return the modified object 4363 return target; 4364}; 4365 4366jQuery.extend( { 4367 4368 // Unique for each copy of jQuery on the page 4369 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), 4370 4371 // Assume jQuery is ready without the ready module 4372 isReady: true, 4373 4374 error: function( msg ) { 4375 throw new Error( msg ); 4376 }, 4377 4378 noop: function() {}, 4379 4380 isPlainObject: function( obj ) { 4381 var proto, Ctor; 4382 4383 // Detect obvious negatives 4384 // Use toString instead of jQuery.type to catch host objects 4385 if ( !obj || toString.call( obj ) !== "[object Object]" ) { 4386 return false; 4387 } 4388 4389 proto = getProto( obj ); 4390 4391 // Objects with no prototype (e.g., `Object.create( null )`) are plain 4392 if ( !proto ) { 4393 return true; 4394 } 4395 4396 // Objects with prototype are plain iff they were constructed by a global Object function 4397 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; 4398 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; 4399 }, 4400 4401 isEmptyObject: function( obj ) { 4402 var name; 4403 4404 for ( name in obj ) { 4405 return false; 4406 } 4407 return true; 4408 }, 4409 4410 // Evaluates a script in a provided context; falls back to the global one 4411 // if not specified. 4412 globalEval: function( code, options, doc ) { 4413 DOMEval( code, { nonce: options && options.nonce }, doc ); 4414 }, 4415 4416 each: function( obj, callback ) { 4417 var length, i = 0; 4418 4419 if ( isArrayLike( obj ) ) { 4420 length = obj.length; 4421 for ( ; i < length; i++ ) { 4422 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 4423 break; 4424 } 4425 } 4426 } else { 4427 for ( i in obj ) { 4428 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 4429 break; 4430 } 4431 } 4432 } 4433 4434 return obj; 4435 }, 4436 4437 4438 // Retrieve the text value of an array of DOM nodes 4439 text: function( elem ) { 4440 var node, 4441 ret = "", 4442 i = 0, 4443 nodeType = elem.nodeType; 4444 4445 if ( !nodeType ) { 4446 4447 // If no nodeType, this is expected to be an array 4448 while ( ( node = elem[ i++ ] ) ) { 4449 4450 // Do not traverse comment nodes 4451 ret += jQuery.text( node ); 4452 } 4453 } 4454 if ( nodeType === 1 || nodeType === 11 ) { 4455 return elem.textContent; 4456 } 4457 if ( nodeType === 9 ) { 4458 return elem.documentElement.textContent; 4459 } 4460 if ( nodeType === 3 || nodeType === 4 ) { 4461 return elem.nodeValue; 4462 } 4463 4464 // Do not include comment or processing instruction nodes 4465 4466 return ret; 4467 }, 4468 4469 // results is for internal usage only 4470 makeArray: function( arr, results ) { 4471 var ret = results || []; 4472 4473 if ( arr != null ) { 4474 if ( isArrayLike( Object( arr ) ) ) { 4475 jQuery.merge( ret, 4476 typeof arr === "string" ? 4477 [ arr ] : arr 4478 ); 4479 } else { 4480 push.call( ret, arr ); 4481 } 4482 } 4483 4484 return ret; 4485 }, 4486 4487 inArray: function( elem, arr, i ) { 4488 return arr == null ? -1 : indexOf.call( arr, elem, i ); 4489 }, 4490 4491 isXMLDoc: function( elem ) { 4492 var namespace = elem && elem.namespaceURI, 4493 docElem = elem && ( elem.ownerDocument || elem ).documentElement; 4494 4495 // Assume HTML when documentElement doesn't yet exist, such as inside 4496 // document fragments. 4497 return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); 4498 }, 4499 4500 // Support: Android <=4.0 only, PhantomJS 1 only 4501 // push.apply(_, arraylike) throws on ancient WebKit 4502 merge: function( first, second ) { 4503 var len = +second.length, 4504 j = 0, 4505 i = first.length; 4506 4507 for ( ; j < len; j++ ) { 4508 first[ i++ ] = second[ j ]; 4509 } 4510 4511 first.length = i; 4512 4513 return first; 4514 }, 4515 4516 grep: function( elems, callback, invert ) { 4517 var callbackInverse, 4518 matches = [], 4519 i = 0, 4520 length = elems.length, 4521 callbackExpect = !invert; 4522 4523 // Go through the array, only saving the items 4524 // that pass the validator function 4525 for ( ; i < length; i++ ) { 4526 callbackInverse = !callback( elems[ i ], i ); 4527 if ( callbackInverse !== callbackExpect ) { 4528 matches.push( elems[ i ] ); 4529 } 4530 } 4531 4532 return matches; 4533 }, 4534 4535 // arg is for internal usage only 4536 map: function( elems, callback, arg ) { 4537 var length, value, 4538 i = 0, 4539 ret = []; 4540 4541 // Go through the array, translating each of the items to their new values 4542 if ( isArrayLike( elems ) ) { 4543 length = elems.length; 4544 for ( ; i < length; i++ ) { 4545 value = callback( elems[ i ], i, arg ); 4546 4547 if ( value != null ) { 4548 ret.push( value ); 4549 } 4550 } 4551 4552 // Go through every key on the object, 4553 } else { 4554 for ( i in elems ) { 4555 value = callback( elems[ i ], i, arg ); 4556 4557 if ( value != null ) { 4558 ret.push( value ); 4559 } 4560 } 4561 } 4562 4563 // Flatten any nested arrays 4564 return flat( ret ); 4565 }, 4566 4567 // A global GUID counter for objects 4568 guid: 1, 4569 4570 // jQuery.support is not used in Core but other projects attach their 4571 // properties to it so it needs to exist. 4572 support: support 4573} ); 4574 4575if ( typeof Symbol === "function" ) { 4576 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; 4577} 4578 4579// Populate the class2type map 4580jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), 4581 function( _i, name ) { 4582 class2type[ "[object " + name + "]" ] = name.toLowerCase(); 4583 } ); 4584 4585function isArrayLike( obj ) { 4586 4587 // Support: real iOS 8.2 only (not reproducible in simulator) 4588 // `in` check used to prevent JIT error (gh-2145) 4589 // hasOwn isn't used here due to false negatives 4590 // regarding Nodelist length in IE 4591 var length = !!obj && "length" in obj && obj.length, 4592 type = toType( obj ); 4593 4594 if ( isFunction( obj ) || isWindow( obj ) ) { 4595 return false; 4596 } 4597 4598 return type === "array" || length === 0 || 4599 typeof length === "number" && length > 0 && ( length - 1 ) in obj; 4600} 4601 4602 4603function nodeName( elem, name ) { 4604 4605 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 4606 4607} 4608var pop = arr.pop; 4609 4610 4611var sort = arr.sort; 4612 4613 4614var splice = arr.splice; 4615 4616 4617var whitespace = "[\\x20\\t\\r\\n\\f]"; 4618 4619 4620var rtrimCSS = new RegExp( 4621 "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", 4622 "g" 4623); 4624 4625 4626 4627 4628// Note: an element does not contain itself 4629jQuery.contains = function( a, b ) { 4630 var bup = b && b.parentNode; 4631 4632 return a === bup || !!( bup && bup.nodeType === 1 && ( 4633 4634 // Support: IE 9 - 11+ 4635 // IE doesn't have `contains` on SVG. 4636 a.contains ? 4637 a.contains( bup ) : 4638 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 4639 ) ); 4640}; 4641 4642 4643 4644 4645// CSS string/identifier serialization 4646// https://drafts.csswg.org/cssom/#common-serializing-idioms 4647var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; 4648 4649function fcssescape( ch, asCodePoint ) { 4650 if ( asCodePoint ) { 4651 4652 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER 4653 if ( ch === "\0" ) { 4654 return "\uFFFD"; 4655 } 4656 4657 // Control characters and (dependent upon position) numbers get escaped as code points 4658 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; 4659 } 4660 4661 // Other potentially-special ASCII characters get backslash-escaped 4662 return "\\" + ch; 4663} 4664 4665jQuery.escapeSelector = function( sel ) { 4666 return ( sel + "" ).replace( rcssescape, fcssescape ); 4667}; 4668 4669 4670 4671 4672var preferredDoc = document, 4673 pushNative = push; 4674 4675( function() { 4676 4677var i, 4678 Expr, 4679 outermostContext, 4680 sortInput, 4681 hasDuplicate, 4682 push = pushNative, 4683 4684 // Local document vars 4685 document, 4686 documentElement, 4687 documentIsHTML, 4688 rbuggyQSA, 4689 matches, 4690 4691 // Instance-specific data 4692 expando = jQuery.expando, 4693 dirruns = 0, 4694 done = 0, 4695 classCache = createCache(), 4696 tokenCache = createCache(), 4697 compilerCache = createCache(), 4698 nonnativeSelectorCache = createCache(), 4699 sortOrder = function( a, b ) { 4700 if ( a === b ) { 4701 hasDuplicate = true; 4702 } 4703 return 0; 4704 }, 4705 4706 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + 4707 "loop|multiple|open|readonly|required|scoped", 4708 4709 // Regular expressions 4710 4711 // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram 4712 identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + 4713 "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", 4714 4715 // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors 4716 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + 4717 4718 // Operator (capture 2) 4719 "*([*^$|!~]?=)" + whitespace + 4720 4721 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" 4722 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + 4723 whitespace + "*\\]", 4724 4725 pseudos = ":(" + identifier + ")(?:\\((" + 4726 4727 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: 4728 // 1. quoted (capture 3; capture 4 or capture 5) 4729 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + 4730 4731 // 2. simple (capture 6) 4732 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + 4733 4734 // 3. anything else (capture 2) 4735 ".*" + 4736 ")\\)|)", 4737 4738 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter 4739 rwhitespace = new RegExp( whitespace + "+", "g" ), 4740 4741 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), 4742 rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + 4743 whitespace + "*" ), 4744 rdescend = new RegExp( whitespace + "|>" ), 4745 4746 rpseudo = new RegExp( pseudos ), 4747 ridentifier = new RegExp( "^" + identifier + "$" ), 4748 4749 matchExpr = { 4750 ID: new RegExp( "^#(" + identifier + ")" ), 4751 CLASS: new RegExp( "^\\.(" + identifier + ")" ), 4752 TAG: new RegExp( "^(" + identifier + "|[*])" ), 4753 ATTR: new RegExp( "^" + attributes ), 4754 PSEUDO: new RegExp( "^" + pseudos ), 4755 CHILD: new RegExp( 4756 "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + 4757 whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + 4758 whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), 4759 bool: new RegExp( "^(?:" + booleans + ")$", "i" ), 4760 4761 // For use in libraries implementing .is() 4762 // We use this for POS matching in `select` 4763 needsContext: new RegExp( "^" + whitespace + 4764 "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + 4765 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) 4766 }, 4767 4768 rinputs = /^(?:input|select|textarea|button)$/i, 4769 rheader = /^h\d$/i, 4770 4771 // Easily-parseable/retrievable ID or TAG or CLASS selectors 4772 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, 4773 4774 rsibling = /[+~]/, 4775 4776 // CSS escapes 4777 // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters 4778 runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + 4779 "?|\\\\([^\\r\\n\\f])", "g" ), 4780 funescape = function( escape, nonHex ) { 4781 var high = "0x" + escape.slice( 1 ) - 0x10000; 4782 4783 if ( nonHex ) { 4784 4785 // Strip the backslash prefix from a non-hex escape sequence 4786 return nonHex; 4787 } 4788 4789 // Replace a hexadecimal escape sequence with the encoded Unicode code point 4790 // Support: IE <=11+ 4791 // For values outside the Basic Multilingual Plane (BMP), manually construct a 4792 // surrogate pair 4793 return high < 0 ? 4794 String.fromCharCode( high + 0x10000 ) : 4795 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); 4796 }, 4797 4798 // Used for iframes; see `setDocument`. 4799 // Support: IE 9 - 11+, Edge 12 - 18+ 4800 // Removing the function wrapper causes a "Permission Denied" 4801 // error in IE/Edge. 4802 unloadHandler = function() { 4803 setDocument(); 4804 }, 4805 4806 inDisabledFieldset = addCombinator( 4807 function( elem ) { 4808 return elem.disabled === true && nodeName( elem, "fieldset" ); 4809 }, 4810 { dir: "parentNode", next: "legend" } 4811 ); 4812 4813// Support: IE <=9 only 4814// Accessing document.activeElement can throw unexpectedly 4815// https://bugs.jquery.com/ticket/13393 4816function safeActiveElement() { 4817 try { 4818 return document.activeElement; 4819 } catch ( err ) { } 4820} 4821 4822// Optimize for push.apply( _, NodeList ) 4823try { 4824 push.apply( 4825 ( arr = slice.call( preferredDoc.childNodes ) ), 4826 preferredDoc.childNodes 4827 ); 4828 4829 // Support: Android <=4.0 4830 // Detect silently failing push.apply 4831 // eslint-disable-next-line no-unused-expressions 4832 arr[ preferredDoc.childNodes.length ].nodeType; 4833} catch ( e ) { 4834 push = { 4835 apply: function( target, els ) { 4836 pushNative.apply( target, slice.call( els ) ); 4837 }, 4838 call: function( target ) { 4839 pushNative.apply( target, slice.call( arguments, 1 ) ); 4840 } 4841 }; 4842} 4843 4844function find( selector, context, results, seed ) { 4845 var m, i, elem, nid, match, groups, newSelector, 4846 newContext = context && context.ownerDocument, 4847 4848 // nodeType defaults to 9, since context defaults to document 4849 nodeType = context ? context.nodeType : 9; 4850 4851 results = results || []; 4852 4853 // Return early from calls with invalid selector or context 4854 if ( typeof selector !== "string" || !selector || 4855 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { 4856 4857 return results; 4858 } 4859 4860 // Try to shortcut find operations (as opposed to filters) in HTML documents 4861 if ( !seed ) { 4862 setDocument( context ); 4863 context = context || document; 4864 4865 if ( documentIsHTML ) { 4866 4867 // If the selector is sufficiently simple, try using a "get*By*" DOM method 4868 // (excepting DocumentFragment context, where the methods don't exist) 4869 if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { 4870 4871 // ID selector 4872 if ( ( m = match[ 1 ] ) ) { 4873 4874 // Document context 4875 if ( nodeType === 9 ) { 4876 if ( ( elem = context.getElementById( m ) ) ) { 4877 4878 // Support: IE 9 only 4879 // getElementById can match elements by name instead of ID 4880 if ( elem.id === m ) { 4881 push.call( results, elem ); 4882 return results; 4883 } 4884 } else { 4885 return results; 4886 } 4887 4888 // Element context 4889 } else { 4890 4891 // Support: IE 9 only 4892 // getElementById can match elements by name instead of ID 4893 if ( newContext && ( elem = newContext.getElementById( m ) ) && 4894 find.contains( context, elem ) && 4895 elem.id === m ) { 4896 4897 push.call( results, elem ); 4898 return results; 4899 } 4900 } 4901 4902 // Type selector 4903 } else if ( match[ 2 ] ) { 4904 push.apply( results, context.getElementsByTagName( selector ) ); 4905 return results; 4906 4907 // Class selector 4908 } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { 4909 push.apply( results, context.getElementsByClassName( m ) ); 4910 return results; 4911 } 4912 } 4913 4914 // Take advantage of querySelectorAll 4915 if ( !nonnativeSelectorCache[ selector + " " ] && 4916 ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { 4917 4918 newSelector = selector; 4919 newContext = context; 4920 4921 // qSA considers elements outside a scoping root when evaluating child or 4922 // descendant combinators, which is not what we want. 4923 // In such cases, we work around the behavior by prefixing every selector in the 4924 // list with an ID selector referencing the scope context. 4925 // The technique has to be used as well when a leading combinator is used 4926 // as such selectors are not recognized by querySelectorAll. 4927 // Thanks to Andrew Dupont for this technique. 4928 if ( nodeType === 1 && 4929 ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { 4930 4931 // Expand context for sibling selectors 4932 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || 4933 context; 4934 4935 // We can use :scope instead of the ID hack if the browser 4936 // supports it & if we're not changing the context. 4937 // Support: IE 11+, Edge 17 - 18+ 4938 // IE/Edge sometimes throw a "Permission denied" error when 4939 // strict-comparing two documents; shallow comparisons work. 4940 // eslint-disable-next-line eqeqeq 4941 if ( newContext != context || !support.scope ) { 4942 4943 // Capture the context ID, setting it first if necessary 4944 if ( ( nid = context.getAttribute( "id" ) ) ) { 4945 nid = jQuery.escapeSelector( nid ); 4946 } else { 4947 context.setAttribute( "id", ( nid = expando ) ); 4948 } 4949 } 4950 4951 // Prefix every selector in the list 4952 groups = tokenize( selector ); 4953 i = groups.length; 4954 while ( i-- ) { 4955 groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + 4956 toSelector( groups[ i ] ); 4957 } 4958 newSelector = groups.join( "," ); 4959 } 4960 4961 try { 4962 push.apply( results, 4963 newContext.querySelectorAll( newSelector ) 4964 ); 4965 return results; 4966 } catch ( qsaError ) { 4967 nonnativeSelectorCache( selector, true ); 4968 } finally { 4969 if ( nid === expando ) { 4970 context.removeAttribute( "id" ); 4971 } 4972 } 4973 } 4974 } 4975 } 4976 4977 // All others 4978 return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); 4979} 4980 4981/** 4982 * Create key-value caches of limited size 4983 * @returns {function(string, object)} Returns the Object data after storing it on itself with 4984 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) 4985 * deleting the oldest entry 4986 */ 4987function createCache() { 4988 var keys = []; 4989 4990 function cache( key, value ) { 4991 4992 // Use (key + " ") to avoid collision with native prototype properties 4993 // (see https://github.com/jquery/sizzle/issues/157) 4994 if ( keys.push( key + " " ) > Expr.cacheLength ) { 4995 4996 // Only keep the most recent entries 4997 delete cache[ keys.shift() ]; 4998 } 4999 return ( cache[ key + " " ] = value ); 5000 } 5001 return cache; 5002} 5003 5004/** 5005 * Mark a function for special use by jQuery selector module 5006 * @param {Function} fn The function to mark 5007 */ 5008function markFunction( fn ) { 5009 fn[ expando ] = true; 5010 return fn; 5011} 5012 5013/** 5014 * Support testing using an element 5015 * @param {Function} fn Passed the created element and returns a boolean result 5016 */ 5017function assert( fn ) { 5018 var el = document.createElement( "fieldset" ); 5019 5020 try { 5021 return !!fn( el ); 5022 } catch ( e ) { 5023 return false; 5024 } finally { 5025 5026 // Remove from its parent by default 5027 if ( el.parentNode ) { 5028 el.parentNode.removeChild( el ); 5029 } 5030 5031 // release memory in IE 5032 el = null; 5033 } 5034} 5035 5036/** 5037 * Returns a function to use in pseudos for input types 5038 * @param {String} type 5039 */ 5040function createInputPseudo( type ) { 5041 return function( elem ) { 5042 return nodeName( elem, "input" ) && elem.type === type; 5043 }; 5044} 5045 5046/** 5047 * Returns a function to use in pseudos for buttons 5048 * @param {String} type 5049 */ 5050function createButtonPseudo( type ) { 5051 return function( elem ) { 5052 return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && 5053 elem.type === type; 5054 }; 5055} 5056 5057/** 5058 * Returns a function to use in pseudos for :enabled/:disabled 5059 * @param {Boolean} disabled true for :disabled; false for :enabled 5060 */ 5061function createDisabledPseudo( disabled ) { 5062 5063 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable 5064 return function( elem ) { 5065 5066 // Only certain elements can match :enabled or :disabled 5067 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled 5068 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled 5069 if ( "form" in elem ) { 5070 5071 // Check for inherited disabledness on relevant non-disabled elements: 5072 // * listed form-associated elements in a disabled fieldset 5073 // https://html.spec.whatwg.org/multipage/forms.html#category-listed 5074 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled 5075 // * option elements in a disabled optgroup 5076 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled 5077 // All such elements have a "form" property. 5078 if ( elem.parentNode && elem.disabled === false ) { 5079 5080 // Option elements defer to a parent optgroup if present 5081 if ( "label" in elem ) { 5082 if ( "label" in elem.parentNode ) { 5083 return elem.parentNode.disabled === disabled; 5084 } else { 5085 return elem.disabled === disabled; 5086 } 5087 } 5088 5089 // Support: IE 6 - 11+ 5090 // Use the isDisabled shortcut property to check for disabled fieldset ancestors 5091 return elem.isDisabled === disabled || 5092 5093 // Where there is no isDisabled, check manually 5094 elem.isDisabled !== !disabled && 5095 inDisabledFieldset( elem ) === disabled; 5096 } 5097 5098 return elem.disabled === disabled; 5099 5100 // Try to winnow out elements that can't be disabled before trusting the disabled property. 5101 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't 5102 // even exist on them, let alone have a boolean value. 5103 } else if ( "label" in elem ) { 5104 return elem.disabled === disabled; 5105 } 5106 5107 // Remaining elements are neither :enabled nor :disabled 5108 return false; 5109 }; 5110} 5111 5112/** 5113 * Returns a function to use in pseudos for positionals 5114 * @param {Function} fn 5115 */ 5116function createPositionalPseudo( fn ) { 5117 return markFunction( function( argument ) { 5118 argument = +argument; 5119 return markFunction( function( seed, matches ) { 5120 var j, 5121 matchIndexes = fn( [], seed.length, argument ), 5122 i = matchIndexes.length; 5123 5124 // Match elements found at the specified indexes 5125 while ( i-- ) { 5126 if ( seed[ ( j = matchIndexes[ i ] ) ] ) { 5127 seed[ j ] = !( matches[ j ] = seed[ j ] ); 5128 } 5129 } 5130 } ); 5131 } ); 5132} 5133 5134/** 5135 * Checks a node for validity as a jQuery selector context 5136 * @param {Element|Object=} context 5137 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value 5138 */ 5139function testContext( context ) { 5140 return context && typeof context.getElementsByTagName !== "undefined" && context; 5141} 5142 5143/** 5144 * Sets document-related variables once based on the current document 5145 * @param {Element|Object} [node] An element or document object to use to set the document 5146 * @returns {Object} Returns the current document 5147 */ 5148function setDocument( node ) { 5149 var subWindow, 5150 doc = node ? node.ownerDocument || node : preferredDoc; 5151 5152 // Return early if doc is invalid or already selected 5153 // Support: IE 11+, Edge 17 - 18+ 5154 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5155 // two documents; shallow comparisons work. 5156 // eslint-disable-next-line eqeqeq 5157 if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { 5158 return document; 5159 } 5160 5161 // Update global variables 5162 document = doc; 5163 documentElement = document.documentElement; 5164 documentIsHTML = !jQuery.isXMLDoc( document ); 5165 5166 // Support: iOS 7 only, IE 9 - 11+ 5167 // Older browsers didn't support unprefixed `matches`. 5168 matches = documentElement.matches || 5169 documentElement.webkitMatchesSelector || 5170 documentElement.msMatchesSelector; 5171 5172 // Support: IE 9 - 11+, Edge 12 - 18+ 5173 // Accessing iframe documents after unload throws "permission denied" errors 5174 // (see trac-13936). 5175 // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, 5176 // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. 5177 if ( documentElement.msMatchesSelector && 5178 5179 // Support: IE 11+, Edge 17 - 18+ 5180 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5181 // two documents; shallow comparisons work. 5182 // eslint-disable-next-line eqeqeq 5183 preferredDoc != document && 5184 ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { 5185 5186 // Support: IE 9 - 11+, Edge 12 - 18+ 5187 subWindow.addEventListener( "unload", unloadHandler ); 5188 } 5189 5190 // Support: IE <10 5191 // Check if getElementById returns elements by name 5192 // The broken getElementById methods don't pick up programmatically-set names, 5193 // so use a roundabout getElementsByName test 5194 support.getById = assert( function( el ) { 5195 documentElement.appendChild( el ).id = jQuery.expando; 5196 return !document.getElementsByName || 5197 !document.getElementsByName( jQuery.expando ).length; 5198 } ); 5199 5200 // Support: IE 9 only 5201 // Check to see if it's possible to do matchesSelector 5202 // on a disconnected node. 5203 support.disconnectedMatch = assert( function( el ) { 5204 return matches.call( el, "*" ); 5205 } ); 5206 5207 // Support: IE 9 - 11+, Edge 12 - 18+ 5208 // IE/Edge don't support the :scope pseudo-class. 5209 support.scope = assert( function() { 5210 return document.querySelectorAll( ":scope" ); 5211 } ); 5212 5213 // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only 5214 // Make sure the `:has()` argument is parsed unforgivingly. 5215 // We include `*` in the test to detect buggy implementations that are 5216 // _selectively_ forgiving (specifically when the list includes at least 5217 // one valid selector). 5218 // Note that we treat complete lack of support for `:has()` as if it were 5219 // spec-compliant support, which is fine because use of `:has()` in such 5220 // environments will fail in the qSA path and fall back to jQuery traversal 5221 // anyway. 5222 support.cssHas = assert( function() { 5223 try { 5224 document.querySelector( ":has(*,:jqfake)" ); 5225 return false; 5226 } catch ( e ) { 5227 return true; 5228 } 5229 } ); 5230 5231 // ID filter and find 5232 if ( support.getById ) { 5233 Expr.filter.ID = function( id ) { 5234 var attrId = id.replace( runescape, funescape ); 5235 return function( elem ) { 5236 return elem.getAttribute( "id" ) === attrId; 5237 }; 5238 }; 5239 Expr.find.ID = function( id, context ) { 5240 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 5241 var elem = context.getElementById( id ); 5242 return elem ? [ elem ] : []; 5243 } 5244 }; 5245 } else { 5246 Expr.filter.ID = function( id ) { 5247 var attrId = id.replace( runescape, funescape ); 5248 return function( elem ) { 5249 var node = typeof elem.getAttributeNode !== "undefined" && 5250 elem.getAttributeNode( "id" ); 5251 return node && node.value === attrId; 5252 }; 5253 }; 5254 5255 // Support: IE 6 - 7 only 5256 // getElementById is not reliable as a find shortcut 5257 Expr.find.ID = function( id, context ) { 5258 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 5259 var node, i, elems, 5260 elem = context.getElementById( id ); 5261 5262 if ( elem ) { 5263 5264 // Verify the id attribute 5265 node = elem.getAttributeNode( "id" ); 5266 if ( node && node.value === id ) { 5267 return [ elem ]; 5268 } 5269 5270 // Fall back on getElementsByName 5271 elems = context.getElementsByName( id ); 5272 i = 0; 5273 while ( ( elem = elems[ i++ ] ) ) { 5274 node = elem.getAttributeNode( "id" ); 5275 if ( node && node.value === id ) { 5276 return [ elem ]; 5277 } 5278 } 5279 } 5280 5281 return []; 5282 } 5283 }; 5284 } 5285 5286 // Tag 5287 Expr.find.TAG = function( tag, context ) { 5288 if ( typeof context.getElementsByTagName !== "undefined" ) { 5289 return context.getElementsByTagName( tag ); 5290 5291 // DocumentFragment nodes don't have gEBTN 5292 } else { 5293 return context.querySelectorAll( tag ); 5294 } 5295 }; 5296 5297 // Class 5298 Expr.find.CLASS = function( className, context ) { 5299 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { 5300 return context.getElementsByClassName( className ); 5301 } 5302 }; 5303 5304 /* QSA/matchesSelector 5305 ---------------------------------------------------------------------- */ 5306 5307 // QSA and matchesSelector support 5308 5309 rbuggyQSA = []; 5310 5311 // Build QSA regex 5312 // Regex strategy adopted from Diego Perini 5313 assert( function( el ) { 5314 5315 var input; 5316 5317 documentElement.appendChild( el ).innerHTML = 5318 "<a id='" + expando + "' href='' disabled='disabled'></a>" + 5319 "<select id='" + expando + "-\r\\' disabled='disabled'>" + 5320 "<option selected=''></option></select>"; 5321 5322 // Support: iOS <=7 - 8 only 5323 // Boolean attributes and "value" are not treated correctly in some XML documents 5324 if ( !el.querySelectorAll( "[selected]" ).length ) { 5325 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); 5326 } 5327 5328 // Support: iOS <=7 - 8 only 5329 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { 5330 rbuggyQSA.push( "~=" ); 5331 } 5332 5333 // Support: iOS 8 only 5334 // https://bugs.webkit.org/show_bug.cgi?id=136851 5335 // In-page `selector#id sibling-combinator selector` fails 5336 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { 5337 rbuggyQSA.push( ".#.+[+~]" ); 5338 } 5339 5340 // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ 5341 // In some of the document kinds, these selectors wouldn't work natively. 5342 // This is probably OK but for backwards compatibility we want to maintain 5343 // handling them through jQuery traversal in jQuery 3.x. 5344 if ( !el.querySelectorAll( ":checked" ).length ) { 5345 rbuggyQSA.push( ":checked" ); 5346 } 5347 5348 // Support: Windows 8 Native Apps 5349 // The type and name attributes are restricted during .innerHTML assignment 5350 input = document.createElement( "input" ); 5351 input.setAttribute( "type", "hidden" ); 5352 el.appendChild( input ).setAttribute( "name", "D" ); 5353 5354 // Support: IE 9 - 11+ 5355 // IE's :disabled selector does not pick up the children of disabled fieldsets 5356 // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ 5357 // In some of the document kinds, these selectors wouldn't work natively. 5358 // This is probably OK but for backwards compatibility we want to maintain 5359 // handling them through jQuery traversal in jQuery 3.x. 5360 documentElement.appendChild( el ).disabled = true; 5361 if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { 5362 rbuggyQSA.push( ":enabled", ":disabled" ); 5363 } 5364 5365 // Support: IE 11+, Edge 15 - 18+ 5366 // IE 11/Edge don't find elements on a `[name='']` query in some cases. 5367 // Adding a temporary attribute to the document before the selection works 5368 // around the issue. 5369 // Interestingly, IE 10 & older don't seem to have the issue. 5370 input = document.createElement( "input" ); 5371 input.setAttribute( "name", "" ); 5372 el.appendChild( input ); 5373 if ( !el.querySelectorAll( "[name='']" ).length ) { 5374 rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + 5375 whitespace + "*(?:''|\"\")" ); 5376 } 5377 } ); 5378 5379 if ( !support.cssHas ) { 5380 5381 // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ 5382 // Our regular `try-catch` mechanism fails to detect natively-unsupported 5383 // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) 5384 // in browsers that parse the `:has()` argument as a forgiving selector list. 5385 // https://drafts.csswg.org/selectors/#relational now requires the argument 5386 // to be parsed unforgivingly, but browsers have not yet fully adjusted. 5387 rbuggyQSA.push( ":has" ); 5388 } 5389 5390 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); 5391 5392 /* Sorting 5393 ---------------------------------------------------------------------- */ 5394 5395 // Document order sorting 5396 sortOrder = function( a, b ) { 5397 5398 // Flag for duplicate removal 5399 if ( a === b ) { 5400 hasDuplicate = true; 5401 return 0; 5402 } 5403 5404 // Sort on method existence if only one input has compareDocumentPosition 5405 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 5406 if ( compare ) { 5407 return compare; 5408 } 5409 5410 // Calculate position if both inputs belong to the same document 5411 // Support: IE 11+, Edge 17 - 18+ 5412 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5413 // two documents; shallow comparisons work. 5414 // eslint-disable-next-line eqeqeq 5415 compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? 5416 a.compareDocumentPosition( b ) : 5417 5418 // Otherwise we know they are disconnected 5419 1; 5420 5421 // Disconnected nodes 5422 if ( compare & 1 || 5423 ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { 5424 5425 // Choose the first element that is related to our preferred document 5426 // Support: IE 11+, Edge 17 - 18+ 5427 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5428 // two documents; shallow comparisons work. 5429 // eslint-disable-next-line eqeqeq 5430 if ( a === document || a.ownerDocument == preferredDoc && 5431 find.contains( preferredDoc, a ) ) { 5432 return -1; 5433 } 5434 5435 // Support: IE 11+, Edge 17 - 18+ 5436 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5437 // two documents; shallow comparisons work. 5438 // eslint-disable-next-line eqeqeq 5439 if ( b === document || b.ownerDocument == preferredDoc && 5440 find.contains( preferredDoc, b ) ) { 5441 return 1; 5442 } 5443 5444 // Maintain original order 5445 return sortInput ? 5446 ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : 5447 0; 5448 } 5449 5450 return compare & 4 ? -1 : 1; 5451 }; 5452 5453 return document; 5454} 5455 5456find.matches = function( expr, elements ) { 5457 return find( expr, null, null, elements ); 5458}; 5459 5460find.matchesSelector = function( elem, expr ) { 5461 setDocument( elem ); 5462 5463 if ( documentIsHTML && 5464 !nonnativeSelectorCache[ expr + " " ] && 5465 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { 5466 5467 try { 5468 var ret = matches.call( elem, expr ); 5469 5470 // IE 9's matchesSelector returns false on disconnected nodes 5471 if ( ret || support.disconnectedMatch || 5472 5473 // As well, disconnected nodes are said to be in a document 5474 // fragment in IE 9 5475 elem.document && elem.document.nodeType !== 11 ) { 5476 return ret; 5477 } 5478 } catch ( e ) { 5479 nonnativeSelectorCache( expr, true ); 5480 } 5481 } 5482 5483 return find( expr, document, null, [ elem ] ).length > 0; 5484}; 5485 5486find.contains = function( context, elem ) { 5487 5488 // Set document vars if needed 5489 // Support: IE 11+, Edge 17 - 18+ 5490 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5491 // two documents; shallow comparisons work. 5492 // eslint-disable-next-line eqeqeq 5493 if ( ( context.ownerDocument || context ) != document ) { 5494 setDocument( context ); 5495 } 5496 return jQuery.contains( context, elem ); 5497}; 5498 5499 5500find.attr = function( elem, name ) { 5501 5502 // Set document vars if needed 5503 // Support: IE 11+, Edge 17 - 18+ 5504 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 5505 // two documents; shallow comparisons work. 5506 // eslint-disable-next-line eqeqeq 5507 if ( ( elem.ownerDocument || elem ) != document ) { 5508 setDocument( elem ); 5509 } 5510 5511 var fn = Expr.attrHandle[ name.toLowerCase() ], 5512 5513 // Don't get fooled by Object.prototype properties (see trac-13807) 5514 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? 5515 fn( elem, name, !documentIsHTML ) : 5516 undefined; 5517 5518 if ( val !== undefined ) { 5519 return val; 5520 } 5521 5522 return elem.getAttribute( name ); 5523}; 5524 5525find.error = function( msg ) { 5526 throw new Error( "Syntax error, unrecognized expression: " + msg ); 5527}; 5528 5529/** 5530 * Document sorting and removing duplicates 5531 * @param {ArrayLike} results 5532 */ 5533jQuery.uniqueSort = function( results ) { 5534 var elem, 5535 duplicates = [], 5536 j = 0, 5537 i = 0; 5538 5539 // Unless we *know* we can detect duplicates, assume their presence 5540 // 5541 // Support: Android <=4.0+ 5542 // Testing for detecting duplicates is unpredictable so instead assume we can't 5543 // depend on duplicate detection in all browsers without a stable sort. 5544 hasDuplicate = !support.sortStable; 5545 sortInput = !support.sortStable && slice.call( results, 0 ); 5546 sort.call( results, sortOrder ); 5547 5548 if ( hasDuplicate ) { 5549 while ( ( elem = results[ i++ ] ) ) { 5550 if ( elem === results[ i ] ) { 5551 j = duplicates.push( i ); 5552 } 5553 } 5554 while ( j-- ) { 5555 splice.call( results, duplicates[ j ], 1 ); 5556 } 5557 } 5558 5559 // Clear input after sorting to release objects 5560 // See https://github.com/jquery/sizzle/pull/225 5561 sortInput = null; 5562 5563 return results; 5564}; 5565 5566jQuery.fn.uniqueSort = function() { 5567 return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); 5568}; 5569 5570Expr = jQuery.expr = { 5571 5572 // Can be adjusted by the user 5573 cacheLength: 50, 5574 5575 createPseudo: markFunction, 5576 5577 match: matchExpr, 5578 5579 attrHandle: {}, 5580 5581 find: {}, 5582 5583 relative: { 5584 ">": { dir: "parentNode", first: true }, 5585 " ": { dir: "parentNode" }, 5586 "+": { dir: "previousSibling", first: true }, 5587 "~": { dir: "previousSibling" } 5588 }, 5589 5590 preFilter: { 5591 ATTR: function( match ) { 5592 match[ 1 ] = match[ 1 ].replace( runescape, funescape ); 5593 5594 // Move the given value to match[3] whether quoted or unquoted 5595 match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) 5596 .replace( runescape, funescape ); 5597 5598 if ( match[ 2 ] === "~=" ) { 5599 match[ 3 ] = " " + match[ 3 ] + " "; 5600 } 5601 5602 return match.slice( 0, 4 ); 5603 }, 5604 5605 CHILD: function( match ) { 5606 5607 /* matches from matchExpr["CHILD"] 5608 1 type (only|nth|...) 5609 2 what (child|of-type) 5610 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 5611 4 xn-component of xn+y argument ([+-]?\d*n|) 5612 5 sign of xn-component 5613 6 x of xn-component 5614 7 sign of y-component 5615 8 y of y-component 5616 */ 5617 match[ 1 ] = match[ 1 ].toLowerCase(); 5618 5619 if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { 5620 5621 // nth-* requires argument 5622 if ( !match[ 3 ] ) { 5623 find.error( match[ 0 ] ); 5624 } 5625 5626 // numeric x and y parameters for Expr.filter.CHILD 5627 // remember that false/true cast respectively to 0/1 5628 match[ 4 ] = +( match[ 4 ] ? 5629 match[ 5 ] + ( match[ 6 ] || 1 ) : 5630 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) 5631 ); 5632 match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); 5633 5634 // other types prohibit arguments 5635 } else if ( match[ 3 ] ) { 5636 find.error( match[ 0 ] ); 5637 } 5638 5639 return match; 5640 }, 5641 5642 PSEUDO: function( match ) { 5643 var excess, 5644 unquoted = !match[ 6 ] && match[ 2 ]; 5645 5646 if ( matchExpr.CHILD.test( match[ 0 ] ) ) { 5647 return null; 5648 } 5649 5650 // Accept quoted arguments as-is 5651 if ( match[ 3 ] ) { 5652 match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; 5653 5654 // Strip excess characters from unquoted arguments 5655 } else if ( unquoted && rpseudo.test( unquoted ) && 5656 5657 // Get excess from tokenize (recursively) 5658 ( excess = tokenize( unquoted, true ) ) && 5659 5660 // advance to the next closing parenthesis 5661 ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { 5662 5663 // excess is a negative index 5664 match[ 0 ] = match[ 0 ].slice( 0, excess ); 5665 match[ 2 ] = unquoted.slice( 0, excess ); 5666 } 5667 5668 // Return only captures needed by the pseudo filter method (type and argument) 5669 return match.slice( 0, 3 ); 5670 } 5671 }, 5672 5673 filter: { 5674 5675 TAG: function( nodeNameSelector ) { 5676 var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); 5677 return nodeNameSelector === "*" ? 5678 function() { 5679 return true; 5680 } : 5681 function( elem ) { 5682 return nodeName( elem, expectedNodeName ); 5683 }; 5684 }, 5685 5686 CLASS: function( className ) { 5687 var pattern = classCache[ className + " " ]; 5688 5689 return pattern || 5690 ( pattern = new RegExp( "(^|" + whitespace + ")" + className + 5691 "(" + whitespace + "|$)" ) ) && 5692 classCache( className, function( elem ) { 5693 return pattern.test( 5694 typeof elem.className === "string" && elem.className || 5695 typeof elem.getAttribute !== "undefined" && 5696 elem.getAttribute( "class" ) || 5697 "" 5698 ); 5699 } ); 5700 }, 5701 5702 ATTR: function( name, operator, check ) { 5703 return function( elem ) { 5704 var result = find.attr( elem, name ); 5705 5706 if ( result == null ) { 5707 return operator === "!="; 5708 } 5709 if ( !operator ) { 5710 return true; 5711 } 5712 5713 result += ""; 5714 5715 if ( operator === "=" ) { 5716 return result === check; 5717 } 5718 if ( operator === "!=" ) { 5719 return result !== check; 5720 } 5721 if ( operator === "^=" ) { 5722 return check && result.indexOf( check ) === 0; 5723 } 5724 if ( operator === "*=" ) { 5725 return check && result.indexOf( check ) > -1; 5726 } 5727 if ( operator === "$=" ) { 5728 return check && result.slice( -check.length ) === check; 5729 } 5730 if ( operator === "~=" ) { 5731 return ( " " + result.replace( rwhitespace, " " ) + " " ) 5732 .indexOf( check ) > -1; 5733 } 5734 if ( operator === "|=" ) { 5735 return result === check || result.slice( 0, check.length + 1 ) === check + "-"; 5736 } 5737 5738 return false; 5739 }; 5740 }, 5741 5742 CHILD: function( type, what, _argument, first, last ) { 5743 var simple = type.slice( 0, 3 ) !== "nth", 5744 forward = type.slice( -4 ) !== "last", 5745 ofType = what === "of-type"; 5746 5747 return first === 1 && last === 0 ? 5748 5749 // Shortcut for :nth-*(n) 5750 function( elem ) { 5751 return !!elem.parentNode; 5752 } : 5753 5754 function( elem, _context, xml ) { 5755 var cache, outerCache, node, nodeIndex, start, 5756 dir = simple !== forward ? "nextSibling" : "previousSibling", 5757 parent = elem.parentNode, 5758 name = ofType && elem.nodeName.toLowerCase(), 5759 useCache = !xml && !ofType, 5760 diff = false; 5761 5762 if ( parent ) { 5763 5764 // :(first|last|only)-(child|of-type) 5765 if ( simple ) { 5766 while ( dir ) { 5767 node = elem; 5768 while ( ( node = node[ dir ] ) ) { 5769 if ( ofType ? 5770 nodeName( node, name ) : 5771 node.nodeType === 1 ) { 5772 5773 return false; 5774 } 5775 } 5776 5777 // Reverse direction for :only-* (if we haven't yet done so) 5778 start = dir = type === "only" && !start && "nextSibling"; 5779 } 5780 return true; 5781 } 5782 5783 start = [ forward ? parent.firstChild : parent.lastChild ]; 5784 5785 // non-xml :nth-child(...) stores cache data on `parent` 5786 if ( forward && useCache ) { 5787 5788 // Seek `elem` from a previously-cached index 5789 outerCache = parent[ expando ] || ( parent[ expando ] = {} ); 5790 cache = outerCache[ type ] || []; 5791 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 5792 diff = nodeIndex && cache[ 2 ]; 5793 node = nodeIndex && parent.childNodes[ nodeIndex ]; 5794 5795 while ( ( node = ++nodeIndex && node && node[ dir ] || 5796 5797 // Fallback to seeking `elem` from the start 5798 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 5799 5800 // When found, cache indexes on `parent` and break 5801 if ( node.nodeType === 1 && ++diff && node === elem ) { 5802 outerCache[ type ] = [ dirruns, nodeIndex, diff ]; 5803 break; 5804 } 5805 } 5806 5807 } else { 5808 5809 // Use previously-cached element index if available 5810 if ( useCache ) { 5811 outerCache = elem[ expando ] || ( elem[ expando ] = {} ); 5812 cache = outerCache[ type ] || []; 5813 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 5814 diff = nodeIndex; 5815 } 5816 5817 // xml :nth-child(...) 5818 // or :nth-last-child(...) or :nth(-last)?-of-type(...) 5819 if ( diff === false ) { 5820 5821 // Use the same loop as above to seek `elem` from the start 5822 while ( ( node = ++nodeIndex && node && node[ dir ] || 5823 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 5824 5825 if ( ( ofType ? 5826 nodeName( node, name ) : 5827 node.nodeType === 1 ) && 5828 ++diff ) { 5829 5830 // Cache the index of each encountered element 5831 if ( useCache ) { 5832 outerCache = node[ expando ] || 5833 ( node[ expando ] = {} ); 5834 outerCache[ type ] = [ dirruns, diff ]; 5835 } 5836 5837 if ( node === elem ) { 5838 break; 5839 } 5840 } 5841 } 5842 } 5843 } 5844 5845 // Incorporate the offset, then check against cycle size 5846 diff -= last; 5847 return diff === first || ( diff % first === 0 && diff / first >= 0 ); 5848 } 5849 }; 5850 }, 5851 5852 PSEUDO: function( pseudo, argument ) { 5853 5854 // pseudo-class names are case-insensitive 5855 // https://www.w3.org/TR/selectors/#pseudo-classes 5856 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters 5857 // Remember that setFilters inherits from pseudos 5858 var args, 5859 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || 5860 find.error( "unsupported pseudo: " + pseudo ); 5861 5862 // The user may use createPseudo to indicate that 5863 // arguments are needed to create the filter function 5864 // just as jQuery does 5865 if ( fn[ expando ] ) { 5866 return fn( argument ); 5867 } 5868 5869 // But maintain support for old signatures 5870 if ( fn.length > 1 ) { 5871 args = [ pseudo, pseudo, "", argument ]; 5872 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? 5873 markFunction( function( seed, matches ) { 5874 var idx, 5875 matched = fn( seed, argument ), 5876 i = matched.length; 5877 while ( i-- ) { 5878 idx = indexOf.call( seed, matched[ i ] ); 5879 seed[ idx ] = !( matches[ idx ] = matched[ i ] ); 5880 } 5881 } ) : 5882 function( elem ) { 5883 return fn( elem, 0, args ); 5884 }; 5885 } 5886 5887 return fn; 5888 } 5889 }, 5890 5891 pseudos: { 5892 5893 // Potentially complex pseudos 5894 not: markFunction( function( selector ) { 5895 5896 // Trim the selector passed to compile 5897 // to avoid treating leading and trailing 5898 // spaces as combinators 5899 var input = [], 5900 results = [], 5901 matcher = compile( selector.replace( rtrimCSS, "$1" ) ); 5902 5903 return matcher[ expando ] ? 5904 markFunction( function( seed, matches, _context, xml ) { 5905 var elem, 5906 unmatched = matcher( seed, null, xml, [] ), 5907 i = seed.length; 5908 5909 // Match elements unmatched by `matcher` 5910 while ( i-- ) { 5911 if ( ( elem = unmatched[ i ] ) ) { 5912 seed[ i ] = !( matches[ i ] = elem ); 5913 } 5914 } 5915 } ) : 5916 function( elem, _context, xml ) { 5917 input[ 0 ] = elem; 5918 matcher( input, null, xml, results ); 5919 5920 // Don't keep the element 5921 // (see https://github.com/jquery/sizzle/issues/299) 5922 input[ 0 ] = null; 5923 return !results.pop(); 5924 }; 5925 } ), 5926 5927 has: markFunction( function( selector ) { 5928 return function( elem ) { 5929 return find( selector, elem ).length > 0; 5930 }; 5931 } ), 5932 5933 contains: markFunction( function( text ) { 5934 text = text.replace( runescape, funescape ); 5935 return function( elem ) { 5936 return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; 5937 }; 5938 } ), 5939 5940 // "Whether an element is represented by a :lang() selector 5941 // is based solely on the element's language value 5942 // being equal to the identifier C, 5943 // or beginning with the identifier C immediately followed by "-". 5944 // The matching of C against the element's language value is performed case-insensitively. 5945 // The identifier C does not have to be a valid language name." 5946 // https://www.w3.org/TR/selectors/#lang-pseudo 5947 lang: markFunction( function( lang ) { 5948 5949 // lang value must be a valid identifier 5950 if ( !ridentifier.test( lang || "" ) ) { 5951 find.error( "unsupported lang: " + lang ); 5952 } 5953 lang = lang.replace( runescape, funescape ).toLowerCase(); 5954 return function( elem ) { 5955 var elemLang; 5956 do { 5957 if ( ( elemLang = documentIsHTML ? 5958 elem.lang : 5959 elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { 5960 5961 elemLang = elemLang.toLowerCase(); 5962 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; 5963 } 5964 } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); 5965 return false; 5966 }; 5967 } ), 5968 5969 // Miscellaneous 5970 target: function( elem ) { 5971 var hash = window.location && window.location.hash; 5972 return hash && hash.slice( 1 ) === elem.id; 5973 }, 5974 5975 root: function( elem ) { 5976 return elem === documentElement; 5977 }, 5978 5979 focus: function( elem ) { 5980 return elem === safeActiveElement() && 5981 document.hasFocus() && 5982 !!( elem.type || elem.href || ~elem.tabIndex ); 5983 }, 5984 5985 // Boolean properties 5986 enabled: createDisabledPseudo( false ), 5987 disabled: createDisabledPseudo( true ), 5988 5989 checked: function( elem ) { 5990 5991 // In CSS3, :checked should return both checked and selected elements 5992 // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 5993 return ( nodeName( elem, "input" ) && !!elem.checked ) || 5994 ( nodeName( elem, "option" ) && !!elem.selected ); 5995 }, 5996 5997 selected: function( elem ) { 5998 5999 // Support: IE <=11+ 6000 // Accessing the selectedIndex property 6001 // forces the browser to treat the default option as 6002 // selected when in an optgroup. 6003 if ( elem.parentNode ) { 6004 // eslint-disable-next-line no-unused-expressions 6005 elem.parentNode.selectedIndex; 6006 } 6007 6008 return elem.selected === true; 6009 }, 6010 6011 // Contents 6012 empty: function( elem ) { 6013 6014 // https://www.w3.org/TR/selectors/#empty-pseudo 6015 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), 6016 // but not by others (comment: 8; processing instruction: 7; etc.) 6017 // nodeType < 6 works because attributes (2) do not appear as children 6018 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 6019 if ( elem.nodeType < 6 ) { 6020 return false; 6021 } 6022 } 6023 return true; 6024 }, 6025 6026 parent: function( elem ) { 6027 return !Expr.pseudos.empty( elem ); 6028 }, 6029 6030 // Element/input types 6031 header: function( elem ) { 6032 return rheader.test( elem.nodeName ); 6033 }, 6034 6035 input: function( elem ) { 6036 return rinputs.test( elem.nodeName ); 6037 }, 6038 6039 button: function( elem ) { 6040 return nodeName( elem, "input" ) && elem.type === "button" || 6041 nodeName( elem, "button" ); 6042 }, 6043 6044 text: function( elem ) { 6045 var attr; 6046 return nodeName( elem, "input" ) && elem.type === "text" && 6047 6048 // Support: IE <10 only 6049 // New HTML5 attribute values (e.g., "search") appear 6050 // with elem.type === "text" 6051 ( ( attr = elem.getAttribute( "type" ) ) == null || 6052 attr.toLowerCase() === "text" ); 6053 }, 6054 6055 // Position-in-collection 6056 first: createPositionalPseudo( function() { 6057 return [ 0 ]; 6058 } ), 6059 6060 last: createPositionalPseudo( function( _matchIndexes, length ) { 6061 return [ length - 1 ]; 6062 } ), 6063 6064 eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { 6065 return [ argument < 0 ? argument + length : argument ]; 6066 } ), 6067 6068 even: createPositionalPseudo( function( matchIndexes, length ) { 6069 var i = 0; 6070 for ( ; i < length; i += 2 ) { 6071 matchIndexes.push( i ); 6072 } 6073 return matchIndexes; 6074 } ), 6075 6076 odd: createPositionalPseudo( function( matchIndexes, length ) { 6077 var i = 1; 6078 for ( ; i < length; i += 2 ) { 6079 matchIndexes.push( i ); 6080 } 6081 return matchIndexes; 6082 } ), 6083 6084 lt: createPositionalPseudo( function( matchIndexes, length, argument ) { 6085 var i; 6086 6087 if ( argument < 0 ) { 6088 i = argument + length; 6089 } else if ( argument > length ) { 6090 i = length; 6091 } else { 6092 i = argument; 6093 } 6094 6095 for ( ; --i >= 0; ) { 6096 matchIndexes.push( i ); 6097 } 6098 return matchIndexes; 6099 } ), 6100 6101 gt: createPositionalPseudo( function( matchIndexes, length, argument ) { 6102 var i = argument < 0 ? argument + length : argument; 6103 for ( ; ++i < length; ) { 6104 matchIndexes.push( i ); 6105 } 6106 return matchIndexes; 6107 } ) 6108 } 6109}; 6110 6111Expr.pseudos.nth = Expr.pseudos.eq; 6112 6113// Add button/input type pseudos 6114for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { 6115 Expr.pseudos[ i ] = createInputPseudo( i ); 6116} 6117for ( i in { submit: true, reset: true } ) { 6118 Expr.pseudos[ i ] = createButtonPseudo( i ); 6119} 6120 6121// Easy API for creating new setFilters 6122function setFilters() {} 6123setFilters.prototype = Expr.filters = Expr.pseudos; 6124Expr.setFilters = new setFilters(); 6125 6126function tokenize( selector, parseOnly ) { 6127 var matched, match, tokens, type, 6128 soFar, groups, preFilters, 6129 cached = tokenCache[ selector + " " ]; 6130 6131 if ( cached ) { 6132 return parseOnly ? 0 : cached.slice( 0 ); 6133 } 6134 6135 soFar = selector; 6136 groups = []; 6137 preFilters = Expr.preFilter; 6138 6139 while ( soFar ) { 6140 6141 // Comma and first run 6142 if ( !matched || ( match = rcomma.exec( soFar ) ) ) { 6143 if ( match ) { 6144 6145 // Don't consume trailing commas as valid 6146 soFar = soFar.slice( match[ 0 ].length ) || soFar; 6147 } 6148 groups.push( ( tokens = [] ) ); 6149 } 6150 6151 matched = false; 6152 6153 // Combinators 6154 if ( ( match = rleadingCombinator.exec( soFar ) ) ) { 6155 matched = match.shift(); 6156 tokens.push( { 6157 value: matched, 6158 6159 // Cast descendant combinators to space 6160 type: match[ 0 ].replace( rtrimCSS, " " ) 6161 } ); 6162 soFar = soFar.slice( matched.length ); 6163 } 6164 6165 // Filters 6166 for ( type in Expr.filter ) { 6167 if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || 6168 ( match = preFilters[ type ]( match ) ) ) ) { 6169 matched = match.shift(); 6170 tokens.push( { 6171 value: matched, 6172 type: type, 6173 matches: match 6174 } ); 6175 soFar = soFar.slice( matched.length ); 6176 } 6177 } 6178 6179 if ( !matched ) { 6180 break; 6181 } 6182 } 6183 6184 // Return the length of the invalid excess 6185 // if we're just parsing 6186 // Otherwise, throw an error or return tokens 6187 if ( parseOnly ) { 6188 return soFar.length; 6189 } 6190 6191 return soFar ? 6192 find.error( selector ) : 6193 6194 // Cache the tokens 6195 tokenCache( selector, groups ).slice( 0 ); 6196} 6197 6198function toSelector( tokens ) { 6199 var i = 0, 6200 len = tokens.length, 6201 selector = ""; 6202 for ( ; i < len; i++ ) { 6203 selector += tokens[ i ].value; 6204 } 6205 return selector; 6206} 6207 6208function addCombinator( matcher, combinator, base ) { 6209 var dir = combinator.dir, 6210 skip = combinator.next, 6211 key = skip || dir, 6212 checkNonElements = base && key === "parentNode", 6213 doneName = done++; 6214 6215 return combinator.first ? 6216 6217 // Check against closest ancestor/preceding element 6218 function( elem, context, xml ) { 6219 while ( ( elem = elem[ dir ] ) ) { 6220 if ( elem.nodeType === 1 || checkNonElements ) { 6221 return matcher( elem, context, xml ); 6222 } 6223 } 6224 return false; 6225 } : 6226 6227 // Check against all ancestor/preceding elements 6228 function( elem, context, xml ) { 6229 var oldCache, outerCache, 6230 newCache = [ dirruns, doneName ]; 6231 6232 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching 6233 if ( xml ) { 6234 while ( ( elem = elem[ dir ] ) ) { 6235 if ( elem.nodeType === 1 || checkNonElements ) { 6236 if ( matcher( elem, context, xml ) ) { 6237 return true; 6238 } 6239 } 6240 } 6241 } else { 6242 while ( ( elem = elem[ dir ] ) ) { 6243 if ( elem.nodeType === 1 || checkNonElements ) { 6244 outerCache = elem[ expando ] || ( elem[ expando ] = {} ); 6245 6246 if ( skip && nodeName( elem, skip ) ) { 6247 elem = elem[ dir ] || elem; 6248 } else if ( ( oldCache = outerCache[ key ] ) && 6249 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { 6250 6251 // Assign to newCache so results back-propagate to previous elements 6252 return ( newCache[ 2 ] = oldCache[ 2 ] ); 6253 } else { 6254 6255 // Reuse newcache so results back-propagate to previous elements 6256 outerCache[ key ] = newCache; 6257 6258 // A match means we're done; a fail means we have to keep checking 6259 if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { 6260 return true; 6261 } 6262 } 6263 } 6264 } 6265 } 6266 return false; 6267 }; 6268} 6269 6270function elementMatcher( matchers ) { 6271 return matchers.length > 1 ? 6272 function( elem, context, xml ) { 6273 var i = matchers.length; 6274 while ( i-- ) { 6275 if ( !matchers[ i ]( elem, context, xml ) ) { 6276 return false; 6277 } 6278 } 6279 return true; 6280 } : 6281 matchers[ 0 ]; 6282} 6283 6284function multipleContexts( selector, contexts, results ) { 6285 var i = 0, 6286 len = contexts.length; 6287 for ( ; i < len; i++ ) { 6288 find( selector, contexts[ i ], results ); 6289 } 6290 return results; 6291} 6292 6293function condense( unmatched, map, filter, context, xml ) { 6294 var elem, 6295 newUnmatched = [], 6296 i = 0, 6297 len = unmatched.length, 6298 mapped = map != null; 6299 6300 for ( ; i < len; i++ ) { 6301 if ( ( elem = unmatched[ i ] ) ) { 6302 if ( !filter || filter( elem, context, xml ) ) { 6303 newUnmatched.push( elem ); 6304 if ( mapped ) { 6305 map.push( i ); 6306 } 6307 } 6308 } 6309 } 6310 6311 return newUnmatched; 6312} 6313 6314function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { 6315 if ( postFilter && !postFilter[ expando ] ) { 6316 postFilter = setMatcher( postFilter ); 6317 } 6318 if ( postFinder && !postFinder[ expando ] ) { 6319 postFinder = setMatcher( postFinder, postSelector ); 6320 } 6321 return markFunction( function( seed, results, context, xml ) { 6322 var temp, i, elem, matcherOut, 6323 preMap = [], 6324 postMap = [], 6325 preexisting = results.length, 6326 6327 // Get initial elements from seed or context 6328 elems = seed || 6329 multipleContexts( selector || "*", 6330 context.nodeType ? [ context ] : context, [] ), 6331 6332 // Prefilter to get matcher input, preserving a map for seed-results synchronization 6333 matcherIn = preFilter && ( seed || !selector ) ? 6334 condense( elems, preMap, preFilter, context, xml ) : 6335 elems; 6336 6337 if ( matcher ) { 6338 6339 // If we have a postFinder, or filtered seed, or non-seed postFilter 6340 // or preexisting results, 6341 matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? 6342 6343 // ...intermediate processing is necessary 6344 [] : 6345 6346 // ...otherwise use results directly 6347 results; 6348 6349 // Find primary matches 6350 matcher( matcherIn, matcherOut, context, xml ); 6351 } else { 6352 matcherOut = matcherIn; 6353 } 6354 6355 // Apply postFilter 6356 if ( postFilter ) { 6357 temp = condense( matcherOut, postMap ); 6358 postFilter( temp, [], context, xml ); 6359 6360 // Un-match failing elements by moving them back to matcherIn 6361 i = temp.length; 6362 while ( i-- ) { 6363 if ( ( elem = temp[ i ] ) ) { 6364 matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); 6365 } 6366 } 6367 } 6368 6369 if ( seed ) { 6370 if ( postFinder || preFilter ) { 6371 if ( postFinder ) { 6372 6373 // Get the final matcherOut by condensing this intermediate into postFinder contexts 6374 temp = []; 6375 i = matcherOut.length; 6376 while ( i-- ) { 6377 if ( ( elem = matcherOut[ i ] ) ) { 6378 6379 // Restore matcherIn since elem is not yet a final match 6380 temp.push( ( matcherIn[ i ] = elem ) ); 6381 } 6382 } 6383 postFinder( null, ( matcherOut = [] ), temp, xml ); 6384 } 6385 6386 // Move matched elements from seed to results to keep them synchronized 6387 i = matcherOut.length; 6388 while ( i-- ) { 6389 if ( ( elem = matcherOut[ i ] ) && 6390 ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { 6391 6392 seed[ temp ] = !( results[ temp ] = elem ); 6393 } 6394 } 6395 } 6396 6397 // Add elements to results, through postFinder if defined 6398 } else { 6399 matcherOut = condense( 6400 matcherOut === results ? 6401 matcherOut.splice( preexisting, matcherOut.length ) : 6402 matcherOut 6403 ); 6404 if ( postFinder ) { 6405 postFinder( null, results, matcherOut, xml ); 6406 } else { 6407 push.apply( results, matcherOut ); 6408 } 6409 } 6410 } ); 6411} 6412 6413function matcherFromTokens( tokens ) { 6414 var checkContext, matcher, j, 6415 len = tokens.length, 6416 leadingRelative = Expr.relative[ tokens[ 0 ].type ], 6417 implicitRelative = leadingRelative || Expr.relative[ " " ], 6418 i = leadingRelative ? 1 : 0, 6419 6420 // The foundational matcher ensures that elements are reachable from top-level context(s) 6421 matchContext = addCombinator( function( elem ) { 6422 return elem === checkContext; 6423 }, implicitRelative, true ), 6424 matchAnyContext = addCombinator( function( elem ) { 6425 return indexOf.call( checkContext, elem ) > -1; 6426 }, implicitRelative, true ), 6427 matchers = [ function( elem, context, xml ) { 6428 6429 // Support: IE 11+, Edge 17 - 18+ 6430 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 6431 // two documents; shallow comparisons work. 6432 // eslint-disable-next-line eqeqeq 6433 var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( 6434 ( checkContext = context ).nodeType ? 6435 matchContext( elem, context, xml ) : 6436 matchAnyContext( elem, context, xml ) ); 6437 6438 // Avoid hanging onto element 6439 // (see https://github.com/jquery/sizzle/issues/299) 6440 checkContext = null; 6441 return ret; 6442 } ]; 6443 6444 for ( ; i < len; i++ ) { 6445 if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { 6446 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; 6447 } else { 6448 matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); 6449 6450 // Return special upon seeing a positional matcher 6451 if ( matcher[ expando ] ) { 6452 6453 // Find the next relative operator (if any) for proper handling 6454 j = ++i; 6455 for ( ; j < len; j++ ) { 6456 if ( Expr.relative[ tokens[ j ].type ] ) { 6457 break; 6458 } 6459 } 6460 return setMatcher( 6461 i > 1 && elementMatcher( matchers ), 6462 i > 1 && toSelector( 6463 6464 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 6465 tokens.slice( 0, i - 1 ) 6466 .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) 6467 ).replace( rtrimCSS, "$1" ), 6468 matcher, 6469 i < j && matcherFromTokens( tokens.slice( i, j ) ), 6470 j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), 6471 j < len && toSelector( tokens ) 6472 ); 6473 } 6474 matchers.push( matcher ); 6475 } 6476 } 6477 6478 return elementMatcher( matchers ); 6479} 6480 6481function matcherFromGroupMatchers( elementMatchers, setMatchers ) { 6482 var bySet = setMatchers.length > 0, 6483 byElement = elementMatchers.length > 0, 6484 superMatcher = function( seed, context, xml, results, outermost ) { 6485 var elem, j, matcher, 6486 matchedCount = 0, 6487 i = "0", 6488 unmatched = seed && [], 6489 setMatched = [], 6490 contextBackup = outermostContext, 6491 6492 // We must always have either seed elements or outermost context 6493 elems = seed || byElement && Expr.find.TAG( "*", outermost ), 6494 6495 // Use integer dirruns iff this is the outermost matcher 6496 dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), 6497 len = elems.length; 6498 6499 if ( outermost ) { 6500 6501 // Support: IE 11+, Edge 17 - 18+ 6502 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 6503 // two documents; shallow comparisons work. 6504 // eslint-disable-next-line eqeqeq 6505 outermostContext = context == document || context || outermost; 6506 } 6507 6508 // Add elements passing elementMatchers directly to results 6509 // Support: iOS <=7 - 9 only 6510 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching 6511 // elements by id. (see trac-14142) 6512 for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { 6513 if ( byElement && elem ) { 6514 j = 0; 6515 6516 // Support: IE 11+, Edge 17 - 18+ 6517 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 6518 // two documents; shallow comparisons work. 6519 // eslint-disable-next-line eqeqeq 6520 if ( !context && elem.ownerDocument != document ) { 6521 setDocument( elem ); 6522 xml = !documentIsHTML; 6523 } 6524 while ( ( matcher = elementMatchers[ j++ ] ) ) { 6525 if ( matcher( elem, context || document, xml ) ) { 6526 push.call( results, elem ); 6527 break; 6528 } 6529 } 6530 if ( outermost ) { 6531 dirruns = dirrunsUnique; 6532 } 6533 } 6534 6535 // Track unmatched elements for set filters 6536 if ( bySet ) { 6537 6538 // They will have gone through all possible matchers 6539 if ( ( elem = !matcher && elem ) ) { 6540 matchedCount--; 6541 } 6542 6543 // Lengthen the array for every element, matched or not 6544 if ( seed ) { 6545 unmatched.push( elem ); 6546 } 6547 } 6548 } 6549 6550 // `i` is now the count of elements visited above, and adding it to `matchedCount` 6551 // makes the latter nonnegative. 6552 matchedCount += i; 6553 6554 // Apply set filters to unmatched elements 6555 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` 6556 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have 6557 // no element matchers and no seed. 6558 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that 6559 // case, which will result in a "00" `matchedCount` that differs from `i` but is also 6560 // numerically zero. 6561 if ( bySet && i !== matchedCount ) { 6562 j = 0; 6563 while ( ( matcher = setMatchers[ j++ ] ) ) { 6564 matcher( unmatched, setMatched, context, xml ); 6565 } 6566 6567 if ( seed ) { 6568 6569 // Reintegrate element matches to eliminate the need for sorting 6570 if ( matchedCount > 0 ) { 6571 while ( i-- ) { 6572 if ( !( unmatched[ i ] || setMatched[ i ] ) ) { 6573 setMatched[ i ] = pop.call( results ); 6574 } 6575 } 6576 } 6577 6578 // Discard index placeholder values to get only actual matches 6579 setMatched = condense( setMatched ); 6580 } 6581 6582 // Add matches to results 6583 push.apply( results, setMatched ); 6584 6585 // Seedless set matches succeeding multiple successful matchers stipulate sorting 6586 if ( outermost && !seed && setMatched.length > 0 && 6587 ( matchedCount + setMatchers.length ) > 1 ) { 6588 6589 jQuery.uniqueSort( results ); 6590 } 6591 } 6592 6593 // Override manipulation of globals by nested matchers 6594 if ( outermost ) { 6595 dirruns = dirrunsUnique; 6596 outermostContext = contextBackup; 6597 } 6598 6599 return unmatched; 6600 }; 6601 6602 return bySet ? 6603 markFunction( superMatcher ) : 6604 superMatcher; 6605} 6606 6607function compile( selector, match /* Internal Use Only */ ) { 6608 var i, 6609 setMatchers = [], 6610 elementMatchers = [], 6611 cached = compilerCache[ selector + " " ]; 6612 6613 if ( !cached ) { 6614 6615 // Generate a function of recursive functions that can be used to check each element 6616 if ( !match ) { 6617 match = tokenize( selector ); 6618 } 6619 i = match.length; 6620 while ( i-- ) { 6621 cached = matcherFromTokens( match[ i ] ); 6622 if ( cached[ expando ] ) { 6623 setMatchers.push( cached ); 6624 } else { 6625 elementMatchers.push( cached ); 6626 } 6627 } 6628 6629 // Cache the compiled function 6630 cached = compilerCache( selector, 6631 matcherFromGroupMatchers( elementMatchers, setMatchers ) ); 6632 6633 // Save selector and tokenization 6634 cached.selector = selector; 6635 } 6636 return cached; 6637} 6638 6639/** 6640 * A low-level selection function that works with jQuery's compiled 6641 * selector functions 6642 * @param {String|Function} selector A selector or a pre-compiled 6643 * selector function built with jQuery selector compile 6644 * @param {Element} context 6645 * @param {Array} [results] 6646 * @param {Array} [seed] A set of elements to match against 6647 */ 6648function select( selector, context, results, seed ) { 6649 var i, tokens, token, type, find, 6650 compiled = typeof selector === "function" && selector, 6651 match = !seed && tokenize( ( selector = compiled.selector || selector ) ); 6652 6653 results = results || []; 6654 6655 // Try to minimize operations if there is only one selector in the list and no seed 6656 // (the latter of which guarantees us context) 6657 if ( match.length === 1 ) { 6658 6659 // Reduce context if the leading compound selector is an ID 6660 tokens = match[ 0 ] = match[ 0 ].slice( 0 ); 6661 if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && 6662 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { 6663 6664 context = ( Expr.find.ID( 6665 token.matches[ 0 ].replace( runescape, funescape ), 6666 context 6667 ) || [] )[ 0 ]; 6668 if ( !context ) { 6669 return results; 6670 6671 // Precompiled matchers will still verify ancestry, so step up a level 6672 } else if ( compiled ) { 6673 context = context.parentNode; 6674 } 6675 6676 selector = selector.slice( tokens.shift().value.length ); 6677 } 6678 6679 // Fetch a seed set for right-to-left matching 6680 i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; 6681 while ( i-- ) { 6682 token = tokens[ i ]; 6683 6684 // Abort if we hit a combinator 6685 if ( Expr.relative[ ( type = token.type ) ] ) { 6686 break; 6687 } 6688 if ( ( find = Expr.find[ type ] ) ) { 6689 6690 // Search, expanding context for leading sibling combinators 6691 if ( ( seed = find( 6692 token.matches[ 0 ].replace( runescape, funescape ), 6693 rsibling.test( tokens[ 0 ].type ) && 6694 testContext( context.parentNode ) || context 6695 ) ) ) { 6696 6697 // If seed is empty or no tokens remain, we can return early 6698 tokens.splice( i, 1 ); 6699 selector = seed.length && toSelector( tokens ); 6700 if ( !selector ) { 6701 push.apply( results, seed ); 6702 return results; 6703 } 6704 6705 break; 6706 } 6707 } 6708 } 6709 } 6710 6711 // Compile and execute a filtering function if one is not provided 6712 // Provide `match` to avoid retokenization if we modified the selector above 6713 ( compiled || compile( selector, match ) )( 6714 seed, 6715 context, 6716 !documentIsHTML, 6717 results, 6718 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context 6719 ); 6720 return results; 6721} 6722 6723// One-time assignments 6724 6725// Support: Android <=4.0 - 4.1+ 6726// Sort stability 6727support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; 6728 6729// Initialize against the default document 6730setDocument(); 6731 6732// Support: Android <=4.0 - 4.1+ 6733// Detached nodes confoundingly follow *each other* 6734support.sortDetached = assert( function( el ) { 6735 6736 // Should return 1, but returns 4 (following) 6737 return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; 6738} ); 6739 6740jQuery.find = find; 6741 6742// Deprecated 6743jQuery.expr[ ":" ] = jQuery.expr.pseudos; 6744jQuery.unique = jQuery.uniqueSort; 6745 6746// These have always been private, but they used to be documented as part of 6747// Sizzle so let's maintain them for now for backwards compatibility purposes. 6748find.compile = compile; 6749find.select = select; 6750find.setDocument = setDocument; 6751find.tokenize = tokenize; 6752 6753find.escape = jQuery.escapeSelector; 6754find.getText = jQuery.text; 6755find.isXML = jQuery.isXMLDoc; 6756find.selectors = jQuery.expr; 6757find.support = jQuery.support; 6758find.uniqueSort = jQuery.uniqueSort; 6759 6760 /* eslint-enable */ 6761 6762} )(); 6763 6764 6765var dir = function( elem, dir, until ) { 6766 var matched = [], 6767 truncate = until !== undefined; 6768 6769 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 6770 if ( elem.nodeType === 1 ) { 6771 if ( truncate && jQuery( elem ).is( until ) ) { 6772 break; 6773 } 6774 matched.push( elem ); 6775 } 6776 } 6777 return matched; 6778}; 6779 6780 6781var siblings = function( n, elem ) { 6782 var matched = []; 6783 6784 for ( ; n; n = n.nextSibling ) { 6785 if ( n.nodeType === 1 && n !== elem ) { 6786 matched.push( n ); 6787 } 6788 } 6789 6790 return matched; 6791}; 6792 6793 6794var rneedsContext = jQuery.expr.match.needsContext; 6795 6796var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 6797 6798 6799 6800// Implement the identical functionality for filter and not 6801function winnow( elements, qualifier, not ) { 6802 if ( isFunction( qualifier ) ) { 6803 return jQuery.grep( elements, function( elem, i ) { 6804 return !!qualifier.call( elem, i, elem ) !== not; 6805 } ); 6806 } 6807 6808 // Single element 6809 if ( qualifier.nodeType ) { 6810 return jQuery.grep( elements, function( elem ) { 6811 return ( elem === qualifier ) !== not; 6812 } ); 6813 } 6814 6815 // Arraylike of elements (jQuery, arguments, Array) 6816 if ( typeof qualifier !== "string" ) { 6817 return jQuery.grep( elements, function( elem ) { 6818 return ( indexOf.call( qualifier, elem ) > -1 ) !== not; 6819 } ); 6820 } 6821 6822 // Filtered directly for both simple and complex selectors 6823 return jQuery.filter( qualifier, elements, not ); 6824} 6825 6826jQuery.filter = function( expr, elems, not ) { 6827 var elem = elems[ 0 ]; 6828 6829 if ( not ) { 6830 expr = ":not(" + expr + ")"; 6831 } 6832 6833 if ( elems.length === 1 && elem.nodeType === 1 ) { 6834 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; 6835 } 6836 6837 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { 6838 return elem.nodeType === 1; 6839 } ) ); 6840}; 6841 6842jQuery.fn.extend( { 6843 find: function( selector ) { 6844 var i, ret, 6845 len = this.length, 6846 self = this; 6847 6848 if ( typeof selector !== "string" ) { 6849 return this.pushStack( jQuery( selector ).filter( function() { 6850 for ( i = 0; i < len; i++ ) { 6851 if ( jQuery.contains( self[ i ], this ) ) { 6852 return true; 6853 } 6854 } 6855 } ) ); 6856 } 6857 6858 ret = this.pushStack( [] ); 6859 6860 for ( i = 0; i < len; i++ ) { 6861 jQuery.find( selector, self[ i ], ret ); 6862 } 6863 6864 return len > 1 ? jQuery.uniqueSort( ret ) : ret; 6865 }, 6866 filter: function( selector ) { 6867 return this.pushStack( winnow( this, selector || [], false ) ); 6868 }, 6869 not: function( selector ) { 6870 return this.pushStack( winnow( this, selector || [], true ) ); 6871 }, 6872 is: function( selector ) { 6873 return !!winnow( 6874 this, 6875 6876 // If this is a positional/relative selector, check membership in the returned set 6877 // so $("p:first").is("p:last") won't return true for a doc with two "p". 6878 typeof selector === "string" && rneedsContext.test( selector ) ? 6879 jQuery( selector ) : 6880 selector || [], 6881 false 6882 ).length; 6883 } 6884} ); 6885 6886 6887// Initialize a jQuery object 6888 6889 6890// A central reference to the root jQuery(document) 6891var rootjQuery, 6892 6893 // A simple way to check for HTML strings 6894 // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521) 6895 // Strict HTML recognition (trac-11290: must start with <) 6896 // Shortcut simple #id case for speed 6897 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, 6898 6899 init = jQuery.fn.init = function( selector, context, root ) { 6900 var match, elem; 6901 6902 // HANDLE: $(""), $(null), $(undefined), $(false) 6903 if ( !selector ) { 6904 return this; 6905 } 6906 6907 // Method init() accepts an alternate rootjQuery 6908 // so migrate can support jQuery.sub (gh-2101) 6909 root = root || rootjQuery; 6910 6911 // Handle HTML strings 6912 if ( typeof selector === "string" ) { 6913 if ( selector[ 0 ] === "<" && 6914 selector[ selector.length - 1 ] === ">" && 6915 selector.length >= 3 ) { 6916 6917 // Assume that strings that start and end with <> are HTML and skip the regex check 6918 match = [ null, selector, null ]; 6919 6920 } else { 6921 match = rquickExpr.exec( selector ); 6922 } 6923 6924 // Match html or make sure no context is specified for #id 6925 if ( match && ( match[ 1 ] || !context ) ) { 6926 6927 // HANDLE: $(html) -> $(array) 6928 if ( match[ 1 ] ) { 6929 context = context instanceof jQuery ? context[ 0 ] : context; 6930 6931 // Option to run scripts is true for back-compat 6932 // Intentionally let the error be thrown if parseHTML is not present 6933 jQuery.merge( this, jQuery.parseHTML( 6934 match[ 1 ], 6935 context && context.nodeType ? context.ownerDocument || context : document, 6936 true 6937 ) ); 6938 6939 // HANDLE: $(html, props) 6940 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { 6941 for ( match in context ) { 6942 6943 // Properties of context are called as methods if possible 6944 if ( isFunction( this[ match ] ) ) { 6945 this[ match ]( context[ match ] ); 6946 6947 // ...and otherwise set as attributes 6948 } else { 6949 this.attr( match, context[ match ] ); 6950 } 6951 } 6952 } 6953 6954 return this; 6955 6956 // HANDLE: $(#id) 6957 } else { 6958 elem = document.getElementById( match[ 2 ] ); 6959 6960 if ( elem ) { 6961 6962 // Inject the element directly into the jQuery object 6963 this[ 0 ] = elem; 6964 this.length = 1; 6965 } 6966 return this; 6967 } 6968 6969 // HANDLE: $(expr, $(...)) 6970 } else if ( !context || context.jquery ) { 6971 return ( context || root ).find( selector ); 6972 6973 // HANDLE: $(expr, context) 6974 // (which is just equivalent to: $(context).find(expr) 6975 } else { 6976 return this.constructor( context ).find( selector ); 6977 } 6978 6979 // HANDLE: $(DOMElement) 6980 } else if ( selector.nodeType ) { 6981 this[ 0 ] = selector; 6982 this.length = 1; 6983 return this; 6984 6985 // HANDLE: $(function) 6986 // Shortcut for document ready 6987 } else if ( isFunction( selector ) ) { 6988 return root.ready !== undefined ? 6989 root.ready( selector ) : 6990 6991 // Execute immediately if ready is not present 6992 selector( jQuery ); 6993 } 6994 6995 return jQuery.makeArray( selector, this ); 6996 }; 6997 6998// Give the init function the jQuery prototype for later instantiation 6999init.prototype = jQuery.fn; 7000 7001// Initialize central reference 7002rootjQuery = jQuery( document ); 7003 7004 7005var rparentsprev = /^(?:parents|prev(?:Until|All))/, 7006 7007 // Methods guaranteed to produce a unique set when starting from a unique set 7008 guaranteedUnique = { 7009 children: true, 7010 contents: true, 7011 next: true, 7012 prev: true 7013 }; 7014 7015jQuery.fn.extend( { 7016 has: function( target ) { 7017 var targets = jQuery( target, this ), 7018 l = targets.length; 7019 7020 return this.filter( function() { 7021 var i = 0; 7022 for ( ; i < l; i++ ) { 7023 if ( jQuery.contains( this, targets[ i ] ) ) { 7024 return true; 7025 } 7026 } 7027 } ); 7028 }, 7029 7030 closest: function( selectors, context ) { 7031 var cur, 7032 i = 0, 7033 l = this.length, 7034 matched = [], 7035 targets = typeof selectors !== "string" && jQuery( selectors ); 7036 7037 // Positional selectors never match, since there's no _selection_ context 7038 if ( !rneedsContext.test( selectors ) ) { 7039 for ( ; i < l; i++ ) { 7040 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { 7041 7042 // Always skip document fragments 7043 if ( cur.nodeType < 11 && ( targets ? 7044 targets.index( cur ) > -1 : 7045 7046 // Don't pass non-elements to jQuery#find 7047 cur.nodeType === 1 && 7048 jQuery.find.matchesSelector( cur, selectors ) ) ) { 7049 7050 matched.push( cur ); 7051 break; 7052 } 7053 } 7054 } 7055 } 7056 7057 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); 7058 }, 7059 7060 // Determine the position of an element within the set 7061 index: function( elem ) { 7062 7063 // No argument, return index in parent 7064 if ( !elem ) { 7065 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; 7066 } 7067 7068 // Index in selector 7069 if ( typeof elem === "string" ) { 7070 return indexOf.call( jQuery( elem ), this[ 0 ] ); 7071 } 7072 7073 // Locate the position of the desired element 7074 return indexOf.call( this, 7075 7076 // If it receives a jQuery object, the first element is used 7077 elem.jquery ? elem[ 0 ] : elem 7078 ); 7079 }, 7080 7081 add: function( selector, context ) { 7082 return this.pushStack( 7083 jQuery.uniqueSort( 7084 jQuery.merge( this.get(), jQuery( selector, context ) ) 7085 ) 7086 ); 7087 }, 7088 7089 addBack: function( selector ) { 7090 return this.add( selector == null ? 7091 this.prevObject : this.prevObject.filter( selector ) 7092 ); 7093 } 7094} ); 7095 7096function sibling( cur, dir ) { 7097 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} 7098 return cur; 7099} 7100 7101jQuery.each( { 7102 parent: function( elem ) { 7103 var parent = elem.parentNode; 7104 return parent && parent.nodeType !== 11 ? parent : null; 7105 }, 7106 parents: function( elem ) { 7107 return dir( elem, "parentNode" ); 7108 }, 7109 parentsUntil: function( elem, _i, until ) { 7110 return dir( elem, "parentNode", until ); 7111 }, 7112 next: function( elem ) { 7113 return sibling( elem, "nextSibling" ); 7114 }, 7115 prev: function( elem ) { 7116 return sibling( elem, "previousSibling" ); 7117 }, 7118 nextAll: function( elem ) { 7119 return dir( elem, "nextSibling" ); 7120 }, 7121 prevAll: function( elem ) { 7122 return dir( elem, "previousSibling" ); 7123 }, 7124 nextUntil: function( elem, _i, until ) { 7125 return dir( elem, "nextSibling", until ); 7126 }, 7127 prevUntil: function( elem, _i, until ) { 7128 return dir( elem, "previousSibling", until ); 7129 }, 7130 siblings: function( elem ) { 7131 return siblings( ( elem.parentNode || {} ).firstChild, elem ); 7132 }, 7133 children: function( elem ) { 7134 return siblings( elem.firstChild ); 7135 }, 7136 contents: function( elem ) { 7137 if ( elem.contentDocument != null && 7138 7139 // Support: IE 11+ 7140 // <object> elements with no `data` attribute has an object 7141 // `contentDocument` with a `null` prototype. 7142 getProto( elem.contentDocument ) ) { 7143 7144 return elem.contentDocument; 7145 } 7146 7147 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only 7148 // Treat the template element as a regular one in browsers that 7149 // don't support it. 7150 if ( nodeName( elem, "template" ) ) { 7151 elem = elem.content || elem; 7152 } 7153 7154 return jQuery.merge( [], elem.childNodes ); 7155 } 7156}, function( name, fn ) { 7157 jQuery.fn[ name ] = function( until, selector ) { 7158 var matched = jQuery.map( this, fn, until ); 7159 7160 if ( name.slice( -5 ) !== "Until" ) { 7161 selector = until; 7162 } 7163 7164 if ( selector && typeof selector === "string" ) { 7165 matched = jQuery.filter( selector, matched ); 7166 } 7167 7168 if ( this.length > 1 ) { 7169 7170 // Remove duplicates 7171 if ( !guaranteedUnique[ name ] ) { 7172 jQuery.uniqueSort( matched ); 7173 } 7174 7175 // Reverse order for parents* and prev-derivatives 7176 if ( rparentsprev.test( name ) ) { 7177 matched.reverse(); 7178 } 7179 } 7180 7181 return this.pushStack( matched ); 7182 }; 7183} ); 7184var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); 7185 7186 7187 7188// Convert String-formatted options into Object-formatted ones 7189function createOptions( options ) { 7190 var object = {}; 7191 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { 7192 object[ flag ] = true; 7193 } ); 7194 return object; 7195} 7196 7197/* 7198 * Create a callback list using the following parameters: 7199 * 7200 * options: an optional list of space-separated options that will change how 7201 * the callback list behaves or a more traditional option object 7202 * 7203 * By default a callback list will act like an event callback list and can be 7204 * "fired" multiple times. 7205 * 7206 * Possible options: 7207 * 7208 * once: will ensure the callback list can only be fired once (like a Deferred) 7209 * 7210 * memory: will keep track of previous values and will call any callback added 7211 * after the list has been fired right away with the latest "memorized" 7212 * values (like a Deferred) 7213 * 7214 * unique: will ensure a callback can only be added once (no duplicate in the list) 7215 * 7216 * stopOnFalse: interrupt callings when a callback returns false 7217 * 7218 */ 7219jQuery.Callbacks = function( options ) { 7220 7221 // Convert options from String-formatted to Object-formatted if needed 7222 // (we check in cache first) 7223 options = typeof options === "string" ? 7224 createOptions( options ) : 7225 jQuery.extend( {}, options ); 7226 7227 var // Flag to know if list is currently firing 7228 firing, 7229 7230 // Last fire value for non-forgettable lists 7231 memory, 7232 7233 // Flag to know if list was already fired 7234 fired, 7235 7236 // Flag to prevent firing 7237 locked, 7238 7239 // Actual callback list 7240 list = [], 7241 7242 // Queue of execution data for repeatable lists 7243 queue = [], 7244 7245 // Index of currently firing callback (modified by add/remove as needed) 7246 firingIndex = -1, 7247 7248 // Fire callbacks 7249 fire = function() { 7250 7251 // Enforce single-firing 7252 locked = locked || options.once; 7253 7254 // Execute callbacks for all pending executions, 7255 // respecting firingIndex overrides and runtime changes 7256 fired = firing = true; 7257 for ( ; queue.length; firingIndex = -1 ) { 7258 memory = queue.shift(); 7259 while ( ++firingIndex < list.length ) { 7260 7261 // Run callback and check for early termination 7262 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && 7263 options.stopOnFalse ) { 7264 7265 // Jump to end and forget the data so .add doesn't re-fire 7266 firingIndex = list.length; 7267 memory = false; 7268 } 7269 } 7270 } 7271 7272 // Forget the data if we're done with it 7273 if ( !options.memory ) { 7274 memory = false; 7275 } 7276 7277 firing = false; 7278 7279 // Clean up if we're done firing for good 7280 if ( locked ) { 7281 7282 // Keep an empty list if we have data for future add calls 7283 if ( memory ) { 7284 list = []; 7285 7286 // Otherwise, this object is spent 7287 } else { 7288 list = ""; 7289 } 7290 } 7291 }, 7292 7293 // Actual Callbacks object 7294 self = { 7295 7296 // Add a callback or a collection of callbacks to the list 7297 add: function() { 7298 if ( list ) { 7299 7300 // If we have memory from a past run, we should fire after adding 7301 if ( memory && !firing ) { 7302 firingIndex = list.length - 1; 7303 queue.push( memory ); 7304 } 7305 7306 ( function add( args ) { 7307 jQuery.each( args, function( _, arg ) { 7308 if ( isFunction( arg ) ) { 7309 if ( !options.unique || !self.has( arg ) ) { 7310 list.push( arg ); 7311 } 7312 } else if ( arg && arg.length && toType( arg ) !== "string" ) { 7313 7314 // Inspect recursively 7315 add( arg ); 7316 } 7317 } ); 7318 } )( arguments ); 7319 7320 if ( memory && !firing ) { 7321 fire(); 7322 } 7323 } 7324 return this; 7325 }, 7326 7327 // Remove a callback from the list 7328 remove: function() { 7329 jQuery.each( arguments, function( _, arg ) { 7330 var index; 7331 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { 7332 list.splice( index, 1 ); 7333 7334 // Handle firing indexes 7335 if ( index <= firingIndex ) { 7336 firingIndex--; 7337 } 7338 } 7339 } ); 7340 return this; 7341 }, 7342 7343 // Check if a given callback is in the list. 7344 // If no argument is given, return whether or not list has callbacks attached. 7345 has: function( fn ) { 7346 return fn ? 7347 jQuery.inArray( fn, list ) > -1 : 7348 list.length > 0; 7349 }, 7350 7351 // Remove all callbacks from the list 7352 empty: function() { 7353 if ( list ) { 7354 list = []; 7355 } 7356 return this; 7357 }, 7358 7359 // Disable .fire and .add 7360 // Abort any current/pending executions 7361 // Clear all callbacks and values 7362 disable: function() { 7363 locked = queue = []; 7364 list = memory = ""; 7365 return this; 7366 }, 7367 disabled: function() { 7368 return !list; 7369 }, 7370 7371 // Disable .fire 7372 // Also disable .add unless we have memory (since it would have no effect) 7373 // Abort any pending executions 7374 lock: function() { 7375 locked = queue = []; 7376 if ( !memory && !firing ) { 7377 list = memory = ""; 7378 } 7379 return this; 7380 }, 7381 locked: function() { 7382 return !!locked; 7383 }, 7384 7385 // Call all callbacks with the given context and arguments 7386 fireWith: function( context, args ) { 7387 if ( !locked ) { 7388 args = args || []; 7389 args = [ context, args.slice ? args.slice() : args ]; 7390 queue.push( args ); 7391 if ( !firing ) { 7392 fire(); 7393 } 7394 } 7395 return this; 7396 }, 7397 7398 // Call all the callbacks with the given arguments 7399 fire: function() { 7400 self.fireWith( this, arguments ); 7401 return this; 7402 }, 7403 7404 // To know if the callbacks have already been called at least once 7405 fired: function() { 7406 return !!fired; 7407 } 7408 }; 7409 7410 return self; 7411}; 7412 7413 7414function Identity( v ) { 7415 return v; 7416} 7417function Thrower( ex ) { 7418 throw ex; 7419} 7420 7421function adoptValue( value, resolve, reject, noValue ) { 7422 var method; 7423 7424 try { 7425 7426 // Check for promise aspect first to privilege synchronous behavior 7427 if ( value && isFunction( ( method = value.promise ) ) ) { 7428 method.call( value ).done( resolve ).fail( reject ); 7429 7430 // Other thenables 7431 } else if ( value && isFunction( ( method = value.then ) ) ) { 7432 method.call( value, resolve, reject ); 7433 7434 // Other non-thenables 7435 } else { 7436 7437 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: 7438 // * false: [ value ].slice( 0 ) => resolve( value ) 7439 // * true: [ value ].slice( 1 ) => resolve() 7440 resolve.apply( undefined, [ value ].slice( noValue ) ); 7441 } 7442 7443 // For Promises/A+, convert exceptions into rejections 7444 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in 7445 // Deferred#then to conditionally suppress rejection. 7446 } catch ( value ) { 7447 7448 // Support: Android 4.0 only 7449 // Strict mode functions invoked without .call/.apply get global-object context 7450 reject.apply( undefined, [ value ] ); 7451 } 7452} 7453 7454jQuery.extend( { 7455 7456 Deferred: function( func ) { 7457 var tuples = [ 7458 7459 // action, add listener, callbacks, 7460 // ... .then handlers, argument index, [final state] 7461 [ "notify", "progress", jQuery.Callbacks( "memory" ), 7462 jQuery.Callbacks( "memory" ), 2 ], 7463 [ "resolve", "done", jQuery.Callbacks( "once memory" ), 7464 jQuery.Callbacks( "once memory" ), 0, "resolved" ], 7465 [ "reject", "fail", jQuery.Callbacks( "once memory" ), 7466 jQuery.Callbacks( "once memory" ), 1, "rejected" ] 7467 ], 7468 state = "pending", 7469 promise = { 7470 state: function() { 7471 return state; 7472 }, 7473 always: function() { 7474 deferred.done( arguments ).fail( arguments ); 7475 return this; 7476 }, 7477 "catch": function( fn ) { 7478 return promise.then( null, fn ); 7479 }, 7480 7481 // Keep pipe for back-compat 7482 pipe: function( /* fnDone, fnFail, fnProgress */ ) { 7483 var fns = arguments; 7484 7485 return jQuery.Deferred( function( newDefer ) { 7486 jQuery.each( tuples, function( _i, tuple ) { 7487 7488 // Map tuples (progress, done, fail) to arguments (done, fail, progress) 7489 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; 7490 7491 // deferred.progress(function() { bind to newDefer or newDefer.notify }) 7492 // deferred.done(function() { bind to newDefer or newDefer.resolve }) 7493 // deferred.fail(function() { bind to newDefer or newDefer.reject }) 7494 deferred[ tuple[ 1 ] ]( function() { 7495 var returned = fn && fn.apply( this, arguments ); 7496 if ( returned && isFunction( returned.promise ) ) { 7497 returned.promise() 7498 .progress( newDefer.notify ) 7499 .done( newDefer.resolve ) 7500 .fail( newDefer.reject ); 7501 } else { 7502 newDefer[ tuple[ 0 ] + "With" ]( 7503 this, 7504 fn ? [ returned ] : arguments 7505 ); 7506 } 7507 } ); 7508 } ); 7509 fns = null; 7510 } ).promise(); 7511 }, 7512 then: function( onFulfilled, onRejected, onProgress ) { 7513 var maxDepth = 0; 7514 function resolve( depth, deferred, handler, special ) { 7515 return function() { 7516 var that = this, 7517 args = arguments, 7518 mightThrow = function() { 7519 var returned, then; 7520 7521 // Support: Promises/A+ section 2.3.3.3.3 7522 // https://promisesaplus.com/#point-59 7523 // Ignore double-resolution attempts 7524 if ( depth < maxDepth ) { 7525 return; 7526 } 7527 7528 returned = handler.apply( that, args ); 7529 7530 // Support: Promises/A+ section 2.3.1 7531 // https://promisesaplus.com/#point-48 7532 if ( returned === deferred.promise() ) { 7533 throw new TypeError( "Thenable self-resolution" ); 7534 } 7535 7536 // Support: Promises/A+ sections 2.3.3.1, 3.5 7537 // https://promisesaplus.com/#point-54 7538 // https://promisesaplus.com/#point-75 7539 // Retrieve `then` only once 7540 then = returned && 7541 7542 // Support: Promises/A+ section 2.3.4 7543 // https://promisesaplus.com/#point-64 7544 // Only check objects and functions for thenability 7545 ( typeof returned === "object" || 7546 typeof returned === "function" ) && 7547 returned.then; 7548 7549 // Handle a returned thenable 7550 if ( isFunction( then ) ) { 7551 7552 // Special processors (notify) just wait for resolution 7553 if ( special ) { 7554 then.call( 7555 returned, 7556 resolve( maxDepth, deferred, Identity, special ), 7557 resolve( maxDepth, deferred, Thrower, special ) 7558 ); 7559 7560 // Normal processors (resolve) also hook into progress 7561 } else { 7562 7563 // ...and disregard older resolution values 7564 maxDepth++; 7565 7566 then.call( 7567 returned, 7568 resolve( maxDepth, deferred, Identity, special ), 7569 resolve( maxDepth, deferred, Thrower, special ), 7570 resolve( maxDepth, deferred, Identity, 7571 deferred.notifyWith ) 7572 ); 7573 } 7574 7575 // Handle all other returned values 7576 } else { 7577 7578 // Only substitute handlers pass on context 7579 // and multiple values (non-spec behavior) 7580 if ( handler !== Identity ) { 7581 that = undefined; 7582 args = [ returned ]; 7583 } 7584 7585 // Process the value(s) 7586 // Default process is resolve 7587 ( special || deferred.resolveWith )( that, args ); 7588 } 7589 }, 7590 7591 // Only normal processors (resolve) catch and reject exceptions 7592 process = special ? 7593 mightThrow : 7594 function() { 7595 try { 7596 mightThrow(); 7597 } catch ( e ) { 7598 7599 if ( jQuery.Deferred.exceptionHook ) { 7600 jQuery.Deferred.exceptionHook( e, 7601 process.error ); 7602 } 7603 7604 // Support: Promises/A+ section 2.3.3.3.4.1 7605 // https://promisesaplus.com/#point-61 7606 // Ignore post-resolution exceptions 7607 if ( depth + 1 >= maxDepth ) { 7608 7609 // Only substitute handlers pass on context 7610 // and multiple values (non-spec behavior) 7611 if ( handler !== Thrower ) { 7612 that = undefined; 7613 args = [ e ]; 7614 } 7615 7616 deferred.rejectWith( that, args ); 7617 } 7618 } 7619 }; 7620 7621 // Support: Promises/A+ section 2.3.3.3.1 7622 // https://promisesaplus.com/#point-57 7623 // Re-resolve promises immediately to dodge false rejection from 7624 // subsequent errors 7625 if ( depth ) { 7626 process(); 7627 } else { 7628 7629 // Call an optional hook to record the error, in case of exception 7630 // since it's otherwise lost when execution goes async 7631 if ( jQuery.Deferred.getErrorHook ) { 7632 process.error = jQuery.Deferred.getErrorHook(); 7633 7634 // The deprecated alias of the above. While the name suggests 7635 // returning the stack, not an error instance, jQuery just passes 7636 // it directly to `console.warn` so both will work; an instance 7637 // just better cooperates with source maps. 7638 } else if ( jQuery.Deferred.getStackHook ) { 7639 process.error = jQuery.Deferred.getStackHook(); 7640 } 7641 window.setTimeout( process ); 7642 } 7643 }; 7644 } 7645 7646 return jQuery.Deferred( function( newDefer ) { 7647 7648 // progress_handlers.add( ... ) 7649 tuples[ 0 ][ 3 ].add( 7650 resolve( 7651 0, 7652 newDefer, 7653 isFunction( onProgress ) ? 7654 onProgress : 7655 Identity, 7656 newDefer.notifyWith 7657 ) 7658 ); 7659 7660 // fulfilled_handlers.add( ... ) 7661 tuples[ 1 ][ 3 ].add( 7662 resolve( 7663 0, 7664 newDefer, 7665 isFunction( onFulfilled ) ? 7666 onFulfilled : 7667 Identity 7668 ) 7669 ); 7670 7671 // rejected_handlers.add( ... ) 7672 tuples[ 2 ][ 3 ].add( 7673 resolve( 7674 0, 7675 newDefer, 7676 isFunction( onRejected ) ? 7677 onRejected : 7678 Thrower 7679 ) 7680 ); 7681 } ).promise(); 7682 }, 7683 7684 // Get a promise for this deferred 7685 // If obj is provided, the promise aspect is added to the object 7686 promise: function( obj ) { 7687 return obj != null ? jQuery.extend( obj, promise ) : promise; 7688 } 7689 }, 7690 deferred = {}; 7691 7692 // Add list-specific methods 7693 jQuery.each( tuples, function( i, tuple ) { 7694 var list = tuple[ 2 ], 7695 stateString = tuple[ 5 ]; 7696 7697 // promise.progress = list.add 7698 // promise.done = list.add 7699 // promise.fail = list.add 7700 promise[ tuple[ 1 ] ] = list.add; 7701 7702 // Handle state 7703 if ( stateString ) { 7704 list.add( 7705 function() { 7706 7707 // state = "resolved" (i.e., fulfilled) 7708 // state = "rejected" 7709 state = stateString; 7710 }, 7711 7712 // rejected_callbacks.disable 7713 // fulfilled_callbacks.disable 7714 tuples[ 3 - i ][ 2 ].disable, 7715 7716 // rejected_handlers.disable 7717 // fulfilled_handlers.disable 7718 tuples[ 3 - i ][ 3 ].disable, 7719 7720 // progress_callbacks.lock 7721 tuples[ 0 ][ 2 ].lock, 7722 7723 // progress_handlers.lock 7724 tuples[ 0 ][ 3 ].lock 7725 ); 7726 } 7727 7728 // progress_handlers.fire 7729 // fulfilled_handlers.fire 7730 // rejected_handlers.fire 7731 list.add( tuple[ 3 ].fire ); 7732 7733 // deferred.notify = function() { deferred.notifyWith(...) } 7734 // deferred.resolve = function() { deferred.resolveWith(...) } 7735 // deferred.reject = function() { deferred.rejectWith(...) } 7736 deferred[ tuple[ 0 ] ] = function() { 7737 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); 7738 return this; 7739 }; 7740 7741 // deferred.notifyWith = list.fireWith 7742 // deferred.resolveWith = list.fireWith 7743 // deferred.rejectWith = list.fireWith 7744 deferred[ tuple[ 0 ] + "With" ] = list.fireWith; 7745 } ); 7746 7747 // Make the deferred a promise 7748 promise.promise( deferred ); 7749 7750 // Call given func if any 7751 if ( func ) { 7752 func.call( deferred, deferred ); 7753 } 7754 7755 // All done! 7756 return deferred; 7757 }, 7758 7759 // Deferred helper 7760 when: function( singleValue ) { 7761 var 7762 7763 // count of uncompleted subordinates 7764 remaining = arguments.length, 7765 7766 // count of unprocessed arguments 7767 i = remaining, 7768 7769 // subordinate fulfillment data 7770 resolveContexts = Array( i ), 7771 resolveValues = slice.call( arguments ), 7772 7773 // the primary Deferred 7774 primary = jQuery.Deferred(), 7775 7776 // subordinate callback factory 7777 updateFunc = function( i ) { 7778 return function( value ) { 7779 resolveContexts[ i ] = this; 7780 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; 7781 if ( !( --remaining ) ) { 7782 primary.resolveWith( resolveContexts, resolveValues ); 7783 } 7784 }; 7785 }; 7786 7787 // Single- and empty arguments are adopted like Promise.resolve 7788 if ( remaining <= 1 ) { 7789 adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, 7790 !remaining ); 7791 7792 // Use .then() to unwrap secondary thenables (cf. gh-3000) 7793 if ( primary.state() === "pending" || 7794 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { 7795 7796 return primary.then(); 7797 } 7798 } 7799 7800 // Multiple arguments are aggregated like Promise.all array elements 7801 while ( i-- ) { 7802 adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); 7803 } 7804 7805 return primary.promise(); 7806 } 7807} ); 7808 7809 7810// These usually indicate a programmer mistake during development, 7811// warn about them ASAP rather than swallowing them by default. 7812var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 7813 7814// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error 7815// captured before the async barrier to get the original error cause 7816// which may otherwise be hidden. 7817jQuery.Deferred.exceptionHook = function( error, asyncError ) { 7818 7819 // Support: IE 8 - 9 only 7820 // Console exists when dev tools are open, which can happen at any time 7821 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 7822 window.console.warn( "jQuery.Deferred exception: " + error.message, 7823 error.stack, asyncError ); 7824 } 7825}; 7826 7827 7828 7829 7830jQuery.readyException = function( error ) { 7831 window.setTimeout( function() { 7832 throw error; 7833 } ); 7834}; 7835 7836 7837 7838 7839// The deferred used on DOM ready 7840var readyList = jQuery.Deferred(); 7841 7842jQuery.fn.ready = function( fn ) { 7843 7844 readyList 7845 .then( fn ) 7846 7847 // Wrap jQuery.readyException in a function so that the lookup 7848 // happens at the time of error handling instead of callback 7849 // registration. 7850 .catch( function( error ) { 7851 jQuery.readyException( error ); 7852 } ); 7853 7854 return this; 7855}; 7856 7857jQuery.extend( { 7858 7859 // Is the DOM ready to be used? Set to true once it occurs. 7860 isReady: false, 7861 7862 // A counter to track how many items to wait for before 7863 // the ready event fires. See trac-6781 7864 readyWait: 1, 7865 7866 // Handle when the DOM is ready 7867 ready: function( wait ) { 7868 7869 // Abort if there are pending holds or we're already ready 7870 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { 7871 return; 7872 } 7873 7874 // Remember that the DOM is ready 7875 jQuery.isReady = true; 7876 7877 // If a normal DOM Ready event fired, decrement, and wait if need be 7878 if ( wait !== true && --jQuery.readyWait > 0 ) { 7879 return; 7880 } 7881 7882 // If there are functions bound, to execute 7883 readyList.resolveWith( document, [ jQuery ] ); 7884 } 7885} ); 7886 7887jQuery.ready.then = readyList.then; 7888 7889// The ready event handler and self cleanup method 7890function completed() { 7891 document.removeEventListener( "DOMContentLoaded", completed ); 7892 window.removeEventListener( "load", completed ); 7893 jQuery.ready(); 7894} 7895 7896// Catch cases where $(document).ready() is called 7897// after the browser event has already occurred. 7898// Support: IE <=9 - 10 only 7899// Older IE sometimes signals "interactive" too soon 7900if ( document.readyState === "complete" || 7901 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { 7902 7903 // Handle it asynchronously to allow scripts the opportunity to delay ready 7904 window.setTimeout( jQuery.ready ); 7905 7906} else { 7907 7908 // Use the handy event callback 7909 document.addEventListener( "DOMContentLoaded", completed ); 7910 7911 // A fallback to window.onload, that will always work 7912 window.addEventListener( "load", completed ); 7913} 7914 7915 7916 7917 7918// Multifunctional method to get and set values of a collection 7919// The value/s can optionally be executed if it's a function 7920var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 7921 var i = 0, 7922 len = elems.length, 7923 bulk = key == null; 7924 7925 // Sets many values 7926 if ( toType( key ) === "object" ) { 7927 chainable = true; 7928 for ( i in key ) { 7929 access( elems, fn, i, key[ i ], true, emptyGet, raw ); 7930 } 7931 7932 // Sets one value 7933 } else if ( value !== undefined ) { 7934 chainable = true; 7935 7936 if ( !isFunction( value ) ) { 7937 raw = true; 7938 } 7939 7940 if ( bulk ) { 7941 7942 // Bulk operations run against the entire set 7943 if ( raw ) { 7944 fn.call( elems, value ); 7945 fn = null; 7946 7947 // ...except when executing function values 7948 } else { 7949 bulk = fn; 7950 fn = function( elem, _key, value ) { 7951 return bulk.call( jQuery( elem ), value ); 7952 }; 7953 } 7954 } 7955 7956 if ( fn ) { 7957 for ( ; i < len; i++ ) { 7958 fn( 7959 elems[ i ], key, raw ? 7960 value : 7961 value.call( elems[ i ], i, fn( elems[ i ], key ) ) 7962 ); 7963 } 7964 } 7965 } 7966 7967 if ( chainable ) { 7968 return elems; 7969 } 7970 7971 // Gets 7972 if ( bulk ) { 7973 return fn.call( elems ); 7974 } 7975 7976 return len ? fn( elems[ 0 ], key ) : emptyGet; 7977}; 7978 7979 7980// Matches dashed string for camelizing 7981var rmsPrefix = /^-ms-/, 7982 rdashAlpha = /-([a-z])/g; 7983 7984// Used by camelCase as callback to replace() 7985function fcamelCase( _all, letter ) { 7986 return letter.toUpperCase(); 7987} 7988 7989// Convert dashed to camelCase; used by the css and data modules 7990// Support: IE <=9 - 11, Edge 12 - 15 7991// Microsoft forgot to hump their vendor prefix (trac-9572) 7992function camelCase( string ) { 7993 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 7994} 7995var acceptData = function( owner ) { 7996 7997 // Accepts only: 7998 // - Node 7999 // - Node.ELEMENT_NODE 8000 // - Node.DOCUMENT_NODE 8001 // - Object 8002 // - Any 8003 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 8004}; 8005 8006 8007 8008 8009function Data() { 8010 this.expando = jQuery.expando + Data.uid++; 8011} 8012 8013Data.uid = 1; 8014 8015Data.prototype = { 8016 8017 cache: function( owner ) { 8018 8019 // Check if the owner object already has a cache 8020 var value = owner[ this.expando ]; 8021 8022 // If not, create one 8023 if ( !value ) { 8024 value = {}; 8025 8026 // We can accept data for non-element nodes in modern browsers, 8027 // but we should not, see trac-8335. 8028 // Always return an empty object. 8029 if ( acceptData( owner ) ) { 8030 8031 // If it is a node unlikely to be stringify-ed or looped over 8032 // use plain assignment 8033 if ( owner.nodeType ) { 8034 owner[ this.expando ] = value; 8035 8036 // Otherwise secure it in a non-enumerable property 8037 // configurable must be true to allow the property to be 8038 // deleted when data is removed 8039 } else { 8040 Object.defineProperty( owner, this.expando, { 8041 value: value, 8042 configurable: true 8043 } ); 8044 } 8045 } 8046 } 8047 8048 return value; 8049 }, 8050 set: function( owner, data, value ) { 8051 var prop, 8052 cache = this.cache( owner ); 8053 8054 // Handle: [ owner, key, value ] args 8055 // Always use camelCase key (gh-2257) 8056 if ( typeof data === "string" ) { 8057 cache[ camelCase( data ) ] = value; 8058 8059 // Handle: [ owner, { properties } ] args 8060 } else { 8061 8062 // Copy the properties one-by-one to the cache object 8063 for ( prop in data ) { 8064 cache[ camelCase( prop ) ] = data[ prop ]; 8065 } 8066 } 8067 return cache; 8068 }, 8069 get: function( owner, key ) { 8070 return key === undefined ? 8071 this.cache( owner ) : 8072 8073 // Always use camelCase key (gh-2257) 8074 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; 8075 }, 8076 access: function( owner, key, value ) { 8077 8078 // In cases where either: 8079 // 8080 // 1. No key was specified 8081 // 2. A string key was specified, but no value provided 8082 // 8083 // Take the "read" path and allow the get method to determine 8084 // which value to return, respectively either: 8085 // 8086 // 1. The entire cache object 8087 // 2. The data stored at the key 8088 // 8089 if ( key === undefined || 8090 ( ( key && typeof key === "string" ) && value === undefined ) ) { 8091 8092 return this.get( owner, key ); 8093 } 8094 8095 // When the key is not a string, or both a key and value 8096 // are specified, set or extend (existing objects) with either: 8097 // 8098 // 1. An object of properties 8099 // 2. A key and value 8100 // 8101 this.set( owner, key, value ); 8102 8103 // Since the "set" path can have two possible entry points 8104 // return the expected data based on which path was taken[*] 8105 return value !== undefined ? value : key; 8106 }, 8107 remove: function( owner, key ) { 8108 var i, 8109 cache = owner[ this.expando ]; 8110 8111 if ( cache === undefined ) { 8112 return; 8113 } 8114 8115 if ( key !== undefined ) { 8116 8117 // Support array or space separated string of keys 8118 if ( Array.isArray( key ) ) { 8119 8120 // If key is an array of keys... 8121 // We always set camelCase keys, so remove that. 8122 key = key.map( camelCase ); 8123 } else { 8124 key = camelCase( key ); 8125 8126 // If a key with the spaces exists, use it. 8127 // Otherwise, create an array by matching non-whitespace 8128 key = key in cache ? 8129 [ key ] : 8130 ( key.match( rnothtmlwhite ) || [] ); 8131 } 8132 8133 i = key.length; 8134 8135 while ( i-- ) { 8136 delete cache[ key[ i ] ]; 8137 } 8138 } 8139 8140 // Remove the expando if there's no more data 8141 if ( key === undefined || jQuery.isEmptyObject( cache ) ) { 8142 8143 // Support: Chrome <=35 - 45 8144 // Webkit & Blink performance suffers when deleting properties 8145 // from DOM nodes, so set to undefined instead 8146 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) 8147 if ( owner.nodeType ) { 8148 owner[ this.expando ] = undefined; 8149 } else { 8150 delete owner[ this.expando ]; 8151 } 8152 } 8153 }, 8154 hasData: function( owner ) { 8155 var cache = owner[ this.expando ]; 8156 return cache !== undefined && !jQuery.isEmptyObject( cache ); 8157 } 8158}; 8159var dataPriv = new Data(); 8160 8161var dataUser = new Data(); 8162 8163 8164 8165// Implementation Summary 8166// 8167// 1. Enforce API surface and semantic compatibility with 1.9.x branch 8168// 2. Improve the module's maintainability by reducing the storage 8169// paths to a single mechanism. 8170// 3. Use the same single mechanism to support "private" and "user" data. 8171// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) 8172// 5. Avoid exposing implementation details on user objects (eg. expando properties) 8173// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 8174 8175var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, 8176 rmultiDash = /[A-Z]/g; 8177 8178function getData( data ) { 8179 if ( data === "true" ) { 8180 return true; 8181 } 8182 8183 if ( data === "false" ) { 8184 return false; 8185 } 8186 8187 if ( data === "null" ) { 8188 return null; 8189 } 8190 8191 // Only convert to a number if it doesn't change the string 8192 if ( data === +data + "" ) { 8193 return +data; 8194 } 8195 8196 if ( rbrace.test( data ) ) { 8197 return JSON.parse( data ); 8198 } 8199 8200 return data; 8201} 8202 8203function dataAttr( elem, key, data ) { 8204 var name; 8205 8206 // If nothing was found internally, try to fetch any 8207 // data from the HTML5 data-* attribute 8208 if ( data === undefined && elem.nodeType === 1 ) { 8209 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); 8210 data = elem.getAttribute( name ); 8211 8212 if ( typeof data === "string" ) { 8213 try { 8214 data = getData( data ); 8215 } catch ( e ) {} 8216 8217 // Make sure we set the data so it isn't changed later 8218 dataUser.set( elem, key, data ); 8219 } else { 8220 data = undefined; 8221 } 8222 } 8223 return data; 8224} 8225 8226jQuery.extend( { 8227 hasData: function( elem ) { 8228 return dataUser.hasData( elem ) || dataPriv.hasData( elem ); 8229 }, 8230 8231 data: function( elem, name, data ) { 8232 return dataUser.access( elem, name, data ); 8233 }, 8234 8235 removeData: function( elem, name ) { 8236 dataUser.remove( elem, name ); 8237 }, 8238 8239 // TODO: Now that all calls to _data and _removeData have been replaced 8240 // with direct calls to dataPriv methods, these can be deprecated. 8241 _data: function( elem, name, data ) { 8242 return dataPriv.access( elem, name, data ); 8243 }, 8244 8245 _removeData: function( elem, name ) { 8246 dataPriv.remove( elem, name ); 8247 } 8248} ); 8249 8250jQuery.fn.extend( { 8251 data: function( key, value ) { 8252 var i, name, data, 8253 elem = this[ 0 ], 8254 attrs = elem && elem.attributes; 8255 8256 // Gets all values 8257 if ( key === undefined ) { 8258 if ( this.length ) { 8259 data = dataUser.get( elem ); 8260 8261 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { 8262 i = attrs.length; 8263 while ( i-- ) { 8264 8265 // Support: IE 11 only 8266 // The attrs elements can be null (trac-14894) 8267 if ( attrs[ i ] ) { 8268 name = attrs[ i ].name; 8269 if ( name.indexOf( "data-" ) === 0 ) { 8270 name = camelCase( name.slice( 5 ) ); 8271 dataAttr( elem, name, data[ name ] ); 8272 } 8273 } 8274 } 8275 dataPriv.set( elem, "hasDataAttrs", true ); 8276 } 8277 } 8278 8279 return data; 8280 } 8281 8282 // Sets multiple values 8283 if ( typeof key === "object" ) { 8284 return this.each( function() { 8285 dataUser.set( this, key ); 8286 } ); 8287 } 8288 8289 return access( this, function( value ) { 8290 var data; 8291 8292 // The calling jQuery object (element matches) is not empty 8293 // (and therefore has an element appears at this[ 0 ]) and the 8294 // `value` parameter was not undefined. An empty jQuery object 8295 // will result in `undefined` for elem = this[ 0 ] which will 8296 // throw an exception if an attempt to read a data cache is made. 8297 if ( elem && value === undefined ) { 8298 8299 // Attempt to get data from the cache 8300 // The key will always be camelCased in Data 8301 data = dataUser.get( elem, key ); 8302 if ( data !== undefined ) { 8303 return data; 8304 } 8305 8306 // Attempt to "discover" the data in 8307 // HTML5 custom data-* attrs 8308 data = dataAttr( elem, key ); 8309 if ( data !== undefined ) { 8310 return data; 8311 } 8312 8313 // We tried really hard, but the data doesn't exist. 8314 return; 8315 } 8316 8317 // Set the data... 8318 this.each( function() { 8319 8320 // We always store the camelCased key 8321 dataUser.set( this, key, value ); 8322 } ); 8323 }, null, value, arguments.length > 1, null, true ); 8324 }, 8325 8326 removeData: function( key ) { 8327 return this.each( function() { 8328 dataUser.remove( this, key ); 8329 } ); 8330 } 8331} ); 8332 8333 8334jQuery.extend( { 8335 queue: function( elem, type, data ) { 8336 var queue; 8337 8338 if ( elem ) { 8339 type = ( type || "fx" ) + "queue"; 8340 queue = dataPriv.get( elem, type ); 8341 8342 // Speed up dequeue by getting out quickly if this is just a lookup 8343 if ( data ) { 8344 if ( !queue || Array.isArray( data ) ) { 8345 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); 8346 } else { 8347 queue.push( data ); 8348 } 8349 } 8350 return queue || []; 8351 } 8352 }, 8353 8354 dequeue: function( elem, type ) { 8355 type = type || "fx"; 8356 8357 var queue = jQuery.queue( elem, type ), 8358 startLength = queue.length, 8359 fn = queue.shift(), 8360 hooks = jQuery._queueHooks( elem, type ), 8361 next = function() { 8362 jQuery.dequeue( elem, type ); 8363 }; 8364 8365 // If the fx queue is dequeued, always remove the progress sentinel 8366 if ( fn === "inprogress" ) { 8367 fn = queue.shift(); 8368 startLength--; 8369 } 8370 8371 if ( fn ) { 8372 8373 // Add a progress sentinel to prevent the fx queue from being 8374 // automatically dequeued 8375 if ( type === "fx" ) { 8376 queue.unshift( "inprogress" ); 8377 } 8378 8379 // Clear up the last queue stop function 8380 delete hooks.stop; 8381 fn.call( elem, next, hooks ); 8382 } 8383 8384 if ( !startLength && hooks ) { 8385 hooks.empty.fire(); 8386 } 8387 }, 8388 8389 // Not public - generate a queueHooks object, or return the current one 8390 _queueHooks: function( elem, type ) { 8391 var key = type + "queueHooks"; 8392 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { 8393 empty: jQuery.Callbacks( "once memory" ).add( function() { 8394 dataPriv.remove( elem, [ type + "queue", key ] ); 8395 } ) 8396 } ); 8397 } 8398} ); 8399 8400jQuery.fn.extend( { 8401 queue: function( type, data ) { 8402 var setter = 2; 8403 8404 if ( typeof type !== "string" ) { 8405 data = type; 8406 type = "fx"; 8407 setter--; 8408 } 8409 8410 if ( arguments.length < setter ) { 8411 return jQuery.queue( this[ 0 ], type ); 8412 } 8413 8414 return data === undefined ? 8415 this : 8416 this.each( function() { 8417 var queue = jQuery.queue( this, type, data ); 8418 8419 // Ensure a hooks for this queue 8420 jQuery._queueHooks( this, type ); 8421 8422 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { 8423 jQuery.dequeue( this, type ); 8424 } 8425 } ); 8426 }, 8427 dequeue: function( type ) { 8428 return this.each( function() { 8429 jQuery.dequeue( this, type ); 8430 } ); 8431 }, 8432 clearQueue: function( type ) { 8433 return this.queue( type || "fx", [] ); 8434 }, 8435 8436 // Get a promise resolved when queues of a certain type 8437 // are emptied (fx is the type by default) 8438 promise: function( type, obj ) { 8439 var tmp, 8440 count = 1, 8441 defer = jQuery.Deferred(), 8442 elements = this, 8443 i = this.length, 8444 resolve = function() { 8445 if ( !( --count ) ) { 8446 defer.resolveWith( elements, [ elements ] ); 8447 } 8448 }; 8449 8450 if ( typeof type !== "string" ) { 8451 obj = type; 8452 type = undefined; 8453 } 8454 type = type || "fx"; 8455 8456 while ( i-- ) { 8457 tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); 8458 if ( tmp && tmp.empty ) { 8459 count++; 8460 tmp.empty.add( resolve ); 8461 } 8462 } 8463 resolve(); 8464 return defer.promise( obj ); 8465 } 8466} ); 8467var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 8468 8469var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 8470 8471 8472var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; 8473 8474var documentElement = document.documentElement; 8475 8476 8477 8478 var isAttached = function( elem ) { 8479 return jQuery.contains( elem.ownerDocument, elem ); 8480 }, 8481 composed = { composed: true }; 8482 8483 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only 8484 // Check attachment across shadow DOM boundaries when possible (gh-3504) 8485 // Support: iOS 10.0-10.2 only 8486 // Early iOS 10 versions support `attachShadow` but not `getRootNode`, 8487 // leading to errors. We need to check for `getRootNode`. 8488 if ( documentElement.getRootNode ) { 8489 isAttached = function( elem ) { 8490 return jQuery.contains( elem.ownerDocument, elem ) || 8491 elem.getRootNode( composed ) === elem.ownerDocument; 8492 }; 8493 } 8494var isHiddenWithinTree = function( elem, el ) { 8495 8496 // isHiddenWithinTree might be called from jQuery#filter function; 8497 // in that case, element will be second argument 8498 elem = el || elem; 8499 8500 // Inline style trumps all 8501 return elem.style.display === "none" || 8502 elem.style.display === "" && 8503 8504 // Otherwise, check computed style 8505 // Support: Firefox <=43 - 45 8506 // Disconnected elements can have computed display: none, so first confirm that elem is 8507 // in the document. 8508 isAttached( elem ) && 8509 8510 jQuery.css( elem, "display" ) === "none"; 8511 }; 8512 8513 8514 8515function adjustCSS( elem, prop, valueParts, tween ) { 8516 var adjusted, scale, 8517 maxIterations = 20, 8518 currentValue = tween ? 8519 function() { 8520 return tween.cur(); 8521 } : 8522 function() { 8523 return jQuery.css( elem, prop, "" ); 8524 }, 8525 initial = currentValue(), 8526 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), 8527 8528 // Starting value computation is required for potential unit mismatches 8529 initialInUnit = elem.nodeType && 8530 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && 8531 rcssNum.exec( jQuery.css( elem, prop ) ); 8532 8533 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { 8534 8535 // Support: Firefox <=54 8536 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) 8537 initial = initial / 2; 8538 8539 // Trust units reported by jQuery.css 8540 unit = unit || initialInUnit[ 3 ]; 8541 8542 // Iteratively approximate from a nonzero starting point 8543 initialInUnit = +initial || 1; 8544 8545 while ( maxIterations-- ) { 8546 8547 // Evaluate and update our best guess (doubling guesses that zero out). 8548 // Finish if the scale equals or crosses 1 (making the old*new product non-positive). 8549 jQuery.style( elem, prop, initialInUnit + unit ); 8550 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { 8551 maxIterations = 0; 8552 } 8553 initialInUnit = initialInUnit / scale; 8554 8555 } 8556 8557 initialInUnit = initialInUnit * 2; 8558 jQuery.style( elem, prop, initialInUnit + unit ); 8559 8560 // Make sure we update the tween properties later on 8561 valueParts = valueParts || []; 8562 } 8563 8564 if ( valueParts ) { 8565 initialInUnit = +initialInUnit || +initial || 0; 8566 8567 // Apply relative offset (+=/-=) if specified 8568 adjusted = valueParts[ 1 ] ? 8569 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : 8570 +valueParts[ 2 ]; 8571 if ( tween ) { 8572 tween.unit = unit; 8573 tween.start = initialInUnit; 8574 tween.end = adjusted; 8575 } 8576 } 8577 return adjusted; 8578} 8579 8580 8581var defaultDisplayMap = {}; 8582 8583function getDefaultDisplay( elem ) { 8584 var temp, 8585 doc = elem.ownerDocument, 8586 nodeName = elem.nodeName, 8587 display = defaultDisplayMap[ nodeName ]; 8588 8589 if ( display ) { 8590 return display; 8591 } 8592 8593 temp = doc.body.appendChild( doc.createElement( nodeName ) ); 8594 display = jQuery.css( temp, "display" ); 8595 8596 temp.parentNode.removeChild( temp ); 8597 8598 if ( display === "none" ) { 8599 display = "block"; 8600 } 8601 defaultDisplayMap[ nodeName ] = display; 8602 8603 return display; 8604} 8605 8606function showHide( elements, show ) { 8607 var display, elem, 8608 values = [], 8609 index = 0, 8610 length = elements.length; 8611 8612 // Determine new display value for elements that need to change 8613 for ( ; index < length; index++ ) { 8614 elem = elements[ index ]; 8615 if ( !elem.style ) { 8616 continue; 8617 } 8618 8619 display = elem.style.display; 8620 if ( show ) { 8621 8622 // Since we force visibility upon cascade-hidden elements, an immediate (and slow) 8623 // check is required in this first loop unless we have a nonempty display value (either 8624 // inline or about-to-be-restored) 8625 if ( display === "none" ) { 8626 values[ index ] = dataPriv.get( elem, "display" ) || null; 8627 if ( !values[ index ] ) { 8628 elem.style.display = ""; 8629 } 8630 } 8631 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { 8632 values[ index ] = getDefaultDisplay( elem ); 8633 } 8634 } else { 8635 if ( display !== "none" ) { 8636 values[ index ] = "none"; 8637 8638 // Remember what we're overwriting 8639 dataPriv.set( elem, "display", display ); 8640 } 8641 } 8642 } 8643 8644 // Set the display of the elements in a second loop to avoid constant reflow 8645 for ( index = 0; index < length; index++ ) { 8646 if ( values[ index ] != null ) { 8647 elements[ index ].style.display = values[ index ]; 8648 } 8649 } 8650 8651 return elements; 8652} 8653 8654jQuery.fn.extend( { 8655 show: function() { 8656 return showHide( this, true ); 8657 }, 8658 hide: function() { 8659 return showHide( this ); 8660 }, 8661 toggle: function( state ) { 8662 if ( typeof state === "boolean" ) { 8663 return state ? this.show() : this.hide(); 8664 } 8665 8666 return this.each( function() { 8667 if ( isHiddenWithinTree( this ) ) { 8668 jQuery( this ).show(); 8669 } else { 8670 jQuery( this ).hide(); 8671 } 8672 } ); 8673 } 8674} ); 8675var rcheckableType = ( /^(?:checkbox|radio)$/i ); 8676 8677var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); 8678 8679var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); 8680 8681 8682 8683( function() { 8684 var fragment = document.createDocumentFragment(), 8685 div = fragment.appendChild( document.createElement( "div" ) ), 8686 input = document.createElement( "input" ); 8687 8688 // Support: Android 4.0 - 4.3 only 8689 // Check state lost if the name is set (trac-11217) 8690 // Support: Windows Web Apps (WWA) 8691 // `name` and `type` must use .setAttribute for WWA (trac-14901) 8692 input.setAttribute( "type", "radio" ); 8693 input.setAttribute( "checked", "checked" ); 8694 input.setAttribute( "name", "t" ); 8695 8696 div.appendChild( input ); 8697 8698 // Support: Android <=4.1 only 8699 // Older WebKit doesn't clone checked state correctly in fragments 8700 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 8701 8702 // Support: IE <=11 only 8703 // Make sure textarea (and checkbox) defaultValue is properly cloned 8704 div.innerHTML = "<textarea>x</textarea>"; 8705 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 8706 8707 // Support: IE <=9 only 8708 // IE <=9 replaces <option> tags with their contents when inserted outside of 8709 // the select element. 8710 div.innerHTML = "<option></option>"; 8711 support.option = !!div.lastChild; 8712} )(); 8713 8714 8715// We have to close these tags to support XHTML (trac-13200) 8716var wrapMap = { 8717 8718 // XHTML parsers do not magically insert elements in the 8719 // same way that tag soup parsers do. So we cannot shorten 8720 // this by omitting <tbody> or other required elements. 8721 thead: [ 1, "<table>", "</table>" ], 8722 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 8723 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 8724 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 8725 8726 _default: [ 0, "", "" ] 8727}; 8728 8729wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 8730wrapMap.th = wrapMap.td; 8731 8732// Support: IE <=9 only 8733if ( !support.option ) { 8734 wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; 8735} 8736 8737 8738function getAll( context, tag ) { 8739 8740 // Support: IE <=9 - 11 only 8741 // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) 8742 var ret; 8743 8744 if ( typeof context.getElementsByTagName !== "undefined" ) { 8745 ret = context.getElementsByTagName( tag || "*" ); 8746 8747 } else if ( typeof context.querySelectorAll !== "undefined" ) { 8748 ret = context.querySelectorAll( tag || "*" ); 8749 8750 } else { 8751 ret = []; 8752 } 8753 8754 if ( tag === undefined || tag && nodeName( context, tag ) ) { 8755 return jQuery.merge( [ context ], ret ); 8756 } 8757 8758 return ret; 8759} 8760 8761 8762// Mark scripts as having already been evaluated 8763function setGlobalEval( elems, refElements ) { 8764 var i = 0, 8765 l = elems.length; 8766 8767 for ( ; i < l; i++ ) { 8768 dataPriv.set( 8769 elems[ i ], 8770 "globalEval", 8771 !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 8772 ); 8773 } 8774} 8775 8776 8777var rhtml = /<|&#?\w+;/; 8778 8779function buildFragment( elems, context, scripts, selection, ignored ) { 8780 var elem, tmp, tag, wrap, attached, j, 8781 fragment = context.createDocumentFragment(), 8782 nodes = [], 8783 i = 0, 8784 l = elems.length; 8785 8786 for ( ; i < l; i++ ) { 8787 elem = elems[ i ]; 8788 8789 if ( elem || elem === 0 ) { 8790 8791 // Add nodes directly 8792 if ( toType( elem ) === "object" ) { 8793 8794 // Support: Android <=4.0 only, PhantomJS 1 only 8795 // push.apply(_, arraylike) throws on ancient WebKit 8796 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); 8797 8798 // Convert non-html into a text node 8799 } else if ( !rhtml.test( elem ) ) { 8800 nodes.push( context.createTextNode( elem ) ); 8801 8802 // Convert html into DOM nodes 8803 } else { 8804 tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); 8805 8806 // Deserialize a standard representation 8807 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); 8808 wrap = wrapMap[ tag ] || wrapMap._default; 8809 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; 8810 8811 // Descend through wrappers to the right content 8812 j = wrap[ 0 ]; 8813 while ( j-- ) { 8814 tmp = tmp.lastChild; 8815 } 8816 8817 // Support: Android <=4.0 only, PhantomJS 1 only 8818 // push.apply(_, arraylike) throws on ancient WebKit 8819 jQuery.merge( nodes, tmp.childNodes ); 8820 8821 // Remember the top-level container 8822 tmp = fragment.firstChild; 8823 8824 // Ensure the created nodes are orphaned (trac-12392) 8825 tmp.textContent = ""; 8826 } 8827 } 8828 } 8829 8830 // Remove wrapper from fragment 8831 fragment.textContent = ""; 8832 8833 i = 0; 8834 while ( ( elem = nodes[ i++ ] ) ) { 8835 8836 // Skip elements already in the context collection (trac-4087) 8837 if ( selection && jQuery.inArray( elem, selection ) > -1 ) { 8838 if ( ignored ) { 8839 ignored.push( elem ); 8840 } 8841 continue; 8842 } 8843 8844 attached = isAttached( elem ); 8845 8846 // Append to fragment 8847 tmp = getAll( fragment.appendChild( elem ), "script" ); 8848 8849 // Preserve script evaluation history 8850 if ( attached ) { 8851 setGlobalEval( tmp ); 8852 } 8853 8854 // Capture executables 8855 if ( scripts ) { 8856 j = 0; 8857 while ( ( elem = tmp[ j++ ] ) ) { 8858 if ( rscriptType.test( elem.type || "" ) ) { 8859 scripts.push( elem ); 8860 } 8861 } 8862 } 8863 } 8864 8865 return fragment; 8866} 8867 8868 8869var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 8870 8871function returnTrue() { 8872 return true; 8873} 8874 8875function returnFalse() { 8876 return false; 8877} 8878 8879function on( elem, types, selector, data, fn, one ) { 8880 var origFn, type; 8881 8882 // Types can be a map of types/handlers 8883 if ( typeof types === "object" ) { 8884 8885 // ( types-Object, selector, data ) 8886 if ( typeof selector !== "string" ) { 8887 8888 // ( types-Object, data ) 8889 data = data || selector; 8890 selector = undefined; 8891 } 8892 for ( type in types ) { 8893 on( elem, type, selector, data, types[ type ], one ); 8894 } 8895 return elem; 8896 } 8897 8898 if ( data == null && fn == null ) { 8899 8900 // ( types, fn ) 8901 fn = selector; 8902 data = selector = undefined; 8903 } else if ( fn == null ) { 8904 if ( typeof selector === "string" ) { 8905 8906 // ( types, selector, fn ) 8907 fn = data; 8908 data = undefined; 8909 } else { 8910 8911 // ( types, data, fn ) 8912 fn = data; 8913 data = selector; 8914 selector = undefined; 8915 } 8916 } 8917 if ( fn === false ) { 8918 fn = returnFalse; 8919 } else if ( !fn ) { 8920 return elem; 8921 } 8922 8923 if ( one === 1 ) { 8924 origFn = fn; 8925 fn = function( event ) { 8926 8927 // Can use an empty set, since event contains the info 8928 jQuery().off( event ); 8929 return origFn.apply( this, arguments ); 8930 }; 8931 8932 // Use same guid so caller can remove using origFn 8933 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); 8934 } 8935 return elem.each( function() { 8936 jQuery.event.add( this, types, fn, data, selector ); 8937 } ); 8938} 8939 8940/* 8941 * Helper functions for managing events -- not part of the public interface. 8942 * Props to Dean Edwards' addEvent library for many of the ideas. 8943 */ 8944jQuery.event = { 8945 8946 global: {}, 8947 8948 add: function( elem, types, handler, data, selector ) { 8949 8950 var handleObjIn, eventHandle, tmp, 8951 events, t, handleObj, 8952 special, handlers, type, namespaces, origType, 8953 elemData = dataPriv.get( elem ); 8954 8955 // Only attach events to objects that accept data 8956 if ( !acceptData( elem ) ) { 8957 return; 8958 } 8959 8960 // Caller can pass in an object of custom data in lieu of the handler 8961 if ( handler.handler ) { 8962 handleObjIn = handler; 8963 handler = handleObjIn.handler; 8964 selector = handleObjIn.selector; 8965 } 8966 8967 // Ensure that invalid selectors throw exceptions at attach time 8968 // Evaluate against documentElement in case elem is a non-element node (e.g., document) 8969 if ( selector ) { 8970 jQuery.find.matchesSelector( documentElement, selector ); 8971 } 8972 8973 // Make sure that the handler has a unique ID, used to find/remove it later 8974 if ( !handler.guid ) { 8975 handler.guid = jQuery.guid++; 8976 } 8977 8978 // Init the element's event structure and main handler, if this is the first 8979 if ( !( events = elemData.events ) ) { 8980 events = elemData.events = Object.create( null ); 8981 } 8982 if ( !( eventHandle = elemData.handle ) ) { 8983 eventHandle = elemData.handle = function( e ) { 8984 8985 // Discard the second event of a jQuery.event.trigger() and 8986 // when an event is called after a page has unloaded 8987 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? 8988 jQuery.event.dispatch.apply( elem, arguments ) : undefined; 8989 }; 8990 } 8991 8992 // Handle multiple events separated by a space 8993 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 8994 t = types.length; 8995 while ( t-- ) { 8996 tmp = rtypenamespace.exec( types[ t ] ) || []; 8997 type = origType = tmp[ 1 ]; 8998 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 8999 9000 // There *must* be a type, no attaching namespace-only handlers 9001 if ( !type ) { 9002 continue; 9003 } 9004 9005 // If event changes its type, use the special event handlers for the changed type 9006 special = jQuery.event.special[ type ] || {}; 9007 9008 // If selector defined, determine special event api type, otherwise given type 9009 type = ( selector ? special.delegateType : special.bindType ) || type; 9010 9011 // Update special based on newly reset type 9012 special = jQuery.event.special[ type ] || {}; 9013 9014 // handleObj is passed to all event handlers 9015 handleObj = jQuery.extend( { 9016 type: type, 9017 origType: origType, 9018 data: data, 9019 handler: handler, 9020 guid: handler.guid, 9021 selector: selector, 9022 needsContext: selector && jQuery.expr.match.needsContext.test( selector ), 9023 namespace: namespaces.join( "." ) 9024 }, handleObjIn ); 9025 9026 // Init the event handler queue if we're the first 9027 if ( !( handlers = events[ type ] ) ) { 9028 handlers = events[ type ] = []; 9029 handlers.delegateCount = 0; 9030 9031 // Only use addEventListener if the special events handler returns false 9032 if ( !special.setup || 9033 special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 9034 9035 if ( elem.addEventListener ) { 9036 elem.addEventListener( type, eventHandle ); 9037 } 9038 } 9039 } 9040 9041 if ( special.add ) { 9042 special.add.call( elem, handleObj ); 9043 9044 if ( !handleObj.handler.guid ) { 9045 handleObj.handler.guid = handler.guid; 9046 } 9047 } 9048 9049 // Add to the element's handler list, delegates in front 9050 if ( selector ) { 9051 handlers.splice( handlers.delegateCount++, 0, handleObj ); 9052 } else { 9053 handlers.push( handleObj ); 9054 } 9055 9056 // Keep track of which events have ever been used, for event optimization 9057 jQuery.event.global[ type ] = true; 9058 } 9059 9060 }, 9061 9062 // Detach an event or set of events from an element 9063 remove: function( elem, types, handler, selector, mappedTypes ) { 9064 9065 var j, origCount, tmp, 9066 events, t, handleObj, 9067 special, handlers, type, namespaces, origType, 9068 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); 9069 9070 if ( !elemData || !( events = elemData.events ) ) { 9071 return; 9072 } 9073 9074 // Once for each type.namespace in types; type may be omitted 9075 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 9076 t = types.length; 9077 while ( t-- ) { 9078 tmp = rtypenamespace.exec( types[ t ] ) || []; 9079 type = origType = tmp[ 1 ]; 9080 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 9081 9082 // Unbind all events (on this namespace, if provided) for the element 9083 if ( !type ) { 9084 for ( type in events ) { 9085 jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); 9086 } 9087 continue; 9088 } 9089 9090 special = jQuery.event.special[ type ] || {}; 9091 type = ( selector ? special.delegateType : special.bindType ) || type; 9092 handlers = events[ type ] || []; 9093 tmp = tmp[ 2 ] && 9094 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); 9095 9096 // Remove matching events 9097 origCount = j = handlers.length; 9098 while ( j-- ) { 9099 handleObj = handlers[ j ]; 9100 9101 if ( ( mappedTypes || origType === handleObj.origType ) && 9102 ( !handler || handler.guid === handleObj.guid ) && 9103 ( !tmp || tmp.test( handleObj.namespace ) ) && 9104 ( !selector || selector === handleObj.selector || 9105 selector === "**" && handleObj.selector ) ) { 9106 handlers.splice( j, 1 ); 9107 9108 if ( handleObj.selector ) { 9109 handlers.delegateCount--; 9110 } 9111 if ( special.remove ) { 9112 special.remove.call( elem, handleObj ); 9113 } 9114 } 9115 } 9116 9117 // Remove generic event handler if we removed something and no more handlers exist 9118 // (avoids potential for endless recursion during removal of special event handlers) 9119 if ( origCount && !handlers.length ) { 9120 if ( !special.teardown || 9121 special.teardown.call( elem, namespaces, elemData.handle ) === false ) { 9122 9123 jQuery.removeEvent( elem, type, elemData.handle ); 9124 } 9125 9126 delete events[ type ]; 9127 } 9128 } 9129 9130 // Remove data and the expando if it's no longer used 9131 if ( jQuery.isEmptyObject( events ) ) { 9132 dataPriv.remove( elem, "handle events" ); 9133 } 9134 }, 9135 9136 dispatch: function( nativeEvent ) { 9137 9138 var i, j, ret, matched, handleObj, handlerQueue, 9139 args = new Array( arguments.length ), 9140 9141 // Make a writable jQuery.Event from the native event object 9142 event = jQuery.event.fix( nativeEvent ), 9143 9144 handlers = ( 9145 dataPriv.get( this, "events" ) || Object.create( null ) 9146 )[ event.type ] || [], 9147 special = jQuery.event.special[ event.type ] || {}; 9148 9149 // Use the fix-ed jQuery.Event rather than the (read-only) native event 9150 args[ 0 ] = event; 9151 9152 for ( i = 1; i < arguments.length; i++ ) { 9153 args[ i ] = arguments[ i ]; 9154 } 9155 9156 event.delegateTarget = this; 9157 9158 // Call the preDispatch hook for the mapped type, and let it bail if desired 9159 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { 9160 return; 9161 } 9162 9163 // Determine handlers 9164 handlerQueue = jQuery.event.handlers.call( this, event, handlers ); 9165 9166 // Run delegates first; they may want to stop propagation beneath us 9167 i = 0; 9168 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { 9169 event.currentTarget = matched.elem; 9170 9171 j = 0; 9172 while ( ( handleObj = matched.handlers[ j++ ] ) && 9173 !event.isImmediatePropagationStopped() ) { 9174 9175 // If the event is namespaced, then each handler is only invoked if it is 9176 // specially universal or its namespaces are a superset of the event's. 9177 if ( !event.rnamespace || handleObj.namespace === false || 9178 event.rnamespace.test( handleObj.namespace ) ) { 9179 9180 event.handleObj = handleObj; 9181 event.data = handleObj.data; 9182 9183 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || 9184 handleObj.handler ).apply( matched.elem, args ); 9185 9186 if ( ret !== undefined ) { 9187 if ( ( event.result = ret ) === false ) { 9188 event.preventDefault(); 9189 event.stopPropagation(); 9190 } 9191 } 9192 } 9193 } 9194 } 9195 9196 // Call the postDispatch hook for the mapped type 9197 if ( special.postDispatch ) { 9198 special.postDispatch.call( this, event ); 9199 } 9200 9201 return event.result; 9202 }, 9203 9204 handlers: function( event, handlers ) { 9205 var i, handleObj, sel, matchedHandlers, matchedSelectors, 9206 handlerQueue = [], 9207 delegateCount = handlers.delegateCount, 9208 cur = event.target; 9209 9210 // Find delegate handlers 9211 if ( delegateCount && 9212 9213 // Support: IE <=9 9214 // Black-hole SVG <use> instance trees (trac-13180) 9215 cur.nodeType && 9216 9217 // Support: Firefox <=42 9218 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 9219 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 9220 // Support: IE 11 only 9221 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 9222 !( event.type === "click" && event.button >= 1 ) ) { 9223 9224 for ( ; cur !== this; cur = cur.parentNode || this ) { 9225 9226 // Don't check non-elements (trac-13208) 9227 // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) 9228 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { 9229 matchedHandlers = []; 9230 matchedSelectors = {}; 9231 for ( i = 0; i < delegateCount; i++ ) { 9232 handleObj = handlers[ i ]; 9233 9234 // Don't conflict with Object.prototype properties (trac-13203) 9235 sel = handleObj.selector + " "; 9236 9237 if ( matchedSelectors[ sel ] === undefined ) { 9238 matchedSelectors[ sel ] = handleObj.needsContext ? 9239 jQuery( sel, this ).index( cur ) > -1 : 9240 jQuery.find( sel, this, null, [ cur ] ).length; 9241 } 9242 if ( matchedSelectors[ sel ] ) { 9243 matchedHandlers.push( handleObj ); 9244 } 9245 } 9246 if ( matchedHandlers.length ) { 9247 handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); 9248 } 9249 } 9250 } 9251 } 9252 9253 // Add the remaining (directly-bound) handlers 9254 cur = this; 9255 if ( delegateCount < handlers.length ) { 9256 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); 9257 } 9258 9259 return handlerQueue; 9260 }, 9261 9262 addProp: function( name, hook ) { 9263 Object.defineProperty( jQuery.Event.prototype, name, { 9264 enumerable: true, 9265 configurable: true, 9266 9267 get: isFunction( hook ) ? 9268 function() { 9269 if ( this.originalEvent ) { 9270 return hook( this.originalEvent ); 9271 } 9272 } : 9273 function() { 9274 if ( this.originalEvent ) { 9275 return this.originalEvent[ name ]; 9276 } 9277 }, 9278 9279 set: function( value ) { 9280 Object.defineProperty( this, name, { 9281 enumerable: true, 9282 configurable: true, 9283 writable: true, 9284 value: value 9285 } ); 9286 } 9287 } ); 9288 }, 9289 9290 fix: function( originalEvent ) { 9291 return originalEvent[ jQuery.expando ] ? 9292 originalEvent : 9293 new jQuery.Event( originalEvent ); 9294 }, 9295 9296 special: { 9297 load: { 9298 9299 // Prevent triggered image.load events from bubbling to window.load 9300 noBubble: true 9301 }, 9302 click: { 9303 9304 // Utilize native event to ensure correct state for checkable inputs 9305 setup: function( data ) { 9306 9307 // For mutual compressibility with _default, replace `this` access with a local var. 9308 // `|| data` is dead code meant only to preserve the variable through minification. 9309 var el = this || data; 9310 9311 // Claim the first handler 9312 if ( rcheckableType.test( el.type ) && 9313 el.click && nodeName( el, "input" ) ) { 9314 9315 // dataPriv.set( el, "click", ... ) 9316 leverageNative( el, "click", true ); 9317 } 9318 9319 // Return false to allow normal processing in the caller 9320 return false; 9321 }, 9322 trigger: function( data ) { 9323 9324 // For mutual compressibility with _default, replace `this` access with a local var. 9325 // `|| data` is dead code meant only to preserve the variable through minification. 9326 var el = this || data; 9327 9328 // Force setup before triggering a click 9329 if ( rcheckableType.test( el.type ) && 9330 el.click && nodeName( el, "input" ) ) { 9331 9332 leverageNative( el, "click" ); 9333 } 9334 9335 // Return non-false to allow normal event-path propagation 9336 return true; 9337 }, 9338 9339 // For cross-browser consistency, suppress native .click() on links 9340 // Also prevent it if we're currently inside a leveraged native-event stack 9341 _default: function( event ) { 9342 var target = event.target; 9343 return rcheckableType.test( target.type ) && 9344 target.click && nodeName( target, "input" ) && 9345 dataPriv.get( target, "click" ) || 9346 nodeName( target, "a" ); 9347 } 9348 }, 9349 9350 beforeunload: { 9351 postDispatch: function( event ) { 9352 9353 // Support: Firefox 20+ 9354 // Firefox doesn't alert if the returnValue field is not set. 9355 if ( event.result !== undefined && event.originalEvent ) { 9356 event.originalEvent.returnValue = event.result; 9357 } 9358 } 9359 } 9360 } 9361}; 9362 9363// Ensure the presence of an event listener that handles manually-triggered 9364// synthetic events by interrupting progress until reinvoked in response to 9365// *native* events that it fires directly, ensuring that state changes have 9366// already occurred before other listeners are invoked. 9367function leverageNative( el, type, isSetup ) { 9368 9369 // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add 9370 if ( !isSetup ) { 9371 if ( dataPriv.get( el, type ) === undefined ) { 9372 jQuery.event.add( el, type, returnTrue ); 9373 } 9374 return; 9375 } 9376 9377 // Register the controller as a special universal handler for all event namespaces 9378 dataPriv.set( el, type, false ); 9379 jQuery.event.add( el, type, { 9380 namespace: false, 9381 handler: function( event ) { 9382 var result, 9383 saved = dataPriv.get( this, type ); 9384 9385 if ( ( event.isTrigger & 1 ) && this[ type ] ) { 9386 9387 // Interrupt processing of the outer synthetic .trigger()ed event 9388 if ( !saved ) { 9389 9390 // Store arguments for use when handling the inner native event 9391 // There will always be at least one argument (an event object), so this array 9392 // will not be confused with a leftover capture object. 9393 saved = slice.call( arguments ); 9394 dataPriv.set( this, type, saved ); 9395 9396 // Trigger the native event and capture its result 9397 this[ type ](); 9398 result = dataPriv.get( this, type ); 9399 dataPriv.set( this, type, false ); 9400 9401 if ( saved !== result ) { 9402 9403 // Cancel the outer synthetic event 9404 event.stopImmediatePropagation(); 9405 event.preventDefault(); 9406 9407 return result; 9408 } 9409 9410 // If this is an inner synthetic event for an event with a bubbling surrogate 9411 // (focus or blur), assume that the surrogate already propagated from triggering 9412 // the native event and prevent that from happening again here. 9413 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the 9414 // bubbling surrogate propagates *after* the non-bubbling base), but that seems 9415 // less bad than duplication. 9416 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { 9417 event.stopPropagation(); 9418 } 9419 9420 // If this is a native event triggered above, everything is now in order 9421 // Fire an inner synthetic event with the original arguments 9422 } else if ( saved ) { 9423 9424 // ...and capture the result 9425 dataPriv.set( this, type, jQuery.event.trigger( 9426 saved[ 0 ], 9427 saved.slice( 1 ), 9428 this 9429 ) ); 9430 9431 // Abort handling of the native event by all jQuery handlers while allowing 9432 // native handlers on the same element to run. On target, this is achieved 9433 // by stopping immediate propagation just on the jQuery event. However, 9434 // the native event is re-wrapped by a jQuery one on each level of the 9435 // propagation so the only way to stop it for jQuery is to stop it for 9436 // everyone via native `stopPropagation()`. This is not a problem for 9437 // focus/blur which don't bubble, but it does also stop click on checkboxes 9438 // and radios. We accept this limitation. 9439 event.stopPropagation(); 9440 event.isImmediatePropagationStopped = returnTrue; 9441 } 9442 } 9443 } ); 9444} 9445 9446jQuery.removeEvent = function( elem, type, handle ) { 9447 9448 // This "if" is needed for plain objects 9449 if ( elem.removeEventListener ) { 9450 elem.removeEventListener( type, handle ); 9451 } 9452}; 9453 9454jQuery.Event = function( src, props ) { 9455 9456 // Allow instantiation without the 'new' keyword 9457 if ( !( this instanceof jQuery.Event ) ) { 9458 return new jQuery.Event( src, props ); 9459 } 9460 9461 // Event object 9462 if ( src && src.type ) { 9463 this.originalEvent = src; 9464 this.type = src.type; 9465 9466 // Events bubbling up the document may have been marked as prevented 9467 // by a handler lower down the tree; reflect the correct value. 9468 this.isDefaultPrevented = src.defaultPrevented || 9469 src.defaultPrevented === undefined && 9470 9471 // Support: Android <=2.3 only 9472 src.returnValue === false ? 9473 returnTrue : 9474 returnFalse; 9475 9476 // Create target properties 9477 // Support: Safari <=6 - 7 only 9478 // Target should not be a text node (trac-504, trac-13143) 9479 this.target = ( src.target && src.target.nodeType === 3 ) ? 9480 src.target.parentNode : 9481 src.target; 9482 9483 this.currentTarget = src.currentTarget; 9484 this.relatedTarget = src.relatedTarget; 9485 9486 // Event type 9487 } else { 9488 this.type = src; 9489 } 9490 9491 // Put explicitly provided properties onto the event object 9492 if ( props ) { 9493 jQuery.extend( this, props ); 9494 } 9495 9496 // Create a timestamp if incoming event doesn't have one 9497 this.timeStamp = src && src.timeStamp || Date.now(); 9498 9499 // Mark it as fixed 9500 this[ jQuery.expando ] = true; 9501}; 9502 9503// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 9504// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 9505jQuery.Event.prototype = { 9506 constructor: jQuery.Event, 9507 isDefaultPrevented: returnFalse, 9508 isPropagationStopped: returnFalse, 9509 isImmediatePropagationStopped: returnFalse, 9510 isSimulated: false, 9511 9512 preventDefault: function() { 9513 var e = this.originalEvent; 9514 9515 this.isDefaultPrevented = returnTrue; 9516 9517 if ( e && !this.isSimulated ) { 9518 e.preventDefault(); 9519 } 9520 }, 9521 stopPropagation: function() { 9522 var e = this.originalEvent; 9523 9524 this.isPropagationStopped = returnTrue; 9525 9526 if ( e && !this.isSimulated ) { 9527 e.stopPropagation(); 9528 } 9529 }, 9530 stopImmediatePropagation: function() { 9531 var e = this.originalEvent; 9532 9533 this.isImmediatePropagationStopped = returnTrue; 9534 9535 if ( e && !this.isSimulated ) { 9536 e.stopImmediatePropagation(); 9537 } 9538 9539 this.stopPropagation(); 9540 } 9541}; 9542 9543// Includes all common event props including KeyEvent and MouseEvent specific props 9544jQuery.each( { 9545 altKey: true, 9546 bubbles: true, 9547 cancelable: true, 9548 changedTouches: true, 9549 ctrlKey: true, 9550 detail: true, 9551 eventPhase: true, 9552 metaKey: true, 9553 pageX: true, 9554 pageY: true, 9555 shiftKey: true, 9556 view: true, 9557 "char": true, 9558 code: true, 9559 charCode: true, 9560 key: true, 9561 keyCode: true, 9562 button: true, 9563 buttons: true, 9564 clientX: true, 9565 clientY: true, 9566 offsetX: true, 9567 offsetY: true, 9568 pointerId: true, 9569 pointerType: true, 9570 screenX: true, 9571 screenY: true, 9572 targetTouches: true, 9573 toElement: true, 9574 touches: true, 9575 which: true 9576}, jQuery.event.addProp ); 9577 9578jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { 9579 9580 function focusMappedHandler( nativeEvent ) { 9581 if ( document.documentMode ) { 9582 9583 // Support: IE 11+ 9584 // Attach a single focusin/focusout handler on the document while someone wants 9585 // focus/blur. This is because the former are synchronous in IE while the latter 9586 // are async. In other browsers, all those handlers are invoked synchronously. 9587 9588 // `handle` from private data would already wrap the event, but we need 9589 // to change the `type` here. 9590 var handle = dataPriv.get( this, "handle" ), 9591 event = jQuery.event.fix( nativeEvent ); 9592 event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; 9593 event.isSimulated = true; 9594 9595 // First, handle focusin/focusout 9596 handle( nativeEvent ); 9597 9598 // ...then, handle focus/blur 9599 // 9600 // focus/blur don't bubble while focusin/focusout do; simulate the former by only 9601 // invoking the handler at the lower level. 9602 if ( event.target === event.currentTarget ) { 9603 9604 // The setup part calls `leverageNative`, which, in turn, calls 9605 // `jQuery.event.add`, so event handle will already have been set 9606 // by this point. 9607 handle( event ); 9608 } 9609 } else { 9610 9611 // For non-IE browsers, attach a single capturing handler on the document 9612 // while someone wants focusin/focusout. 9613 jQuery.event.simulate( delegateType, nativeEvent.target, 9614 jQuery.event.fix( nativeEvent ) ); 9615 } 9616 } 9617 9618 jQuery.event.special[ type ] = { 9619 9620 // Utilize native event if possible so blur/focus sequence is correct 9621 setup: function() { 9622 9623 var attaches; 9624 9625 // Claim the first handler 9626 // dataPriv.set( this, "focus", ... ) 9627 // dataPriv.set( this, "blur", ... ) 9628 leverageNative( this, type, true ); 9629 9630 if ( document.documentMode ) { 9631 9632 // Support: IE 9 - 11+ 9633 // We use the same native handler for focusin & focus (and focusout & blur) 9634 // so we need to coordinate setup & teardown parts between those events. 9635 // Use `delegateType` as the key as `type` is already used by `leverageNative`. 9636 attaches = dataPriv.get( this, delegateType ); 9637 if ( !attaches ) { 9638 this.addEventListener( delegateType, focusMappedHandler ); 9639 } 9640 dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); 9641 } else { 9642 9643 // Return false to allow normal processing in the caller 9644 return false; 9645 } 9646 }, 9647 trigger: function() { 9648 9649 // Force setup before trigger 9650 leverageNative( this, type ); 9651 9652 // Return non-false to allow normal event-path propagation 9653 return true; 9654 }, 9655 9656 teardown: function() { 9657 var attaches; 9658 9659 if ( document.documentMode ) { 9660 attaches = dataPriv.get( this, delegateType ) - 1; 9661 if ( !attaches ) { 9662 this.removeEventListener( delegateType, focusMappedHandler ); 9663 dataPriv.remove( this, delegateType ); 9664 } else { 9665 dataPriv.set( this, delegateType, attaches ); 9666 } 9667 } else { 9668 9669 // Return false to indicate standard teardown should be applied 9670 return false; 9671 } 9672 }, 9673 9674 // Suppress native focus or blur if we're currently inside 9675 // a leveraged native-event stack 9676 _default: function( event ) { 9677 return dataPriv.get( event.target, type ); 9678 }, 9679 9680 delegateType: delegateType 9681 }; 9682 9683 // Support: Firefox <=44 9684 // Firefox doesn't have focus(in | out) events 9685 // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 9686 // 9687 // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 9688 // focus(in | out) events fire after focus & blur events, 9689 // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order 9690 // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 9691 // 9692 // Support: IE 9 - 11+ 9693 // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, 9694 // attach a single handler for both events in IE. 9695 jQuery.event.special[ delegateType ] = { 9696 setup: function() { 9697 9698 // Handle: regular nodes (via `this.ownerDocument`), window 9699 // (via `this.document`) & document (via `this`). 9700 var doc = this.ownerDocument || this.document || this, 9701 dataHolder = document.documentMode ? this : doc, 9702 attaches = dataPriv.get( dataHolder, delegateType ); 9703 9704 // Support: IE 9 - 11+ 9705 // We use the same native handler for focusin & focus (and focusout & blur) 9706 // so we need to coordinate setup & teardown parts between those events. 9707 // Use `delegateType` as the key as `type` is already used by `leverageNative`. 9708 if ( !attaches ) { 9709 if ( document.documentMode ) { 9710 this.addEventListener( delegateType, focusMappedHandler ); 9711 } else { 9712 doc.addEventListener( type, focusMappedHandler, true ); 9713 } 9714 } 9715 dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); 9716 }, 9717 teardown: function() { 9718 var doc = this.ownerDocument || this.document || this, 9719 dataHolder = document.documentMode ? this : doc, 9720 attaches = dataPriv.get( dataHolder, delegateType ) - 1; 9721 9722 if ( !attaches ) { 9723 if ( document.documentMode ) { 9724 this.removeEventListener( delegateType, focusMappedHandler ); 9725 } else { 9726 doc.removeEventListener( type, focusMappedHandler, true ); 9727 } 9728 dataPriv.remove( dataHolder, delegateType ); 9729 } else { 9730 dataPriv.set( dataHolder, delegateType, attaches ); 9731 } 9732 } 9733 }; 9734} ); 9735 9736// Create mouseenter/leave events using mouseover/out and event-time checks 9737// so that event delegation works in jQuery. 9738// Do the same for pointerenter/pointerleave and pointerover/pointerout 9739// 9740// Support: Safari 7 only 9741// Safari sends mouseenter too often; see: 9742// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 9743// for the description of the bug (it existed in older Chrome versions as well). 9744jQuery.each( { 9745 mouseenter: "mouseover", 9746 mouseleave: "mouseout", 9747 pointerenter: "pointerover", 9748 pointerleave: "pointerout" 9749}, function( orig, fix ) { 9750 jQuery.event.special[ orig ] = { 9751 delegateType: fix, 9752 bindType: fix, 9753 9754 handle: function( event ) { 9755 var ret, 9756 target = this, 9757 related = event.relatedTarget, 9758 handleObj = event.handleObj; 9759 9760 // For mouseenter/leave call the handler if related is outside the target. 9761 // NB: No relatedTarget if the mouse left/entered the browser window 9762 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { 9763 event.type = handleObj.origType; 9764 ret = handleObj.handler.apply( this, arguments ); 9765 event.type = fix; 9766 } 9767 return ret; 9768 } 9769 }; 9770} ); 9771 9772jQuery.fn.extend( { 9773 9774 on: function( types, selector, data, fn ) { 9775 return on( this, types, selector, data, fn ); 9776 }, 9777 one: function( types, selector, data, fn ) { 9778 return on( this, types, selector, data, fn, 1 ); 9779 }, 9780 off: function( types, selector, fn ) { 9781 var handleObj, type; 9782 if ( types && types.preventDefault && types.handleObj ) { 9783 9784 // ( event ) dispatched jQuery.Event 9785 handleObj = types.handleObj; 9786 jQuery( types.delegateTarget ).off( 9787 handleObj.namespace ? 9788 handleObj.origType + "." + handleObj.namespace : 9789 handleObj.origType, 9790 handleObj.selector, 9791 handleObj.handler 9792 ); 9793 return this; 9794 } 9795 if ( typeof types === "object" ) { 9796 9797 // ( types-object [, selector] ) 9798 for ( type in types ) { 9799 this.off( type, selector, types[ type ] ); 9800 } 9801 return this; 9802 } 9803 if ( selector === false || typeof selector === "function" ) { 9804 9805 // ( types [, fn] ) 9806 fn = selector; 9807 selector = undefined; 9808 } 9809 if ( fn === false ) { 9810 fn = returnFalse; 9811 } 9812 return this.each( function() { 9813 jQuery.event.remove( this, types, fn, selector ); 9814 } ); 9815 } 9816} ); 9817 9818 9819var 9820 9821 // Support: IE <=10 - 11, Edge 12 - 13 only 9822 // In IE/Edge using regex groups here causes severe slowdowns. 9823 // See https://connect.microsoft.com/IE/feedback/details/1736512/ 9824 rnoInnerhtml = /<script|<style|<link/i, 9825 9826 // checked="checked" or checked 9827 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 9828 9829 rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g; 9830 9831// Prefer a tbody over its parent table for containing new rows 9832function manipulationTarget( elem, content ) { 9833 if ( nodeName( elem, "table" ) && 9834 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { 9835 9836 return jQuery( elem ).children( "tbody" )[ 0 ] || elem; 9837 } 9838 9839 return elem; 9840} 9841 9842// Replace/restore the type attribute of script elements for safe DOM manipulation 9843function disableScript( elem ) { 9844 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; 9845 return elem; 9846} 9847function restoreScript( elem ) { 9848 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { 9849 elem.type = elem.type.slice( 5 ); 9850 } else { 9851 elem.removeAttribute( "type" ); 9852 } 9853 9854 return elem; 9855} 9856 9857function cloneCopyEvent( src, dest ) { 9858 var i, l, type, pdataOld, udataOld, udataCur, events; 9859 9860 if ( dest.nodeType !== 1 ) { 9861 return; 9862 } 9863 9864 // 1. Copy private data: events, handlers, etc. 9865 if ( dataPriv.hasData( src ) ) { 9866 pdataOld = dataPriv.get( src ); 9867 events = pdataOld.events; 9868 9869 if ( events ) { 9870 dataPriv.remove( dest, "handle events" ); 9871 9872 for ( type in events ) { 9873 for ( i = 0, l = events[ type ].length; i < l; i++ ) { 9874 jQuery.event.add( dest, type, events[ type ][ i ] ); 9875 } 9876 } 9877 } 9878 } 9879 9880 // 2. Copy user data 9881 if ( dataUser.hasData( src ) ) { 9882 udataOld = dataUser.access( src ); 9883 udataCur = jQuery.extend( {}, udataOld ); 9884 9885 dataUser.set( dest, udataCur ); 9886 } 9887} 9888 9889// Fix IE bugs, see support tests 9890function fixInput( src, dest ) { 9891 var nodeName = dest.nodeName.toLowerCase(); 9892 9893 // Fails to persist the checked state of a cloned checkbox or radio button. 9894 if ( nodeName === "input" && rcheckableType.test( src.type ) ) { 9895 dest.checked = src.checked; 9896 9897 // Fails to return the selected option to the default selected state when cloning options 9898 } else if ( nodeName === "input" || nodeName === "textarea" ) { 9899 dest.defaultValue = src.defaultValue; 9900 } 9901} 9902 9903function domManip( collection, args, callback, ignored ) { 9904 9905 // Flatten any nested arrays 9906 args = flat( args ); 9907 9908 var fragment, first, scripts, hasScripts, node, doc, 9909 i = 0, 9910 l = collection.length, 9911 iNoClone = l - 1, 9912 value = args[ 0 ], 9913 valueIsFunction = isFunction( value ); 9914 9915 // We can't cloneNode fragments that contain checked, in WebKit 9916 if ( valueIsFunction || 9917 ( l > 1 && typeof value === "string" && 9918 !support.checkClone && rchecked.test( value ) ) ) { 9919 return collection.each( function( index ) { 9920 var self = collection.eq( index ); 9921 if ( valueIsFunction ) { 9922 args[ 0 ] = value.call( this, index, self.html() ); 9923 } 9924 domManip( self, args, callback, ignored ); 9925 } ); 9926 } 9927 9928 if ( l ) { 9929 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); 9930 first = fragment.firstChild; 9931 9932 if ( fragment.childNodes.length === 1 ) { 9933 fragment = first; 9934 } 9935 9936 // Require either new content or an interest in ignored elements to invoke the callback 9937 if ( first || ignored ) { 9938 scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); 9939 hasScripts = scripts.length; 9940 9941 // Use the original fragment for the last item 9942 // instead of the first because it can end up 9943 // being emptied incorrectly in certain situations (trac-8070). 9944 for ( ; i < l; i++ ) { 9945 node = fragment; 9946 9947 if ( i !== iNoClone ) { 9948 node = jQuery.clone( node, true, true ); 9949 9950 // Keep references to cloned scripts for later restoration 9951 if ( hasScripts ) { 9952 9953 // Support: Android <=4.0 only, PhantomJS 1 only 9954 // push.apply(_, arraylike) throws on ancient WebKit 9955 jQuery.merge( scripts, getAll( node, "script" ) ); 9956 } 9957 } 9958 9959 callback.call( collection[ i ], node, i ); 9960 } 9961 9962 if ( hasScripts ) { 9963 doc = scripts[ scripts.length - 1 ].ownerDocument; 9964 9965 // Re-enable scripts 9966 jQuery.map( scripts, restoreScript ); 9967 9968 // Evaluate executable scripts on first document insertion 9969 for ( i = 0; i < hasScripts; i++ ) { 9970 node = scripts[ i ]; 9971 if ( rscriptType.test( node.type || "" ) && 9972 !dataPriv.access( node, "globalEval" ) && 9973 jQuery.contains( doc, node ) ) { 9974 9975 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { 9976 9977 // Optional AJAX dependency, but won't run scripts if not present 9978 if ( jQuery._evalUrl && !node.noModule ) { 9979 jQuery._evalUrl( node.src, { 9980 nonce: node.nonce || node.getAttribute( "nonce" ) 9981 }, doc ); 9982 } 9983 } else { 9984 9985 // Unwrap a CDATA section containing script contents. This shouldn't be 9986 // needed as in XML documents they're already not visible when 9987 // inspecting element contents and in HTML documents they have no 9988 // meaning but we're preserving that logic for backwards compatibility. 9989 // This will be removed completely in 4.0. See gh-4904. 9990 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); 9991 } 9992 } 9993 } 9994 } 9995 } 9996 } 9997 9998 return collection; 9999} 10000 10001function remove( elem, selector, keepData ) { 10002 var node, 10003 nodes = selector ? jQuery.filter( selector, elem ) : elem, 10004 i = 0; 10005 10006 for ( ; ( node = nodes[ i ] ) != null; i++ ) { 10007 if ( !keepData && node.nodeType === 1 ) { 10008 jQuery.cleanData( getAll( node ) ); 10009 } 10010 10011 if ( node.parentNode ) { 10012 if ( keepData && isAttached( node ) ) { 10013 setGlobalEval( getAll( node, "script" ) ); 10014 } 10015 node.parentNode.removeChild( node ); 10016 } 10017 } 10018 10019 return elem; 10020} 10021 10022jQuery.extend( { 10023 htmlPrefilter: function( html ) { 10024 return html; 10025 }, 10026 10027 clone: function( elem, dataAndEvents, deepDataAndEvents ) { 10028 var i, l, srcElements, destElements, 10029 clone = elem.cloneNode( true ), 10030 inPage = isAttached( elem ); 10031 10032 // Fix IE cloning issues 10033 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && 10034 !jQuery.isXMLDoc( elem ) ) { 10035 10036 // We eschew jQuery#find here for performance reasons: 10037 // https://jsperf.com/getall-vs-sizzle/2 10038 destElements = getAll( clone ); 10039 srcElements = getAll( elem ); 10040 10041 for ( i = 0, l = srcElements.length; i < l; i++ ) { 10042 fixInput( srcElements[ i ], destElements[ i ] ); 10043 } 10044 } 10045 10046 // Copy the events from the original to the clone 10047 if ( dataAndEvents ) { 10048 if ( deepDataAndEvents ) { 10049 srcElements = srcElements || getAll( elem ); 10050 destElements = destElements || getAll( clone ); 10051 10052 for ( i = 0, l = srcElements.length; i < l; i++ ) { 10053 cloneCopyEvent( srcElements[ i ], destElements[ i ] ); 10054 } 10055 } else { 10056 cloneCopyEvent( elem, clone ); 10057 } 10058 } 10059 10060 // Preserve script evaluation history 10061 destElements = getAll( clone, "script" ); 10062 if ( destElements.length > 0 ) { 10063 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); 10064 } 10065 10066 // Return the cloned set 10067 return clone; 10068 }, 10069 10070 cleanData: function( elems ) { 10071 var data, elem, type, 10072 special = jQuery.event.special, 10073 i = 0; 10074 10075 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { 10076 if ( acceptData( elem ) ) { 10077 if ( ( data = elem[ dataPriv.expando ] ) ) { 10078 if ( data.events ) { 10079 for ( type in data.events ) { 10080 if ( special[ type ] ) { 10081 jQuery.event.remove( elem, type ); 10082 10083 // This is a shortcut to avoid jQuery.event.remove's overhead 10084 } else { 10085 jQuery.removeEvent( elem, type, data.handle ); 10086 } 10087 } 10088 } 10089 10090 // Support: Chrome <=35 - 45+ 10091 // Assign undefined instead of using delete, see Data#remove 10092 elem[ dataPriv.expando ] = undefined; 10093 } 10094 if ( elem[ dataUser.expando ] ) { 10095 10096 // Support: Chrome <=35 - 45+ 10097 // Assign undefined instead of using delete, see Data#remove 10098 elem[ dataUser.expando ] = undefined; 10099 } 10100 } 10101 } 10102 } 10103} ); 10104 10105jQuery.fn.extend( { 10106 detach: function( selector ) { 10107 return remove( this, selector, true ); 10108 }, 10109 10110 remove: function( selector ) { 10111 return remove( this, selector ); 10112 }, 10113 10114 text: function( value ) { 10115 return access( this, function( value ) { 10116 return value === undefined ? 10117 jQuery.text( this ) : 10118 this.empty().each( function() { 10119 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 10120 this.textContent = value; 10121 } 10122 } ); 10123 }, null, value, arguments.length ); 10124 }, 10125 10126 append: function() { 10127 return domManip( this, arguments, function( elem ) { 10128 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 10129 var target = manipulationTarget( this, elem ); 10130 target.appendChild( elem ); 10131 } 10132 } ); 10133 }, 10134 10135 prepend: function() { 10136 return domManip( this, arguments, function( elem ) { 10137 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 10138 var target = manipulationTarget( this, elem ); 10139 target.insertBefore( elem, target.firstChild ); 10140 } 10141 } ); 10142 }, 10143 10144 before: function() { 10145 return domManip( this, arguments, function( elem ) { 10146 if ( this.parentNode ) { 10147 this.parentNode.insertBefore( elem, this ); 10148 } 10149 } ); 10150 }, 10151 10152 after: function() { 10153 return domManip( this, arguments, function( elem ) { 10154 if ( this.parentNode ) { 10155 this.parentNode.insertBefore( elem, this.nextSibling ); 10156 } 10157 } ); 10158 }, 10159 10160 empty: function() { 10161 var elem, 10162 i = 0; 10163 10164 for ( ; ( elem = this[ i ] ) != null; i++ ) { 10165 if ( elem.nodeType === 1 ) { 10166 10167 // Prevent memory leaks 10168 jQuery.cleanData( getAll( elem, false ) ); 10169 10170 // Remove any remaining nodes 10171 elem.textContent = ""; 10172 } 10173 } 10174 10175 return this; 10176 }, 10177 10178 clone: function( dataAndEvents, deepDataAndEvents ) { 10179 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 10180 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 10181 10182 return this.map( function() { 10183 return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 10184 } ); 10185 }, 10186 10187 html: function( value ) { 10188 return access( this, function( value ) { 10189 var elem = this[ 0 ] || {}, 10190 i = 0, 10191 l = this.length; 10192 10193 if ( value === undefined && elem.nodeType === 1 ) { 10194 return elem.innerHTML; 10195 } 10196 10197 // See if we can take a shortcut and just use innerHTML 10198 if ( typeof value === "string" && !rnoInnerhtml.test( value ) && 10199 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { 10200 10201 value = jQuery.htmlPrefilter( value ); 10202 10203 try { 10204 for ( ; i < l; i++ ) { 10205 elem = this[ i ] || {}; 10206 10207 // Remove element nodes and prevent memory leaks 10208 if ( elem.nodeType === 1 ) { 10209 jQuery.cleanData( getAll( elem, false ) ); 10210 elem.innerHTML = value; 10211 } 10212 } 10213 10214 elem = 0; 10215 10216 // If using innerHTML throws an exception, use the fallback method 10217 } catch ( e ) {} 10218 } 10219 10220 if ( elem ) { 10221 this.empty().append( value ); 10222 } 10223 }, null, value, arguments.length ); 10224 }, 10225 10226 replaceWith: function() { 10227 var ignored = []; 10228 10229 // Make the changes, replacing each non-ignored context element with the new content 10230 return domManip( this, arguments, function( elem ) { 10231 var parent = this.parentNode; 10232 10233 if ( jQuery.inArray( this, ignored ) < 0 ) { 10234 jQuery.cleanData( getAll( this ) ); 10235 if ( parent ) { 10236 parent.replaceChild( elem, this ); 10237 } 10238 } 10239 10240 // Force callback invocation 10241 }, ignored ); 10242 } 10243} ); 10244 10245jQuery.each( { 10246 appendTo: "append", 10247 prependTo: "prepend", 10248 insertBefore: "before", 10249 insertAfter: "after", 10250 replaceAll: "replaceWith" 10251}, function( name, original ) { 10252 jQuery.fn[ name ] = function( selector ) { 10253 var elems, 10254 ret = [], 10255 insert = jQuery( selector ), 10256 last = insert.length - 1, 10257 i = 0; 10258 10259 for ( ; i <= last; i++ ) { 10260 elems = i === last ? this : this.clone( true ); 10261 jQuery( insert[ i ] )[ original ]( elems ); 10262 10263 // Support: Android <=4.0 only, PhantomJS 1 only 10264 // .get() because push.apply(_, arraylike) throws on ancient WebKit 10265 push.apply( ret, elems.get() ); 10266 } 10267 10268 return this.pushStack( ret ); 10269 }; 10270} ); 10271var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 10272 10273var rcustomProp = /^--/; 10274 10275 10276var getStyles = function( elem ) { 10277 10278 // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) 10279 // IE throws on elements created in popups 10280 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 10281 var view = elem.ownerDocument.defaultView; 10282 10283 if ( !view || !view.opener ) { 10284 view = window; 10285 } 10286 10287 return view.getComputedStyle( elem ); 10288 }; 10289 10290var swap = function( elem, options, callback ) { 10291 var ret, name, 10292 old = {}; 10293 10294 // Remember the old values, and insert the new ones 10295 for ( name in options ) { 10296 old[ name ] = elem.style[ name ]; 10297 elem.style[ name ] = options[ name ]; 10298 } 10299 10300 ret = callback.call( elem ); 10301 10302 // Revert the old values 10303 for ( name in options ) { 10304 elem.style[ name ] = old[ name ]; 10305 } 10306 10307 return ret; 10308}; 10309 10310 10311var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); 10312 10313 10314 10315( function() { 10316 10317 // Executing both pixelPosition & boxSizingReliable tests require only one layout 10318 // so they're executed at the same time to save the second computation. 10319 function computeStyleTests() { 10320 10321 // This is a singleton, we need to execute it only once 10322 if ( !div ) { 10323 return; 10324 } 10325 10326 container.style.cssText = "position:absolute;left:-11111px;width:60px;" + 10327 "margin-top:1px;padding:0;border:0"; 10328 div.style.cssText = 10329 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + 10330 "margin:auto;border:1px;padding:1px;" + 10331 "width:60%;top:1%"; 10332 documentElement.appendChild( container ).appendChild( div ); 10333 10334 var divStyle = window.getComputedStyle( div ); 10335 pixelPositionVal = divStyle.top !== "1%"; 10336 10337 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 10338 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; 10339 10340 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 10341 // Some styles come back with percentage values, even though they shouldn't 10342 div.style.right = "60%"; 10343 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; 10344 10345 // Support: IE 9 - 11 only 10346 // Detect misreporting of content dimensions for box-sizing:border-box elements 10347 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; 10348 10349 // Support: IE 9 only 10350 // Detect overflow:scroll screwiness (gh-3699) 10351 // Support: Chrome <=64 10352 // Don't get tricked when zoom affects offsetWidth (gh-4029) 10353 div.style.position = "absolute"; 10354 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; 10355 10356 documentElement.removeChild( container ); 10357 10358 // Nullify the div so it wouldn't be stored in the memory and 10359 // it will also be a sign that checks already performed 10360 div = null; 10361 } 10362 10363 function roundPixelMeasures( measure ) { 10364 return Math.round( parseFloat( measure ) ); 10365 } 10366 10367 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, 10368 reliableTrDimensionsVal, reliableMarginLeftVal, 10369 container = document.createElement( "div" ), 10370 div = document.createElement( "div" ); 10371 10372 // Finish early in limited (non-browser) environments 10373 if ( !div.style ) { 10374 return; 10375 } 10376 10377 // Support: IE <=9 - 11 only 10378 // Style of cloned element affects source element cloned (trac-8908) 10379 div.style.backgroundClip = "content-box"; 10380 div.cloneNode( true ).style.backgroundClip = ""; 10381 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 10382 10383 jQuery.extend( support, { 10384 boxSizingReliable: function() { 10385 computeStyleTests(); 10386 return boxSizingReliableVal; 10387 }, 10388 pixelBoxStyles: function() { 10389 computeStyleTests(); 10390 return pixelBoxStylesVal; 10391 }, 10392 pixelPosition: function() { 10393 computeStyleTests(); 10394 return pixelPositionVal; 10395 }, 10396 reliableMarginLeft: function() { 10397 computeStyleTests(); 10398 return reliableMarginLeftVal; 10399 }, 10400 scrollboxSize: function() { 10401 computeStyleTests(); 10402 return scrollboxSizeVal; 10403 }, 10404 10405 // Support: IE 9 - 11+, Edge 15 - 18+ 10406 // IE/Edge misreport `getComputedStyle` of table rows with width/height 10407 // set in CSS while `offset*` properties report correct values. 10408 // Behavior in IE 9 is more subtle than in newer versions & it passes 10409 // some versions of this test; make sure not to make it pass there! 10410 // 10411 // Support: Firefox 70+ 10412 // Only Firefox includes border widths 10413 // in computed dimensions. (gh-4529) 10414 reliableTrDimensions: function() { 10415 var table, tr, trChild, trStyle; 10416 if ( reliableTrDimensionsVal == null ) { 10417 table = document.createElement( "table" ); 10418 tr = document.createElement( "tr" ); 10419 trChild = document.createElement( "div" ); 10420 10421 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 10422 tr.style.cssText = "box-sizing:content-box;border:1px solid"; 10423 10424 // Support: Chrome 86+ 10425 // Height set through cssText does not get applied. 10426 // Computed height then comes back as 0. 10427 tr.style.height = "1px"; 10428 trChild.style.height = "9px"; 10429 10430 // Support: Android 8 Chrome 86+ 10431 // In our bodyBackground.html iframe, 10432 // display for all div elements is set to "inline", 10433 // which causes a problem only in Android 8 Chrome 86. 10434 // Ensuring the div is `display: block` 10435 // gets around this issue. 10436 trChild.style.display = "block"; 10437 10438 documentElement 10439 .appendChild( table ) 10440 .appendChild( tr ) 10441 .appendChild( trChild ); 10442 10443 trStyle = window.getComputedStyle( tr ); 10444 reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + 10445 parseInt( trStyle.borderTopWidth, 10 ) + 10446 parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; 10447 10448 documentElement.removeChild( table ); 10449 } 10450 return reliableTrDimensionsVal; 10451 } 10452 } ); 10453} )(); 10454 10455 10456function curCSS( elem, name, computed ) { 10457 var width, minWidth, maxWidth, ret, 10458 isCustomProp = rcustomProp.test( name ), 10459 10460 // Support: Firefox 51+ 10461 // Retrieving style before computed somehow 10462 // fixes an issue with getting wrong values 10463 // on detached elements 10464 style = elem.style; 10465 10466 computed = computed || getStyles( elem ); 10467 10468 // getPropertyValue is needed for: 10469 // .css('filter') (IE 9 only, trac-12537) 10470 // .css('--customProperty) (gh-3144) 10471 if ( computed ) { 10472 10473 // Support: IE <=9 - 11+ 10474 // IE only supports `"float"` in `getPropertyValue`; in computed styles 10475 // it's only available as `"cssFloat"`. We no longer modify properties 10476 // sent to `.css()` apart from camelCasing, so we need to check both. 10477 // Normally, this would create difference in behavior: if 10478 // `getPropertyValue` returns an empty string, the value returned 10479 // by `.css()` would be `undefined`. This is usually the case for 10480 // disconnected elements. However, in IE even disconnected elements 10481 // with no styles return `"none"` for `getPropertyValue( "float" )` 10482 ret = computed.getPropertyValue( name ) || computed[ name ]; 10483 10484 if ( isCustomProp && ret ) { 10485 10486 // Support: Firefox 105+, Chrome <=105+ 10487 // Spec requires trimming whitespace for custom properties (gh-4926). 10488 // Firefox only trims leading whitespace. Chrome just collapses 10489 // both leading & trailing whitespace to a single space. 10490 // 10491 // Fall back to `undefined` if empty string returned. 10492 // This collapses a missing definition with property defined 10493 // and set to an empty string but there's no standard API 10494 // allowing us to differentiate them without a performance penalty 10495 // and returning `undefined` aligns with older jQuery. 10496 // 10497 // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED 10498 // as whitespace while CSS does not, but this is not a problem 10499 // because CSS preprocessing replaces them with U+000A LINE FEED 10500 // (which *is* CSS whitespace) 10501 // https://www.w3.org/TR/css-syntax-3/#input-preprocessing 10502 ret = ret.replace( rtrimCSS, "$1" ) || undefined; 10503 } 10504 10505 if ( ret === "" && !isAttached( elem ) ) { 10506 ret = jQuery.style( elem, name ); 10507 } 10508 10509 // A tribute to the "awesome hack by Dean Edwards" 10510 // Android Browser returns percentage for some values, 10511 // but width seems to be reliably pixels. 10512 // This is against the CSSOM draft spec: 10513 // https://drafts.csswg.org/cssom/#resolved-values 10514 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { 10515 10516 // Remember the original values 10517 width = style.width; 10518 minWidth = style.minWidth; 10519 maxWidth = style.maxWidth; 10520 10521 // Put in the new values to get a computed value out 10522 style.minWidth = style.maxWidth = style.width = ret; 10523 ret = computed.width; 10524 10525 // Revert the changed values 10526 style.width = width; 10527 style.minWidth = minWidth; 10528 style.maxWidth = maxWidth; 10529 } 10530 } 10531 10532 return ret !== undefined ? 10533 10534 // Support: IE <=9 - 11 only 10535 // IE returns zIndex value as an integer. 10536 ret + "" : 10537 ret; 10538} 10539 10540 10541function addGetHookIf( conditionFn, hookFn ) { 10542 10543 // Define the hook, we'll check on the first run if it's really needed. 10544 return { 10545 get: function() { 10546 if ( conditionFn() ) { 10547 10548 // Hook not needed (or it's not possible to use it due 10549 // to missing dependency), remove it. 10550 delete this.get; 10551 return; 10552 } 10553 10554 // Hook needed; redefine it so that the support test is not executed again. 10555 return ( this.get = hookFn ).apply( this, arguments ); 10556 } 10557 }; 10558} 10559 10560 10561var cssPrefixes = [ "Webkit", "Moz", "ms" ], 10562 emptyStyle = document.createElement( "div" ).style, 10563 vendorProps = {}; 10564 10565// Return a vendor-prefixed property or undefined 10566function vendorPropName( name ) { 10567 10568 // Check for vendor prefixed names 10569 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), 10570 i = cssPrefixes.length; 10571 10572 while ( i-- ) { 10573 name = cssPrefixes[ i ] + capName; 10574 if ( name in emptyStyle ) { 10575 return name; 10576 } 10577 } 10578} 10579 10580// Return a potentially-mapped jQuery.cssProps or vendor prefixed property 10581function finalPropName( name ) { 10582 var final = jQuery.cssProps[ name ] || vendorProps[ name ]; 10583 10584 if ( final ) { 10585 return final; 10586 } 10587 if ( name in emptyStyle ) { 10588 return name; 10589 } 10590 return vendorProps[ name ] = vendorPropName( name ) || name; 10591} 10592 10593 10594var 10595 10596 // Swappable if display is none or starts with table 10597 // except "table", "table-cell", or "table-caption" 10598 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display 10599 rdisplayswap = /^(none|table(?!-c[ea]).+)/, 10600 cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 10601 cssNormalTransform = { 10602 letterSpacing: "0", 10603 fontWeight: "400" 10604 }; 10605 10606function setPositiveNumber( _elem, value, subtract ) { 10607 10608 // Any relative (+/-) values have already been 10609 // normalized at this point 10610 var matches = rcssNum.exec( value ); 10611 return matches ? 10612 10613 // Guard against undefined "subtract", e.g., when used as in cssHooks 10614 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : 10615 value; 10616} 10617 10618function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { 10619 var i = dimension === "width" ? 1 : 0, 10620 extra = 0, 10621 delta = 0, 10622 marginDelta = 0; 10623 10624 // Adjustment may not be necessary 10625 if ( box === ( isBorderBox ? "border" : "content" ) ) { 10626 return 0; 10627 } 10628 10629 for ( ; i < 4; i += 2 ) { 10630 10631 // Both box models exclude margin 10632 // Count margin delta separately to only add it after scroll gutter adjustment. 10633 // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). 10634 if ( box === "margin" ) { 10635 marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); 10636 } 10637 10638 // If we get here with a content-box, we're seeking "padding" or "border" or "margin" 10639 if ( !isBorderBox ) { 10640 10641 // Add padding 10642 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 10643 10644 // For "border" or "margin", add border 10645 if ( box !== "padding" ) { 10646 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 10647 10648 // But still keep track of it otherwise 10649 } else { 10650 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 10651 } 10652 10653 // If we get here with a border-box (content + padding + border), we're seeking "content" or 10654 // "padding" or "margin" 10655 } else { 10656 10657 // For "content", subtract padding 10658 if ( box === "content" ) { 10659 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 10660 } 10661 10662 // For "content" or "padding", subtract border 10663 if ( box !== "margin" ) { 10664 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 10665 } 10666 } 10667 } 10668 10669 // Account for positive content-box scroll gutter when requested by providing computedVal 10670 if ( !isBorderBox && computedVal >= 0 ) { 10671 10672 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border 10673 // Assuming integer scroll gutter, subtract the rest and round down 10674 delta += Math.max( 0, Math.ceil( 10675 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 10676 computedVal - 10677 delta - 10678 extra - 10679 0.5 10680 10681 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 10682 // Use an explicit zero to avoid NaN (gh-3964) 10683 ) ) || 0; 10684 } 10685 10686 return delta + marginDelta; 10687} 10688 10689function getWidthOrHeight( elem, dimension, extra ) { 10690 10691 // Start with computed style 10692 var styles = getStyles( elem ), 10693 10694 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). 10695 // Fake content-box until we know it's needed to know the true value. 10696 boxSizingNeeded = !support.boxSizingReliable() || extra, 10697 isBorderBox = boxSizingNeeded && 10698 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 10699 valueIsBorderBox = isBorderBox, 10700 10701 val = curCSS( elem, dimension, styles ), 10702 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); 10703 10704 // Support: Firefox <=54 10705 // Return a confounding non-pixel value or feign ignorance, as appropriate. 10706 if ( rnumnonpx.test( val ) ) { 10707 if ( !extra ) { 10708 return val; 10709 } 10710 val = "auto"; 10711 } 10712 10713 10714 // Support: IE 9 - 11 only 10715 // Use offsetWidth/offsetHeight for when box sizing is unreliable. 10716 // In those cases, the computed value can be trusted to be border-box. 10717 if ( ( !support.boxSizingReliable() && isBorderBox || 10718 10719 // Support: IE 10 - 11+, Edge 15 - 18+ 10720 // IE/Edge misreport `getComputedStyle` of table rows with width/height 10721 // set in CSS while `offset*` properties report correct values. 10722 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 10723 !support.reliableTrDimensions() && nodeName( elem, "tr" ) || 10724 10725 // Fall back to offsetWidth/offsetHeight when value is "auto" 10726 // This happens for inline elements with no explicit setting (gh-3571) 10727 val === "auto" || 10728 10729 // Support: Android <=4.1 - 4.3 only 10730 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 10731 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && 10732 10733 // Make sure the element is visible & connected 10734 elem.getClientRects().length ) { 10735 10736 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; 10737 10738 // Where available, offsetWidth/offsetHeight approximate border box dimensions. 10739 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the 10740 // retrieved value as a content box dimension. 10741 valueIsBorderBox = offsetProp in elem; 10742 if ( valueIsBorderBox ) { 10743 val = elem[ offsetProp ]; 10744 } 10745 } 10746 10747 // Normalize "" and auto 10748 val = parseFloat( val ) || 0; 10749 10750 // Adjust for the element's box model 10751 return ( val + 10752 boxModelAdjustment( 10753 elem, 10754 dimension, 10755 extra || ( isBorderBox ? "border" : "content" ), 10756 valueIsBorderBox, 10757 styles, 10758 10759 // Provide the current computed size to request scroll gutter calculation (gh-3589) 10760 val 10761 ) 10762 ) + "px"; 10763} 10764 10765jQuery.extend( { 10766 10767 // Add in style property hooks for overriding the default 10768 // behavior of getting and setting a style property 10769 cssHooks: { 10770 opacity: { 10771 get: function( elem, computed ) { 10772 if ( computed ) { 10773 10774 // We should always get a number back from opacity 10775 var ret = curCSS( elem, "opacity" ); 10776 return ret === "" ? "1" : ret; 10777 } 10778 } 10779 } 10780 }, 10781 10782 // Don't automatically add "px" to these possibly-unitless properties 10783 cssNumber: { 10784 animationIterationCount: true, 10785 aspectRatio: true, 10786 borderImageSlice: true, 10787 columnCount: true, 10788 flexGrow: true, 10789 flexShrink: true, 10790 fontWeight: true, 10791 gridArea: true, 10792 gridColumn: true, 10793 gridColumnEnd: true, 10794 gridColumnStart: true, 10795 gridRow: true, 10796 gridRowEnd: true, 10797 gridRowStart: true, 10798 lineHeight: true, 10799 opacity: true, 10800 order: true, 10801 orphans: true, 10802 scale: true, 10803 widows: true, 10804 zIndex: true, 10805 zoom: true, 10806 10807 // SVG-related 10808 fillOpacity: true, 10809 floodOpacity: true, 10810 stopOpacity: true, 10811 strokeMiterlimit: true, 10812 strokeOpacity: true 10813 }, 10814 10815 // Add in properties whose names you wish to fix before 10816 // setting or getting the value 10817 cssProps: {}, 10818 10819 // Get and set the style property on a DOM Node 10820 style: function( elem, name, value, extra ) { 10821 10822 // Don't set styles on text and comment nodes 10823 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 10824 return; 10825 } 10826 10827 // Make sure that we're working with the right name 10828 var ret, type, hooks, 10829 origName = camelCase( name ), 10830 isCustomProp = rcustomProp.test( name ), 10831 style = elem.style; 10832 10833 // Make sure that we're working with the right name. We don't 10834 // want to query the value if it is a CSS custom property 10835 // since they are user-defined. 10836 if ( !isCustomProp ) { 10837 name = finalPropName( origName ); 10838 } 10839 10840 // Gets hook for the prefixed version, then unprefixed version 10841 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 10842 10843 // Check if we're setting a value 10844 if ( value !== undefined ) { 10845 type = typeof value; 10846 10847 // Convert "+=" or "-=" to relative numbers (trac-7345) 10848 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { 10849 value = adjustCSS( elem, name, ret ); 10850 10851 // Fixes bug trac-9237 10852 type = "number"; 10853 } 10854 10855 // Make sure that null and NaN values aren't set (trac-7116) 10856 if ( value == null || value !== value ) { 10857 return; 10858 } 10859 10860 // If a number was passed in, add the unit (except for certain CSS properties) 10861 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append 10862 // "px" to a few hardcoded values. 10863 if ( type === "number" && !isCustomProp ) { 10864 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); 10865 } 10866 10867 // background-* props affect original clone's values 10868 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { 10869 style[ name ] = "inherit"; 10870 } 10871 10872 // If a hook was provided, use that value, otherwise just set the specified value 10873 if ( !hooks || !( "set" in hooks ) || 10874 ( value = hooks.set( elem, value, extra ) ) !== undefined ) { 10875 10876 if ( isCustomProp ) { 10877 style.setProperty( name, value ); 10878 } else { 10879 style[ name ] = value; 10880 } 10881 } 10882 10883 } else { 10884 10885 // If a hook was provided get the non-computed value from there 10886 if ( hooks && "get" in hooks && 10887 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { 10888 10889 return ret; 10890 } 10891 10892 // Otherwise just get the value from the style object 10893 return style[ name ]; 10894 } 10895 }, 10896 10897 css: function( elem, name, extra, styles ) { 10898 var val, num, hooks, 10899 origName = camelCase( name ), 10900 isCustomProp = rcustomProp.test( name ); 10901 10902 // Make sure that we're working with the right name. We don't 10903 // want to modify the value if it is a CSS custom property 10904 // since they are user-defined. 10905 if ( !isCustomProp ) { 10906 name = finalPropName( origName ); 10907 } 10908 10909 // Try prefixed name followed by the unprefixed name 10910 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 10911 10912 // If a hook was provided get the computed value from there 10913 if ( hooks && "get" in hooks ) { 10914 val = hooks.get( elem, true, extra ); 10915 } 10916 10917 // Otherwise, if a way to get the computed value exists, use that 10918 if ( val === undefined ) { 10919 val = curCSS( elem, name, styles ); 10920 } 10921 10922 // Convert "normal" to computed value 10923 if ( val === "normal" && name in cssNormalTransform ) { 10924 val = cssNormalTransform[ name ]; 10925 } 10926 10927 // Make numeric if forced or a qualifier was provided and val looks numeric 10928 if ( extra === "" || extra ) { 10929 num = parseFloat( val ); 10930 return extra === true || isFinite( num ) ? num || 0 : val; 10931 } 10932 10933 return val; 10934 } 10935} ); 10936 10937jQuery.each( [ "height", "width" ], function( _i, dimension ) { 10938 jQuery.cssHooks[ dimension ] = { 10939 get: function( elem, computed, extra ) { 10940 if ( computed ) { 10941 10942 // Certain elements can have dimension info if we invisibly show them 10943 // but it must have a current display style that would benefit 10944 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && 10945 10946 // Support: Safari 8+ 10947 // Table columns in Safari have non-zero offsetWidth & zero 10948 // getBoundingClientRect().width unless display is changed. 10949 // Support: IE <=11 only 10950 // Running getBoundingClientRect on a disconnected node 10951 // in IE throws an error. 10952 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? 10953 swap( elem, cssShow, function() { 10954 return getWidthOrHeight( elem, dimension, extra ); 10955 } ) : 10956 getWidthOrHeight( elem, dimension, extra ); 10957 } 10958 }, 10959 10960 set: function( elem, value, extra ) { 10961 var matches, 10962 styles = getStyles( elem ), 10963 10964 // Only read styles.position if the test has a chance to fail 10965 // to avoid forcing a reflow. 10966 scrollboxSizeBuggy = !support.scrollboxSize() && 10967 styles.position === "absolute", 10968 10969 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) 10970 boxSizingNeeded = scrollboxSizeBuggy || extra, 10971 isBorderBox = boxSizingNeeded && 10972 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 10973 subtract = extra ? 10974 boxModelAdjustment( 10975 elem, 10976 dimension, 10977 extra, 10978 isBorderBox, 10979 styles 10980 ) : 10981 0; 10982 10983 // Account for unreliable border-box dimensions by comparing offset* to computed and 10984 // faking a content-box to get border and padding (gh-3699) 10985 if ( isBorderBox && scrollboxSizeBuggy ) { 10986 subtract -= Math.ceil( 10987 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 10988 parseFloat( styles[ dimension ] ) - 10989 boxModelAdjustment( elem, dimension, "border", false, styles ) - 10990 0.5 10991 ); 10992 } 10993 10994 // Convert to pixels if value adjustment is needed 10995 if ( subtract && ( matches = rcssNum.exec( value ) ) && 10996 ( matches[ 3 ] || "px" ) !== "px" ) { 10997 10998 elem.style[ dimension ] = value; 10999 value = jQuery.css( elem, dimension ); 11000 } 11001 11002 return setPositiveNumber( elem, value, subtract ); 11003 } 11004 }; 11005} ); 11006 11007jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, 11008 function( elem, computed ) { 11009 if ( computed ) { 11010 return ( parseFloat( curCSS( elem, "marginLeft" ) ) || 11011 elem.getBoundingClientRect().left - 11012 swap( elem, { marginLeft: 0 }, function() { 11013 return elem.getBoundingClientRect().left; 11014 } ) 11015 ) + "px"; 11016 } 11017 } 11018); 11019 11020// These hooks are used by animate to expand properties 11021jQuery.each( { 11022 margin: "", 11023 padding: "", 11024 border: "Width" 11025}, function( prefix, suffix ) { 11026 jQuery.cssHooks[ prefix + suffix ] = { 11027 expand: function( value ) { 11028 var i = 0, 11029 expanded = {}, 11030 11031 // Assumes a single number if not a string 11032 parts = typeof value === "string" ? value.split( " " ) : [ value ]; 11033 11034 for ( ; i < 4; i++ ) { 11035 expanded[ prefix + cssExpand[ i ] + suffix ] = 11036 parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; 11037 } 11038 11039 return expanded; 11040 } 11041 }; 11042 11043 if ( prefix !== "margin" ) { 11044 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; 11045 } 11046} ); 11047 11048jQuery.fn.extend( { 11049 css: function( name, value ) { 11050 return access( this, function( elem, name, value ) { 11051 var styles, len, 11052 map = {}, 11053 i = 0; 11054 11055 if ( Array.isArray( name ) ) { 11056 styles = getStyles( elem ); 11057 len = name.length; 11058 11059 for ( ; i < len; i++ ) { 11060 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); 11061 } 11062 11063 return map; 11064 } 11065 11066 return value !== undefined ? 11067 jQuery.style( elem, name, value ) : 11068 jQuery.css( elem, name ); 11069 }, name, value, arguments.length > 1 ); 11070 } 11071} ); 11072 11073 11074function Tween( elem, options, prop, end, easing ) { 11075 return new Tween.prototype.init( elem, options, prop, end, easing ); 11076} 11077jQuery.Tween = Tween; 11078 11079Tween.prototype = { 11080 constructor: Tween, 11081 init: function( elem, options, prop, end, easing, unit ) { 11082 this.elem = elem; 11083 this.prop = prop; 11084 this.easing = easing || jQuery.easing._default; 11085 this.options = options; 11086 this.start = this.now = this.cur(); 11087 this.end = end; 11088 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 11089 }, 11090 cur: function() { 11091 var hooks = Tween.propHooks[ this.prop ]; 11092 11093 return hooks && hooks.get ? 11094 hooks.get( this ) : 11095 Tween.propHooks._default.get( this ); 11096 }, 11097 run: function( percent ) { 11098 var eased, 11099 hooks = Tween.propHooks[ this.prop ]; 11100 11101 if ( this.options.duration ) { 11102 this.pos = eased = jQuery.easing[ this.easing ]( 11103 percent, this.options.duration * percent, 0, 1, this.options.duration 11104 ); 11105 } else { 11106 this.pos = eased = percent; 11107 } 11108 this.now = ( this.end - this.start ) * eased + this.start; 11109 11110 if ( this.options.step ) { 11111 this.options.step.call( this.elem, this.now, this ); 11112 } 11113 11114 if ( hooks && hooks.set ) { 11115 hooks.set( this ); 11116 } else { 11117 Tween.propHooks._default.set( this ); 11118 } 11119 return this; 11120 } 11121}; 11122 11123Tween.prototype.init.prototype = Tween.prototype; 11124 11125Tween.propHooks = { 11126 _default: { 11127 get: function( tween ) { 11128 var result; 11129 11130 // Use a property on the element directly when it is not a DOM element, 11131 // or when there is no matching style property that exists. 11132 if ( tween.elem.nodeType !== 1 || 11133 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { 11134 return tween.elem[ tween.prop ]; 11135 } 11136 11137 // Passing an empty string as a 3rd parameter to .css will automatically 11138 // attempt a parseFloat and fallback to a string if the parse fails. 11139 // Simple values such as "10px" are parsed to Float; 11140 // complex values such as "rotate(1rad)" are returned as-is. 11141 result = jQuery.css( tween.elem, tween.prop, "" ); 11142 11143 // Empty strings, null, undefined and "auto" are converted to 0. 11144 return !result || result === "auto" ? 0 : result; 11145 }, 11146 set: function( tween ) { 11147 11148 // Use step hook for back compat. 11149 // Use cssHook if its there. 11150 // Use .style if available and use plain properties where available. 11151 if ( jQuery.fx.step[ tween.prop ] ) { 11152 jQuery.fx.step[ tween.prop ]( tween ); 11153 } else if ( tween.elem.nodeType === 1 && ( 11154 jQuery.cssHooks[ tween.prop ] || 11155 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { 11156 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 11157 } else { 11158 tween.elem[ tween.prop ] = tween.now; 11159 } 11160 } 11161 } 11162}; 11163 11164// Support: IE <=9 only 11165// Panic based approach to setting things on disconnected nodes 11166Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 11167 set: function( tween ) { 11168 if ( tween.elem.nodeType && tween.elem.parentNode ) { 11169 tween.elem[ tween.prop ] = tween.now; 11170 } 11171 } 11172}; 11173 11174jQuery.easing = { 11175 linear: function( p ) { 11176 return p; 11177 }, 11178 swing: function( p ) { 11179 return 0.5 - Math.cos( p * Math.PI ) / 2; 11180 }, 11181 _default: "swing" 11182}; 11183 11184jQuery.fx = Tween.prototype.init; 11185 11186// Back compat <1.8 extension point 11187jQuery.fx.step = {}; 11188 11189 11190 11191 11192var 11193 fxNow, inProgress, 11194 rfxtypes = /^(?:toggle|show|hide)$/, 11195 rrun = /queueHooks$/; 11196 11197function schedule() { 11198 if ( inProgress ) { 11199 if ( document.hidden === false && window.requestAnimationFrame ) { 11200 window.requestAnimationFrame( schedule ); 11201 } else { 11202 window.setTimeout( schedule, jQuery.fx.interval ); 11203 } 11204 11205 jQuery.fx.tick(); 11206 } 11207} 11208 11209// Animations created synchronously will run synchronously 11210function createFxNow() { 11211 window.setTimeout( function() { 11212 fxNow = undefined; 11213 } ); 11214 return ( fxNow = Date.now() ); 11215} 11216 11217// Generate parameters to create a standard animation 11218function genFx( type, includeWidth ) { 11219 var which, 11220 i = 0, 11221 attrs = { height: type }; 11222 11223 // If we include width, step value is 1 to do all cssExpand values, 11224 // otherwise step value is 2 to skip over Left and Right 11225 includeWidth = includeWidth ? 1 : 0; 11226 for ( ; i < 4; i += 2 - includeWidth ) { 11227 which = cssExpand[ i ]; 11228 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; 11229 } 11230 11231 if ( includeWidth ) { 11232 attrs.opacity = attrs.width = type; 11233 } 11234 11235 return attrs; 11236} 11237 11238function createTween( value, prop, animation ) { 11239 var tween, 11240 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), 11241 index = 0, 11242 length = collection.length; 11243 for ( ; index < length; index++ ) { 11244 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { 11245 11246 // We're done with this property 11247 return tween; 11248 } 11249 } 11250} 11251 11252function defaultPrefilter( elem, props, opts ) { 11253 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, 11254 isBox = "width" in props || "height" in props, 11255 anim = this, 11256 orig = {}, 11257 style = elem.style, 11258 hidden = elem.nodeType && isHiddenWithinTree( elem ), 11259 dataShow = dataPriv.get( elem, "fxshow" ); 11260 11261 // Queue-skipping animations hijack the fx hooks 11262 if ( !opts.queue ) { 11263 hooks = jQuery._queueHooks( elem, "fx" ); 11264 if ( hooks.unqueued == null ) { 11265 hooks.unqueued = 0; 11266 oldfire = hooks.empty.fire; 11267 hooks.empty.fire = function() { 11268 if ( !hooks.unqueued ) { 11269 oldfire(); 11270 } 11271 }; 11272 } 11273 hooks.unqueued++; 11274 11275 anim.always( function() { 11276 11277 // Ensure the complete handler is called before this completes 11278 anim.always( function() { 11279 hooks.unqueued--; 11280 if ( !jQuery.queue( elem, "fx" ).length ) { 11281 hooks.empty.fire(); 11282 } 11283 } ); 11284 } ); 11285 } 11286 11287 // Detect show/hide animations 11288 for ( prop in props ) { 11289 value = props[ prop ]; 11290 if ( rfxtypes.test( value ) ) { 11291 delete props[ prop ]; 11292 toggle = toggle || value === "toggle"; 11293 if ( value === ( hidden ? "hide" : "show" ) ) { 11294 11295 // Pretend to be hidden if this is a "show" and 11296 // there is still data from a stopped show/hide 11297 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { 11298 hidden = true; 11299 11300 // Ignore all other no-op show/hide data 11301 } else { 11302 continue; 11303 } 11304 } 11305 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); 11306 } 11307 } 11308 11309 // Bail out if this is a no-op like .hide().hide() 11310 propTween = !jQuery.isEmptyObject( props ); 11311 if ( !propTween && jQuery.isEmptyObject( orig ) ) { 11312 return; 11313 } 11314 11315 // Restrict "overflow" and "display" styles during box animations 11316 if ( isBox && elem.nodeType === 1 ) { 11317 11318 // Support: IE <=9 - 11, Edge 12 - 15 11319 // Record all 3 overflow attributes because IE does not infer the shorthand 11320 // from identically-valued overflowX and overflowY and Edge just mirrors 11321 // the overflowX value there. 11322 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; 11323 11324 // Identify a display type, preferring old show/hide data over the CSS cascade 11325 restoreDisplay = dataShow && dataShow.display; 11326 if ( restoreDisplay == null ) { 11327 restoreDisplay = dataPriv.get( elem, "display" ); 11328 } 11329 display = jQuery.css( elem, "display" ); 11330 if ( display === "none" ) { 11331 if ( restoreDisplay ) { 11332 display = restoreDisplay; 11333 } else { 11334 11335 // Get nonempty value(s) by temporarily forcing visibility 11336 showHide( [ elem ], true ); 11337 restoreDisplay = elem.style.display || restoreDisplay; 11338 display = jQuery.css( elem, "display" ); 11339 showHide( [ elem ] ); 11340 } 11341 } 11342 11343 // Animate inline elements as inline-block 11344 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { 11345 if ( jQuery.css( elem, "float" ) === "none" ) { 11346 11347 // Restore the original display value at the end of pure show/hide animations 11348 if ( !propTween ) { 11349 anim.done( function() { 11350 style.display = restoreDisplay; 11351 } ); 11352 if ( restoreDisplay == null ) { 11353 display = style.display; 11354 restoreDisplay = display === "none" ? "" : display; 11355 } 11356 } 11357 style.display = "inline-block"; 11358 } 11359 } 11360 } 11361 11362 if ( opts.overflow ) { 11363 style.overflow = "hidden"; 11364 anim.always( function() { 11365 style.overflow = opts.overflow[ 0 ]; 11366 style.overflowX = opts.overflow[ 1 ]; 11367 style.overflowY = opts.overflow[ 2 ]; 11368 } ); 11369 } 11370 11371 // Implement show/hide animations 11372 propTween = false; 11373 for ( prop in orig ) { 11374 11375 // General show/hide setup for this element animation 11376 if ( !propTween ) { 11377 if ( dataShow ) { 11378 if ( "hidden" in dataShow ) { 11379 hidden = dataShow.hidden; 11380 } 11381 } else { 11382 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); 11383 } 11384 11385 // Store hidden/visible for toggle so `.stop().toggle()` "reverses" 11386 if ( toggle ) { 11387 dataShow.hidden = !hidden; 11388 } 11389 11390 // Show elements before animating them 11391 if ( hidden ) { 11392 showHide( [ elem ], true ); 11393 } 11394 11395 /* eslint-disable no-loop-func */ 11396 11397 anim.done( function() { 11398 11399 /* eslint-enable no-loop-func */ 11400 11401 // The final step of a "hide" animation is actually hiding the element 11402 if ( !hidden ) { 11403 showHide( [ elem ] ); 11404 } 11405 dataPriv.remove( elem, "fxshow" ); 11406 for ( prop in orig ) { 11407 jQuery.style( elem, prop, orig[ prop ] ); 11408 } 11409 } ); 11410 } 11411 11412 // Per-property setup 11413 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); 11414 if ( !( prop in dataShow ) ) { 11415 dataShow[ prop ] = propTween.start; 11416 if ( hidden ) { 11417 propTween.end = propTween.start; 11418 propTween.start = 0; 11419 } 11420 } 11421 } 11422} 11423 11424function propFilter( props, specialEasing ) { 11425 var index, name, easing, value, hooks; 11426 11427 // camelCase, specialEasing and expand cssHook pass 11428 for ( index in props ) { 11429 name = camelCase( index ); 11430 easing = specialEasing[ name ]; 11431 value = props[ index ]; 11432 if ( Array.isArray( value ) ) { 11433 easing = value[ 1 ]; 11434 value = props[ index ] = value[ 0 ]; 11435 } 11436 11437 if ( index !== name ) { 11438 props[ name ] = value; 11439 delete props[ index ]; 11440 } 11441 11442 hooks = jQuery.cssHooks[ name ]; 11443 if ( hooks && "expand" in hooks ) { 11444 value = hooks.expand( value ); 11445 delete props[ name ]; 11446 11447 // Not quite $.extend, this won't overwrite existing keys. 11448 // Reusing 'index' because we have the correct "name" 11449 for ( index in value ) { 11450 if ( !( index in props ) ) { 11451 props[ index ] = value[ index ]; 11452 specialEasing[ index ] = easing; 11453 } 11454 } 11455 } else { 11456 specialEasing[ name ] = easing; 11457 } 11458 } 11459} 11460 11461function Animation( elem, properties, options ) { 11462 var result, 11463 stopped, 11464 index = 0, 11465 length = Animation.prefilters.length, 11466 deferred = jQuery.Deferred().always( function() { 11467 11468 // Don't match elem in the :animated selector 11469 delete tick.elem; 11470 } ), 11471 tick = function() { 11472 if ( stopped ) { 11473 return false; 11474 } 11475 var currentTime = fxNow || createFxNow(), 11476 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), 11477 11478 // Support: Android 2.3 only 11479 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) 11480 temp = remaining / animation.duration || 0, 11481 percent = 1 - temp, 11482 index = 0, 11483 length = animation.tweens.length; 11484 11485 for ( ; index < length; index++ ) { 11486 animation.tweens[ index ].run( percent ); 11487 } 11488 11489 deferred.notifyWith( elem, [ animation, percent, remaining ] ); 11490 11491 // If there's more to do, yield 11492 if ( percent < 1 && length ) { 11493 return remaining; 11494 } 11495 11496 // If this was an empty animation, synthesize a final progress notification 11497 if ( !length ) { 11498 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 11499 } 11500 11501 // Resolve the animation and report its conclusion 11502 deferred.resolveWith( elem, [ animation ] ); 11503 return false; 11504 }, 11505 animation = deferred.promise( { 11506 elem: elem, 11507 props: jQuery.extend( {}, properties ), 11508 opts: jQuery.extend( true, { 11509 specialEasing: {}, 11510 easing: jQuery.easing._default 11511 }, options ), 11512 originalProperties: properties, 11513 originalOptions: options, 11514 startTime: fxNow || createFxNow(), 11515 duration: options.duration, 11516 tweens: [], 11517 createTween: function( prop, end ) { 11518 var tween = jQuery.Tween( elem, animation.opts, prop, end, 11519 animation.opts.specialEasing[ prop ] || animation.opts.easing ); 11520 animation.tweens.push( tween ); 11521 return tween; 11522 }, 11523 stop: function( gotoEnd ) { 11524 var index = 0, 11525 11526 // If we are going to the end, we want to run all the tweens 11527 // otherwise we skip this part 11528 length = gotoEnd ? animation.tweens.length : 0; 11529 if ( stopped ) { 11530 return this; 11531 } 11532 stopped = true; 11533 for ( ; index < length; index++ ) { 11534 animation.tweens[ index ].run( 1 ); 11535 } 11536 11537 // Resolve when we played the last frame; otherwise, reject 11538 if ( gotoEnd ) { 11539 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 11540 deferred.resolveWith( elem, [ animation, gotoEnd ] ); 11541 } else { 11542 deferred.rejectWith( elem, [ animation, gotoEnd ] ); 11543 } 11544 return this; 11545 } 11546 } ), 11547 props = animation.props; 11548 11549 propFilter( props, animation.opts.specialEasing ); 11550 11551 for ( ; index < length; index++ ) { 11552 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); 11553 if ( result ) { 11554 if ( isFunction( result.stop ) ) { 11555 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = 11556 result.stop.bind( result ); 11557 } 11558 return result; 11559 } 11560 } 11561 11562 jQuery.map( props, createTween, animation ); 11563 11564 if ( isFunction( animation.opts.start ) ) { 11565 animation.opts.start.call( elem, animation ); 11566 } 11567 11568 // Attach callbacks from options 11569 animation 11570 .progress( animation.opts.progress ) 11571 .done( animation.opts.done, animation.opts.complete ) 11572 .fail( animation.opts.fail ) 11573 .always( animation.opts.always ); 11574 11575 jQuery.fx.timer( 11576 jQuery.extend( tick, { 11577 elem: elem, 11578 anim: animation, 11579 queue: animation.opts.queue 11580 } ) 11581 ); 11582 11583 return animation; 11584} 11585 11586jQuery.Animation = jQuery.extend( Animation, { 11587 11588 tweeners: { 11589 "*": [ function( prop, value ) { 11590 var tween = this.createTween( prop, value ); 11591 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); 11592 return tween; 11593 } ] 11594 }, 11595 11596 tweener: function( props, callback ) { 11597 if ( isFunction( props ) ) { 11598 callback = props; 11599 props = [ "*" ]; 11600 } else { 11601 props = props.match( rnothtmlwhite ); 11602 } 11603 11604 var prop, 11605 index = 0, 11606 length = props.length; 11607 11608 for ( ; index < length; index++ ) { 11609 prop = props[ index ]; 11610 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; 11611 Animation.tweeners[ prop ].unshift( callback ); 11612 } 11613 }, 11614 11615 prefilters: [ defaultPrefilter ], 11616 11617 prefilter: function( callback, prepend ) { 11618 if ( prepend ) { 11619 Animation.prefilters.unshift( callback ); 11620 } else { 11621 Animation.prefilters.push( callback ); 11622 } 11623 } 11624} ); 11625 11626jQuery.speed = function( speed, easing, fn ) { 11627 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { 11628 complete: fn || !fn && easing || 11629 isFunction( speed ) && speed, 11630 duration: speed, 11631 easing: fn && easing || easing && !isFunction( easing ) && easing 11632 }; 11633 11634 // Go to the end state if fx are off 11635 if ( jQuery.fx.off ) { 11636 opt.duration = 0; 11637 11638 } else { 11639 if ( typeof opt.duration !== "number" ) { 11640 if ( opt.duration in jQuery.fx.speeds ) { 11641 opt.duration = jQuery.fx.speeds[ opt.duration ]; 11642 11643 } else { 11644 opt.duration = jQuery.fx.speeds._default; 11645 } 11646 } 11647 } 11648 11649 // Normalize opt.queue - true/undefined/null -> "fx" 11650 if ( opt.queue == null || opt.queue === true ) { 11651 opt.queue = "fx"; 11652 } 11653 11654 // Queueing 11655 opt.old = opt.complete; 11656 11657 opt.complete = function() { 11658 if ( isFunction( opt.old ) ) { 11659 opt.old.call( this ); 11660 } 11661 11662 if ( opt.queue ) { 11663 jQuery.dequeue( this, opt.queue ); 11664 } 11665 }; 11666 11667 return opt; 11668}; 11669 11670jQuery.fn.extend( { 11671 fadeTo: function( speed, to, easing, callback ) { 11672 11673 // Show any hidden elements after setting opacity to 0 11674 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() 11675 11676 // Animate to the value specified 11677 .end().animate( { opacity: to }, speed, easing, callback ); 11678 }, 11679 animate: function( prop, speed, easing, callback ) { 11680 var empty = jQuery.isEmptyObject( prop ), 11681 optall = jQuery.speed( speed, easing, callback ), 11682 doAnimation = function() { 11683 11684 // Operate on a copy of prop so per-property easing won't be lost 11685 var anim = Animation( this, jQuery.extend( {}, prop ), optall ); 11686 11687 // Empty animations, or finishing resolves immediately 11688 if ( empty || dataPriv.get( this, "finish" ) ) { 11689 anim.stop( true ); 11690 } 11691 }; 11692 11693 doAnimation.finish = doAnimation; 11694 11695 return empty || optall.queue === false ? 11696 this.each( doAnimation ) : 11697 this.queue( optall.queue, doAnimation ); 11698 }, 11699 stop: function( type, clearQueue, gotoEnd ) { 11700 var stopQueue = function( hooks ) { 11701 var stop = hooks.stop; 11702 delete hooks.stop; 11703 stop( gotoEnd ); 11704 }; 11705 11706 if ( typeof type !== "string" ) { 11707 gotoEnd = clearQueue; 11708 clearQueue = type; 11709 type = undefined; 11710 } 11711 if ( clearQueue ) { 11712 this.queue( type || "fx", [] ); 11713 } 11714 11715 return this.each( function() { 11716 var dequeue = true, 11717 index = type != null && type + "queueHooks", 11718 timers = jQuery.timers, 11719 data = dataPriv.get( this ); 11720 11721 if ( index ) { 11722 if ( data[ index ] && data[ index ].stop ) { 11723 stopQueue( data[ index ] ); 11724 } 11725 } else { 11726 for ( index in data ) { 11727 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { 11728 stopQueue( data[ index ] ); 11729 } 11730 } 11731 } 11732 11733 for ( index = timers.length; index--; ) { 11734 if ( timers[ index ].elem === this && 11735 ( type == null || timers[ index ].queue === type ) ) { 11736 11737 timers[ index ].anim.stop( gotoEnd ); 11738 dequeue = false; 11739 timers.splice( index, 1 ); 11740 } 11741 } 11742 11743 // Start the next in the queue if the last step wasn't forced. 11744 // Timers currently will call their complete callbacks, which 11745 // will dequeue but only if they were gotoEnd. 11746 if ( dequeue || !gotoEnd ) { 11747 jQuery.dequeue( this, type ); 11748 } 11749 } ); 11750 }, 11751 finish: function( type ) { 11752 if ( type !== false ) { 11753 type = type || "fx"; 11754 } 11755 return this.each( function() { 11756 var index, 11757 data = dataPriv.get( this ), 11758 queue = data[ type + "queue" ], 11759 hooks = data[ type + "queueHooks" ], 11760 timers = jQuery.timers, 11761 length = queue ? queue.length : 0; 11762 11763 // Enable finishing flag on private data 11764 data.finish = true; 11765 11766 // Empty the queue first 11767 jQuery.queue( this, type, [] ); 11768 11769 if ( hooks && hooks.stop ) { 11770 hooks.stop.call( this, true ); 11771 } 11772 11773 // Look for any active animations, and finish them 11774 for ( index = timers.length; index--; ) { 11775 if ( timers[ index ].elem === this && timers[ index ].queue === type ) { 11776 timers[ index ].anim.stop( true ); 11777 timers.splice( index, 1 ); 11778 } 11779 } 11780 11781 // Look for any animations in the old queue and finish them 11782 for ( index = 0; index < length; index++ ) { 11783 if ( queue[ index ] && queue[ index ].finish ) { 11784 queue[ index ].finish.call( this ); 11785 } 11786 } 11787 11788 // Turn off finishing flag 11789 delete data.finish; 11790 } ); 11791 } 11792} ); 11793 11794jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { 11795 var cssFn = jQuery.fn[ name ]; 11796 jQuery.fn[ name ] = function( speed, easing, callback ) { 11797 return speed == null || typeof speed === "boolean" ? 11798 cssFn.apply( this, arguments ) : 11799 this.animate( genFx( name, true ), speed, easing, callback ); 11800 }; 11801} ); 11802 11803// Generate shortcuts for custom animations 11804jQuery.each( { 11805 slideDown: genFx( "show" ), 11806 slideUp: genFx( "hide" ), 11807 slideToggle: genFx( "toggle" ), 11808 fadeIn: { opacity: "show" }, 11809 fadeOut: { opacity: "hide" }, 11810 fadeToggle: { opacity: "toggle" } 11811}, function( name, props ) { 11812 jQuery.fn[ name ] = function( speed, easing, callback ) { 11813 return this.animate( props, speed, easing, callback ); 11814 }; 11815} ); 11816 11817jQuery.timers = []; 11818jQuery.fx.tick = function() { 11819 var timer, 11820 i = 0, 11821 timers = jQuery.timers; 11822 11823 fxNow = Date.now(); 11824 11825 for ( ; i < timers.length; i++ ) { 11826 timer = timers[ i ]; 11827 11828 // Run the timer and safely remove it when done (allowing for external removal) 11829 if ( !timer() && timers[ i ] === timer ) { 11830 timers.splice( i--, 1 ); 11831 } 11832 } 11833 11834 if ( !timers.length ) { 11835 jQuery.fx.stop(); 11836 } 11837 fxNow = undefined; 11838}; 11839 11840jQuery.fx.timer = function( timer ) { 11841 jQuery.timers.push( timer ); 11842 jQuery.fx.start(); 11843}; 11844 11845jQuery.fx.interval = 13; 11846jQuery.fx.start = function() { 11847 if ( inProgress ) { 11848 return; 11849 } 11850 11851 inProgress = true; 11852 schedule(); 11853}; 11854 11855jQuery.fx.stop = function() { 11856 inProgress = null; 11857}; 11858 11859jQuery.fx.speeds = { 11860 slow: 600, 11861 fast: 200, 11862 11863 // Default speed 11864 _default: 400 11865}; 11866 11867 11868// Based off of the plugin by Clint Helfers, with permission. 11869jQuery.fn.delay = function( time, type ) { 11870 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 11871 type = type || "fx"; 11872 11873 return this.queue( type, function( next, hooks ) { 11874 var timeout = window.setTimeout( next, time ); 11875 hooks.stop = function() { 11876 window.clearTimeout( timeout ); 11877 }; 11878 } ); 11879}; 11880 11881 11882( function() { 11883 var input = document.createElement( "input" ), 11884 select = document.createElement( "select" ), 11885 opt = select.appendChild( document.createElement( "option" ) ); 11886 11887 input.type = "checkbox"; 11888 11889 // Support: Android <=4.3 only 11890 // Default value for a checkbox should be "on" 11891 support.checkOn = input.value !== ""; 11892 11893 // Support: IE <=11 only 11894 // Must access selectedIndex to make default options select 11895 support.optSelected = opt.selected; 11896 11897 // Support: IE <=11 only 11898 // An input loses its value after becoming a radio 11899 input = document.createElement( "input" ); 11900 input.value = "t"; 11901 input.type = "radio"; 11902 support.radioValue = input.value === "t"; 11903} )(); 11904 11905 11906var boolHook, 11907 attrHandle = jQuery.expr.attrHandle; 11908 11909jQuery.fn.extend( { 11910 attr: function( name, value ) { 11911 return access( this, jQuery.attr, name, value, arguments.length > 1 ); 11912 }, 11913 11914 removeAttr: function( name ) { 11915 return this.each( function() { 11916 jQuery.removeAttr( this, name ); 11917 } ); 11918 } 11919} ); 11920 11921jQuery.extend( { 11922 attr: function( elem, name, value ) { 11923 var ret, hooks, 11924 nType = elem.nodeType; 11925 11926 // Don't get/set attributes on text, comment and attribute nodes 11927 if ( nType === 3 || nType === 8 || nType === 2 ) { 11928 return; 11929 } 11930 11931 // Fallback to prop when attributes are not supported 11932 if ( typeof elem.getAttribute === "undefined" ) { 11933 return jQuery.prop( elem, name, value ); 11934 } 11935 11936 // Attribute hooks are determined by the lowercase version 11937 // Grab necessary hook if one is defined 11938 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 11939 hooks = jQuery.attrHooks[ name.toLowerCase() ] || 11940 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); 11941 } 11942 11943 if ( value !== undefined ) { 11944 if ( value === null ) { 11945 jQuery.removeAttr( elem, name ); 11946 return; 11947 } 11948 11949 if ( hooks && "set" in hooks && 11950 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 11951 return ret; 11952 } 11953 11954 elem.setAttribute( name, value + "" ); 11955 return value; 11956 } 11957 11958 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 11959 return ret; 11960 } 11961 11962 ret = jQuery.find.attr( elem, name ); 11963 11964 // Non-existent attributes return null, we normalize to undefined 11965 return ret == null ? undefined : ret; 11966 }, 11967 11968 attrHooks: { 11969 type: { 11970 set: function( elem, value ) { 11971 if ( !support.radioValue && value === "radio" && 11972 nodeName( elem, "input" ) ) { 11973 var val = elem.value; 11974 elem.setAttribute( "type", value ); 11975 if ( val ) { 11976 elem.value = val; 11977 } 11978 return value; 11979 } 11980 } 11981 } 11982 }, 11983 11984 removeAttr: function( elem, value ) { 11985 var name, 11986 i = 0, 11987 11988 // Attribute names can contain non-HTML whitespace characters 11989 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 11990 attrNames = value && value.match( rnothtmlwhite ); 11991 11992 if ( attrNames && elem.nodeType === 1 ) { 11993 while ( ( name = attrNames[ i++ ] ) ) { 11994 elem.removeAttribute( name ); 11995 } 11996 } 11997 } 11998} ); 11999 12000// Hooks for boolean attributes 12001boolHook = { 12002 set: function( elem, value, name ) { 12003 if ( value === false ) { 12004 12005 // Remove boolean attributes when set to false 12006 jQuery.removeAttr( elem, name ); 12007 } else { 12008 elem.setAttribute( name, name ); 12009 } 12010 return name; 12011 } 12012}; 12013 12014jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { 12015 var getter = attrHandle[ name ] || jQuery.find.attr; 12016 12017 attrHandle[ name ] = function( elem, name, isXML ) { 12018 var ret, handle, 12019 lowercaseName = name.toLowerCase(); 12020 12021 if ( !isXML ) { 12022 12023 // Avoid an infinite loop by temporarily removing this function from the getter 12024 handle = attrHandle[ lowercaseName ]; 12025 attrHandle[ lowercaseName ] = ret; 12026 ret = getter( elem, name, isXML ) != null ? 12027 lowercaseName : 12028 null; 12029 attrHandle[ lowercaseName ] = handle; 12030 } 12031 return ret; 12032 }; 12033} ); 12034 12035 12036 12037 12038var rfocusable = /^(?:input|select|textarea|button)$/i, 12039 rclickable = /^(?:a|area)$/i; 12040 12041jQuery.fn.extend( { 12042 prop: function( name, value ) { 12043 return access( this, jQuery.prop, name, value, arguments.length > 1 ); 12044 }, 12045 12046 removeProp: function( name ) { 12047 return this.each( function() { 12048 delete this[ jQuery.propFix[ name ] || name ]; 12049 } ); 12050 } 12051} ); 12052 12053jQuery.extend( { 12054 prop: function( elem, name, value ) { 12055 var ret, hooks, 12056 nType = elem.nodeType; 12057 12058 // Don't get/set properties on text, comment and attribute nodes 12059 if ( nType === 3 || nType === 8 || nType === 2 ) { 12060 return; 12061 } 12062 12063 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 12064 12065 // Fix name and attach hooks 12066 name = jQuery.propFix[ name ] || name; 12067 hooks = jQuery.propHooks[ name ]; 12068 } 12069 12070 if ( value !== undefined ) { 12071 if ( hooks && "set" in hooks && 12072 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 12073 return ret; 12074 } 12075 12076 return ( elem[ name ] = value ); 12077 } 12078 12079 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 12080 return ret; 12081 } 12082 12083 return elem[ name ]; 12084 }, 12085 12086 propHooks: { 12087 tabIndex: { 12088 get: function( elem ) { 12089 12090 // Support: IE <=9 - 11 only 12091 // elem.tabIndex doesn't always return the 12092 // correct value when it hasn't been explicitly set 12093 // Use proper attribute retrieval (trac-12072) 12094 var tabindex = jQuery.find.attr( elem, "tabindex" ); 12095 12096 if ( tabindex ) { 12097 return parseInt( tabindex, 10 ); 12098 } 12099 12100 if ( 12101 rfocusable.test( elem.nodeName ) || 12102 rclickable.test( elem.nodeName ) && 12103 elem.href 12104 ) { 12105 return 0; 12106 } 12107 12108 return -1; 12109 } 12110 } 12111 }, 12112 12113 propFix: { 12114 "for": "htmlFor", 12115 "class": "className" 12116 } 12117} ); 12118 12119// Support: IE <=11 only 12120// Accessing the selectedIndex property 12121// forces the browser to respect setting selected 12122// on the option 12123// The getter ensures a default option is selected 12124// when in an optgroup 12125// eslint rule "no-unused-expressions" is disabled for this code 12126// since it considers such accessions noop 12127if ( !support.optSelected ) { 12128 jQuery.propHooks.selected = { 12129 get: function( elem ) { 12130 12131 /* eslint no-unused-expressions: "off" */ 12132 12133 var parent = elem.parentNode; 12134 if ( parent && parent.parentNode ) { 12135 parent.parentNode.selectedIndex; 12136 } 12137 return null; 12138 }, 12139 set: function( elem ) { 12140 12141 /* eslint no-unused-expressions: "off" */ 12142 12143 var parent = elem.parentNode; 12144 if ( parent ) { 12145 parent.selectedIndex; 12146 12147 if ( parent.parentNode ) { 12148 parent.parentNode.selectedIndex; 12149 } 12150 } 12151 } 12152 }; 12153} 12154 12155jQuery.each( [ 12156 "tabIndex", 12157 "readOnly", 12158 "maxLength", 12159 "cellSpacing", 12160 "cellPadding", 12161 "rowSpan", 12162 "colSpan", 12163 "useMap", 12164 "frameBorder", 12165 "contentEditable" 12166], function() { 12167 jQuery.propFix[ this.toLowerCase() ] = this; 12168} ); 12169 12170 12171 12172 12173 // Strip and collapse whitespace according to HTML spec 12174 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 12175 function stripAndCollapse( value ) { 12176 var tokens = value.match( rnothtmlwhite ) || []; 12177 return tokens.join( " " ); 12178 } 12179 12180 12181function getClass( elem ) { 12182 return elem.getAttribute && elem.getAttribute( "class" ) || ""; 12183} 12184 12185function classesToArray( value ) { 12186 if ( Array.isArray( value ) ) { 12187 return value; 12188 } 12189 if ( typeof value === "string" ) { 12190 return value.match( rnothtmlwhite ) || []; 12191 } 12192 return []; 12193} 12194 12195jQuery.fn.extend( { 12196 addClass: function( value ) { 12197 var classNames, cur, curValue, className, i, finalValue; 12198 12199 if ( isFunction( value ) ) { 12200 return this.each( function( j ) { 12201 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); 12202 } ); 12203 } 12204 12205 classNames = classesToArray( value ); 12206 12207 if ( classNames.length ) { 12208 return this.each( function() { 12209 curValue = getClass( this ); 12210 cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 12211 12212 if ( cur ) { 12213 for ( i = 0; i < classNames.length; i++ ) { 12214 className = classNames[ i ]; 12215 if ( cur.indexOf( " " + className + " " ) < 0 ) { 12216 cur += className + " "; 12217 } 12218 } 12219 12220 // Only assign if different to avoid unneeded rendering. 12221 finalValue = stripAndCollapse( cur ); 12222 if ( curValue !== finalValue ) { 12223 this.setAttribute( "class", finalValue ); 12224 } 12225 } 12226 } ); 12227 } 12228 12229 return this; 12230 }, 12231 12232 removeClass: function( value ) { 12233 var classNames, cur, curValue, className, i, finalValue; 12234 12235 if ( isFunction( value ) ) { 12236 return this.each( function( j ) { 12237 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); 12238 } ); 12239 } 12240 12241 if ( !arguments.length ) { 12242 return this.attr( "class", "" ); 12243 } 12244 12245 classNames = classesToArray( value ); 12246 12247 if ( classNames.length ) { 12248 return this.each( function() { 12249 curValue = getClass( this ); 12250 12251 // This expression is here for better compressibility (see addClass) 12252 cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 12253 12254 if ( cur ) { 12255 for ( i = 0; i < classNames.length; i++ ) { 12256 className = classNames[ i ]; 12257 12258 // Remove *all* instances 12259 while ( cur.indexOf( " " + className + " " ) > -1 ) { 12260 cur = cur.replace( " " + className + " ", " " ); 12261 } 12262 } 12263 12264 // Only assign if different to avoid unneeded rendering. 12265 finalValue = stripAndCollapse( cur ); 12266 if ( curValue !== finalValue ) { 12267 this.setAttribute( "class", finalValue ); 12268 } 12269 } 12270 } ); 12271 } 12272 12273 return this; 12274 }, 12275 12276 toggleClass: function( value, stateVal ) { 12277 var classNames, className, i, self, 12278 type = typeof value, 12279 isValidValue = type === "string" || Array.isArray( value ); 12280 12281 if ( isFunction( value ) ) { 12282 return this.each( function( i ) { 12283 jQuery( this ).toggleClass( 12284 value.call( this, i, getClass( this ), stateVal ), 12285 stateVal 12286 ); 12287 } ); 12288 } 12289 12290 if ( typeof stateVal === "boolean" && isValidValue ) { 12291 return stateVal ? this.addClass( value ) : this.removeClass( value ); 12292 } 12293 12294 classNames = classesToArray( value ); 12295 12296 return this.each( function() { 12297 if ( isValidValue ) { 12298 12299 // Toggle individual class names 12300 self = jQuery( this ); 12301 12302 for ( i = 0; i < classNames.length; i++ ) { 12303 className = classNames[ i ]; 12304 12305 // Check each className given, space separated list 12306 if ( self.hasClass( className ) ) { 12307 self.removeClass( className ); 12308 } else { 12309 self.addClass( className ); 12310 } 12311 } 12312 12313 // Toggle whole class name 12314 } else if ( value === undefined || type === "boolean" ) { 12315 className = getClass( this ); 12316 if ( className ) { 12317 12318 // Store className if set 12319 dataPriv.set( this, "__className__", className ); 12320 } 12321 12322 // If the element has a class name or if we're passed `false`, 12323 // then remove the whole classname (if there was one, the above saved it). 12324 // Otherwise bring back whatever was previously saved (if anything), 12325 // falling back to the empty string if nothing was stored. 12326 if ( this.setAttribute ) { 12327 this.setAttribute( "class", 12328 className || value === false ? 12329 "" : 12330 dataPriv.get( this, "__className__" ) || "" 12331 ); 12332 } 12333 } 12334 } ); 12335 }, 12336 12337 hasClass: function( selector ) { 12338 var className, elem, 12339 i = 0; 12340 12341 className = " " + selector + " "; 12342 while ( ( elem = this[ i++ ] ) ) { 12343 if ( elem.nodeType === 1 && 12344 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { 12345 return true; 12346 } 12347 } 12348 12349 return false; 12350 } 12351} ); 12352 12353 12354 12355 12356var rreturn = /\r/g; 12357 12358jQuery.fn.extend( { 12359 val: function( value ) { 12360 var hooks, ret, valueIsFunction, 12361 elem = this[ 0 ]; 12362 12363 if ( !arguments.length ) { 12364 if ( elem ) { 12365 hooks = jQuery.valHooks[ elem.type ] || 12366 jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 12367 12368 if ( hooks && 12369 "get" in hooks && 12370 ( ret = hooks.get( elem, "value" ) ) !== undefined 12371 ) { 12372 return ret; 12373 } 12374 12375 ret = elem.value; 12376 12377 // Handle most common string cases 12378 if ( typeof ret === "string" ) { 12379 return ret.replace( rreturn, "" ); 12380 } 12381 12382 // Handle cases where value is null/undef or number 12383 return ret == null ? "" : ret; 12384 } 12385 12386 return; 12387 } 12388 12389 valueIsFunction = isFunction( value ); 12390 12391 return this.each( function( i ) { 12392 var val; 12393 12394 if ( this.nodeType !== 1 ) { 12395 return; 12396 } 12397 12398 if ( valueIsFunction ) { 12399 val = value.call( this, i, jQuery( this ).val() ); 12400 } else { 12401 val = value; 12402 } 12403 12404 // Treat null/undefined as ""; convert numbers to string 12405 if ( val == null ) { 12406 val = ""; 12407 12408 } else if ( typeof val === "number" ) { 12409 val += ""; 12410 12411 } else if ( Array.isArray( val ) ) { 12412 val = jQuery.map( val, function( value ) { 12413 return value == null ? "" : value + ""; 12414 } ); 12415 } 12416 12417 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; 12418 12419 // If set returns undefined, fall back to normal setting 12420 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { 12421 this.value = val; 12422 } 12423 } ); 12424 } 12425} ); 12426 12427jQuery.extend( { 12428 valHooks: { 12429 option: { 12430 get: function( elem ) { 12431 12432 var val = jQuery.find.attr( elem, "value" ); 12433 return val != null ? 12434 val : 12435 12436 // Support: IE <=10 - 11 only 12437 // option.text throws exceptions (trac-14686, trac-14858) 12438 // Strip and collapse whitespace 12439 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 12440 stripAndCollapse( jQuery.text( elem ) ); 12441 } 12442 }, 12443 select: { 12444 get: function( elem ) { 12445 var value, option, i, 12446 options = elem.options, 12447 index = elem.selectedIndex, 12448 one = elem.type === "select-one", 12449 values = one ? null : [], 12450 max = one ? index + 1 : options.length; 12451 12452 if ( index < 0 ) { 12453 i = max; 12454 12455 } else { 12456 i = one ? index : 0; 12457 } 12458 12459 // Loop through all the selected options 12460 for ( ; i < max; i++ ) { 12461 option = options[ i ]; 12462 12463 // Support: IE <=9 only 12464 // IE8-9 doesn't update selected after form reset (trac-2551) 12465 if ( ( option.selected || i === index ) && 12466 12467 // Don't return options that are disabled or in a disabled optgroup 12468 !option.disabled && 12469 ( !option.parentNode.disabled || 12470 !nodeName( option.parentNode, "optgroup" ) ) ) { 12471 12472 // Get the specific value for the option 12473 value = jQuery( option ).val(); 12474 12475 // We don't need an array for one selects 12476 if ( one ) { 12477 return value; 12478 } 12479 12480 // Multi-Selects return an array 12481 values.push( value ); 12482 } 12483 } 12484 12485 return values; 12486 }, 12487 12488 set: function( elem, value ) { 12489 var optionSet, option, 12490 options = elem.options, 12491 values = jQuery.makeArray( value ), 12492 i = options.length; 12493 12494 while ( i-- ) { 12495 option = options[ i ]; 12496 12497 /* eslint-disable no-cond-assign */ 12498 12499 if ( option.selected = 12500 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 12501 ) { 12502 optionSet = true; 12503 } 12504 12505 /* eslint-enable no-cond-assign */ 12506 } 12507 12508 // Force browsers to behave consistently when non-matching value is set 12509 if ( !optionSet ) { 12510 elem.selectedIndex = -1; 12511 } 12512 return values; 12513 } 12514 } 12515 } 12516} ); 12517 12518// Radios and checkboxes getter/setter 12519jQuery.each( [ "radio", "checkbox" ], function() { 12520 jQuery.valHooks[ this ] = { 12521 set: function( elem, value ) { 12522 if ( Array.isArray( value ) ) { 12523 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); 12524 } 12525 } 12526 }; 12527 if ( !support.checkOn ) { 12528 jQuery.valHooks[ this ].get = function( elem ) { 12529 return elem.getAttribute( "value" ) === null ? "on" : elem.value; 12530 }; 12531 } 12532} ); 12533 12534 12535 12536 12537// Return jQuery for attributes-only inclusion 12538var location = window.location; 12539 12540var nonce = { guid: Date.now() }; 12541 12542var rquery = ( /\?/ ); 12543 12544 12545 12546// Cross-browser xml parsing 12547jQuery.parseXML = function( data ) { 12548 var xml, parserErrorElem; 12549 if ( !data || typeof data !== "string" ) { 12550 return null; 12551 } 12552 12553 // Support: IE 9 - 11 only 12554 // IE throws on parseFromString with invalid input. 12555 try { 12556 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 12557 } catch ( e ) {} 12558 12559 parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; 12560 if ( !xml || parserErrorElem ) { 12561 jQuery.error( "Invalid XML: " + ( 12562 parserErrorElem ? 12563 jQuery.map( parserErrorElem.childNodes, function( el ) { 12564 return el.textContent; 12565 } ).join( "\n" ) : 12566 data 12567 ) ); 12568 } 12569 return xml; 12570}; 12571 12572 12573var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, 12574 stopPropagationCallback = function( e ) { 12575 e.stopPropagation(); 12576 }; 12577 12578jQuery.extend( jQuery.event, { 12579 12580 trigger: function( event, data, elem, onlyHandlers ) { 12581 12582 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, 12583 eventPath = [ elem || document ], 12584 type = hasOwn.call( event, "type" ) ? event.type : event, 12585 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; 12586 12587 cur = lastElement = tmp = elem = elem || document; 12588 12589 // Don't do events on text and comment nodes 12590 if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 12591 return; 12592 } 12593 12594 // focus/blur morphs to focusin/out; ensure we're not firing them right now 12595 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { 12596 return; 12597 } 12598 12599 if ( type.indexOf( "." ) > -1 ) { 12600 12601 // Namespaced trigger; create a regexp to match event type in handle() 12602 namespaces = type.split( "." ); 12603 type = namespaces.shift(); 12604 namespaces.sort(); 12605 } 12606 ontype = type.indexOf( ":" ) < 0 && "on" + type; 12607 12608 // Caller can pass in a jQuery.Event object, Object, or just an event type string 12609 event = event[ jQuery.expando ] ? 12610 event : 12611 new jQuery.Event( type, typeof event === "object" && event ); 12612 12613 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) 12614 event.isTrigger = onlyHandlers ? 2 : 3; 12615 event.namespace = namespaces.join( "." ); 12616 event.rnamespace = event.namespace ? 12617 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : 12618 null; 12619 12620 // Clean up the event in case it is being reused 12621 event.result = undefined; 12622 if ( !event.target ) { 12623 event.target = elem; 12624 } 12625 12626 // Clone any incoming data and prepend the event, creating the handler arg list 12627 data = data == null ? 12628 [ event ] : 12629 jQuery.makeArray( data, [ event ] ); 12630 12631 // Allow special events to draw outside the lines 12632 special = jQuery.event.special[ type ] || {}; 12633 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { 12634 return; 12635 } 12636 12637 // Determine event propagation path in advance, per W3C events spec (trac-9951) 12638 // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) 12639 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { 12640 12641 bubbleType = special.delegateType || type; 12642 if ( !rfocusMorph.test( bubbleType + type ) ) { 12643 cur = cur.parentNode; 12644 } 12645 for ( ; cur; cur = cur.parentNode ) { 12646 eventPath.push( cur ); 12647 tmp = cur; 12648 } 12649 12650 // Only add window if we got to document (e.g., not plain obj or detached DOM) 12651 if ( tmp === ( elem.ownerDocument || document ) ) { 12652 eventPath.push( tmp.defaultView || tmp.parentWindow || window ); 12653 } 12654 } 12655 12656 // Fire handlers on the event path 12657 i = 0; 12658 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { 12659 lastElement = cur; 12660 event.type = i > 1 ? 12661 bubbleType : 12662 special.bindType || type; 12663 12664 // jQuery handler 12665 handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && 12666 dataPriv.get( cur, "handle" ); 12667 if ( handle ) { 12668 handle.apply( cur, data ); 12669 } 12670 12671 // Native handler 12672 handle = ontype && cur[ ontype ]; 12673 if ( handle && handle.apply && acceptData( cur ) ) { 12674 event.result = handle.apply( cur, data ); 12675 if ( event.result === false ) { 12676 event.preventDefault(); 12677 } 12678 } 12679 } 12680 event.type = type; 12681 12682 // If nobody prevented the default action, do it now 12683 if ( !onlyHandlers && !event.isDefaultPrevented() ) { 12684 12685 if ( ( !special._default || 12686 special._default.apply( eventPath.pop(), data ) === false ) && 12687 acceptData( elem ) ) { 12688 12689 // Call a native DOM method on the target with the same name as the event. 12690 // Don't do default actions on window, that's where global variables be (trac-6170) 12691 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { 12692 12693 // Don't re-trigger an onFOO event when we call its FOO() method 12694 tmp = elem[ ontype ]; 12695 12696 if ( tmp ) { 12697 elem[ ontype ] = null; 12698 } 12699 12700 // Prevent re-triggering of the same event, since we already bubbled it above 12701 jQuery.event.triggered = type; 12702 12703 if ( event.isPropagationStopped() ) { 12704 lastElement.addEventListener( type, stopPropagationCallback ); 12705 } 12706 12707 elem[ type ](); 12708 12709 if ( event.isPropagationStopped() ) { 12710 lastElement.removeEventListener( type, stopPropagationCallback ); 12711 } 12712 12713 jQuery.event.triggered = undefined; 12714 12715 if ( tmp ) { 12716 elem[ ontype ] = tmp; 12717 } 12718 } 12719 } 12720 } 12721 12722 return event.result; 12723 }, 12724 12725 // Piggyback on a donor event to simulate a different one 12726 // Used only for `focus(in | out)` events 12727 simulate: function( type, elem, event ) { 12728 var e = jQuery.extend( 12729 new jQuery.Event(), 12730 event, 12731 { 12732 type: type, 12733 isSimulated: true 12734 } 12735 ); 12736 12737 jQuery.event.trigger( e, null, elem ); 12738 } 12739 12740} ); 12741 12742jQuery.fn.extend( { 12743 12744 trigger: function( type, data ) { 12745 return this.each( function() { 12746 jQuery.event.trigger( type, data, this ); 12747 } ); 12748 }, 12749 triggerHandler: function( type, data ) { 12750 var elem = this[ 0 ]; 12751 if ( elem ) { 12752 return jQuery.event.trigger( type, data, elem, true ); 12753 } 12754 } 12755} ); 12756 12757 12758var 12759 rbracket = /\[\]$/, 12760 rCRLF = /\r?\n/g, 12761 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 12762 rsubmittable = /^(?:input|select|textarea|keygen)/i; 12763 12764function buildParams( prefix, obj, traditional, add ) { 12765 var name; 12766 12767 if ( Array.isArray( obj ) ) { 12768 12769 // Serialize array item. 12770 jQuery.each( obj, function( i, v ) { 12771 if ( traditional || rbracket.test( prefix ) ) { 12772 12773 // Treat each array item as a scalar. 12774 add( prefix, v ); 12775 12776 } else { 12777 12778 // Item is non-scalar (array or object), encode its numeric index. 12779 buildParams( 12780 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", 12781 v, 12782 traditional, 12783 add 12784 ); 12785 } 12786 } ); 12787 12788 } else if ( !traditional && toType( obj ) === "object" ) { 12789 12790 // Serialize object item. 12791 for ( name in obj ) { 12792 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 12793 } 12794 12795 } else { 12796 12797 // Serialize scalar item. 12798 add( prefix, obj ); 12799 } 12800} 12801 12802// Serialize an array of form elements or a set of 12803// key/values into a query string 12804jQuery.param = function( a, traditional ) { 12805 var prefix, 12806 s = [], 12807 add = function( key, valueOrFunction ) { 12808 12809 // If value is a function, invoke it and use its return value 12810 var value = isFunction( valueOrFunction ) ? 12811 valueOrFunction() : 12812 valueOrFunction; 12813 12814 s[ s.length ] = encodeURIComponent( key ) + "=" + 12815 encodeURIComponent( value == null ? "" : value ); 12816 }; 12817 12818 if ( a == null ) { 12819 return ""; 12820 } 12821 12822 // If an array was passed in, assume that it is an array of form elements. 12823 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 12824 12825 // Serialize the form elements 12826 jQuery.each( a, function() { 12827 add( this.name, this.value ); 12828 } ); 12829 12830 } else { 12831 12832 // If traditional, encode the "old" way (the way 1.3.2 or older 12833 // did it), otherwise encode params recursively. 12834 for ( prefix in a ) { 12835 buildParams( prefix, a[ prefix ], traditional, add ); 12836 } 12837 } 12838 12839 // Return the resulting serialization 12840 return s.join( "&" ); 12841}; 12842 12843jQuery.fn.extend( { 12844 serialize: function() { 12845 return jQuery.param( this.serializeArray() ); 12846 }, 12847 serializeArray: function() { 12848 return this.map( function() { 12849 12850 // Can add propHook for "elements" to filter or add form elements 12851 var elements = jQuery.prop( this, "elements" ); 12852 return elements ? jQuery.makeArray( elements ) : this; 12853 } ).filter( function() { 12854 var type = this.type; 12855 12856 // Use .is( ":disabled" ) so that fieldset[disabled] works 12857 return this.name && !jQuery( this ).is( ":disabled" ) && 12858 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 12859 ( this.checked || !rcheckableType.test( type ) ); 12860 } ).map( function( _i, elem ) { 12861 var val = jQuery( this ).val(); 12862 12863 if ( val == null ) { 12864 return null; 12865 } 12866 12867 if ( Array.isArray( val ) ) { 12868 return jQuery.map( val, function( val ) { 12869 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 12870 } ); 12871 } 12872 12873 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 12874 } ).get(); 12875 } 12876} ); 12877 12878 12879var 12880 r20 = /%20/g, 12881 rhash = /#.*$/, 12882 rantiCache = /([?&])_=[^&]*/, 12883 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, 12884 12885 // trac-7653, trac-8125, trac-8152: local protocol detection 12886 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, 12887 rnoContent = /^(?:GET|HEAD)$/, 12888 rprotocol = /^\/\//, 12889 12890 /* Prefilters 12891 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 12892 * 2) These are called: 12893 * - BEFORE asking for a transport 12894 * - AFTER param serialization (s.data is a string if s.processData is true) 12895 * 3) key is the dataType 12896 * 4) the catchall symbol "*" can be used 12897 * 5) execution will start with transport dataType and THEN continue down to "*" if needed 12898 */ 12899 prefilters = {}, 12900 12901 /* Transports bindings 12902 * 1) key is the dataType 12903 * 2) the catchall symbol "*" can be used 12904 * 3) selection will start with transport dataType and THEN go to "*" if needed 12905 */ 12906 transports = {}, 12907 12908 // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression 12909 allTypes = "*/".concat( "*" ), 12910 12911 // Anchor tag for parsing the document origin 12912 originAnchor = document.createElement( "a" ); 12913 12914originAnchor.href = location.href; 12915 12916// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 12917function addToPrefiltersOrTransports( structure ) { 12918 12919 // dataTypeExpression is optional and defaults to "*" 12920 return function( dataTypeExpression, func ) { 12921 12922 if ( typeof dataTypeExpression !== "string" ) { 12923 func = dataTypeExpression; 12924 dataTypeExpression = "*"; 12925 } 12926 12927 var dataType, 12928 i = 0, 12929 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; 12930 12931 if ( isFunction( func ) ) { 12932 12933 // For each dataType in the dataTypeExpression 12934 while ( ( dataType = dataTypes[ i++ ] ) ) { 12935 12936 // Prepend if requested 12937 if ( dataType[ 0 ] === "+" ) { 12938 dataType = dataType.slice( 1 ) || "*"; 12939 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); 12940 12941 // Otherwise append 12942 } else { 12943 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); 12944 } 12945 } 12946 } 12947 }; 12948} 12949 12950// Base inspection function for prefilters and transports 12951function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { 12952 12953 var inspected = {}, 12954 seekingTransport = ( structure === transports ); 12955 12956 function inspect( dataType ) { 12957 var selected; 12958 inspected[ dataType ] = true; 12959 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { 12960 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); 12961 if ( typeof dataTypeOrTransport === "string" && 12962 !seekingTransport && !inspected[ dataTypeOrTransport ] ) { 12963 12964 options.dataTypes.unshift( dataTypeOrTransport ); 12965 inspect( dataTypeOrTransport ); 12966 return false; 12967 } else if ( seekingTransport ) { 12968 return !( selected = dataTypeOrTransport ); 12969 } 12970 } ); 12971 return selected; 12972 } 12973 12974 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); 12975} 12976 12977// A special extend for ajax options 12978// that takes "flat" options (not to be deep extended) 12979// Fixes trac-9887 12980function ajaxExtend( target, src ) { 12981 var key, deep, 12982 flatOptions = jQuery.ajaxSettings.flatOptions || {}; 12983 12984 for ( key in src ) { 12985 if ( src[ key ] !== undefined ) { 12986 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; 12987 } 12988 } 12989 if ( deep ) { 12990 jQuery.extend( true, target, deep ); 12991 } 12992 12993 return target; 12994} 12995 12996/* Handles responses to an ajax request: 12997 * - finds the right dataType (mediates between content-type and expected dataType) 12998 * - returns the corresponding response 12999 */ 13000function ajaxHandleResponses( s, jqXHR, responses ) { 13001 13002 var ct, type, finalDataType, firstDataType, 13003 contents = s.contents, 13004 dataTypes = s.dataTypes; 13005 13006 // Remove auto dataType and get content-type in the process 13007 while ( dataTypes[ 0 ] === "*" ) { 13008 dataTypes.shift(); 13009 if ( ct === undefined ) { 13010 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); 13011 } 13012 } 13013 13014 // Check if we're dealing with a known content-type 13015 if ( ct ) { 13016 for ( type in contents ) { 13017 if ( contents[ type ] && contents[ type ].test( ct ) ) { 13018 dataTypes.unshift( type ); 13019 break; 13020 } 13021 } 13022 } 13023 13024 // Check to see if we have a response for the expected dataType 13025 if ( dataTypes[ 0 ] in responses ) { 13026 finalDataType = dataTypes[ 0 ]; 13027 } else { 13028 13029 // Try convertible dataTypes 13030 for ( type in responses ) { 13031 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { 13032 finalDataType = type; 13033 break; 13034 } 13035 if ( !firstDataType ) { 13036 firstDataType = type; 13037 } 13038 } 13039 13040 // Or just use first one 13041 finalDataType = finalDataType || firstDataType; 13042 } 13043 13044 // If we found a dataType 13045 // We add the dataType to the list if needed 13046 // and return the corresponding response 13047 if ( finalDataType ) { 13048 if ( finalDataType !== dataTypes[ 0 ] ) { 13049 dataTypes.unshift( finalDataType ); 13050 } 13051 return responses[ finalDataType ]; 13052 } 13053} 13054 13055/* Chain conversions given the request and the original response 13056 * Also sets the responseXXX fields on the jqXHR instance 13057 */ 13058function ajaxConvert( s, response, jqXHR, isSuccess ) { 13059 var conv2, current, conv, tmp, prev, 13060 converters = {}, 13061 13062 // Work with a copy of dataTypes in case we need to modify it for conversion 13063 dataTypes = s.dataTypes.slice(); 13064 13065 // Create converters map with lowercased keys 13066 if ( dataTypes[ 1 ] ) { 13067 for ( conv in s.converters ) { 13068 converters[ conv.toLowerCase() ] = s.converters[ conv ]; 13069 } 13070 } 13071 13072 current = dataTypes.shift(); 13073 13074 // Convert to each sequential dataType 13075 while ( current ) { 13076 13077 if ( s.responseFields[ current ] ) { 13078 jqXHR[ s.responseFields[ current ] ] = response; 13079 } 13080 13081 // Apply the dataFilter if provided 13082 if ( !prev && isSuccess && s.dataFilter ) { 13083 response = s.dataFilter( response, s.dataType ); 13084 } 13085 13086 prev = current; 13087 current = dataTypes.shift(); 13088 13089 if ( current ) { 13090 13091 // There's only work to do if current dataType is non-auto 13092 if ( current === "*" ) { 13093 13094 current = prev; 13095 13096 // Convert response if prev dataType is non-auto and differs from current 13097 } else if ( prev !== "*" && prev !== current ) { 13098 13099 // Seek a direct converter 13100 conv = converters[ prev + " " + current ] || converters[ "* " + current ]; 13101 13102 // If none found, seek a pair 13103 if ( !conv ) { 13104 for ( conv2 in converters ) { 13105 13106 // If conv2 outputs current 13107 tmp = conv2.split( " " ); 13108 if ( tmp[ 1 ] === current ) { 13109 13110 // If prev can be converted to accepted input 13111 conv = converters[ prev + " " + tmp[ 0 ] ] || 13112 converters[ "* " + tmp[ 0 ] ]; 13113 if ( conv ) { 13114 13115 // Condense equivalence converters 13116 if ( conv === true ) { 13117 conv = converters[ conv2 ]; 13118 13119 // Otherwise, insert the intermediate dataType 13120 } else if ( converters[ conv2 ] !== true ) { 13121 current = tmp[ 0 ]; 13122 dataTypes.unshift( tmp[ 1 ] ); 13123 } 13124 break; 13125 } 13126 } 13127 } 13128 } 13129 13130 // Apply converter (if not an equivalence) 13131 if ( conv !== true ) { 13132 13133 // Unless errors are allowed to bubble, catch and return them 13134 if ( conv && s.throws ) { 13135 response = conv( response ); 13136 } else { 13137 try { 13138 response = conv( response ); 13139 } catch ( e ) { 13140 return { 13141 state: "parsererror", 13142 error: conv ? e : "No conversion from " + prev + " to " + current 13143 }; 13144 } 13145 } 13146 } 13147 } 13148 } 13149 } 13150 13151 return { state: "success", data: response }; 13152} 13153 13154jQuery.extend( { 13155 13156 // Counter for holding the number of active queries 13157 active: 0, 13158 13159 // Last-Modified header cache for next request 13160 lastModified: {}, 13161 etag: {}, 13162 13163 ajaxSettings: { 13164 url: location.href, 13165 type: "GET", 13166 isLocal: rlocalProtocol.test( location.protocol ), 13167 global: true, 13168 processData: true, 13169 async: true, 13170 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 13171 13172 /* 13173 timeout: 0, 13174 data: null, 13175 dataType: null, 13176 username: null, 13177 password: null, 13178 cache: null, 13179 throws: false, 13180 traditional: false, 13181 headers: {}, 13182 */ 13183 13184 accepts: { 13185 "*": allTypes, 13186 text: "text/plain", 13187 html: "text/html", 13188 xml: "application/xml, text/xml", 13189 json: "application/json, text/javascript" 13190 }, 13191 13192 contents: { 13193 xml: /\bxml\b/, 13194 html: /\bhtml/, 13195 json: /\bjson\b/ 13196 }, 13197 13198 responseFields: { 13199 xml: "responseXML", 13200 text: "responseText", 13201 json: "responseJSON" 13202 }, 13203 13204 // Data converters 13205 // Keys separate source (or catchall "*") and destination types with a single space 13206 converters: { 13207 13208 // Convert anything to text 13209 "* text": String, 13210 13211 // Text to html (true = no transformation) 13212 "text html": true, 13213 13214 // Evaluate text as a json expression 13215 "text json": JSON.parse, 13216 13217 // Parse text as xml 13218 "text xml": jQuery.parseXML 13219 }, 13220 13221 // For options that shouldn't be deep extended: 13222 // you can add your own custom options here if 13223 // and when you create one that shouldn't be 13224 // deep extended (see ajaxExtend) 13225 flatOptions: { 13226 url: true, 13227 context: true 13228 } 13229 }, 13230 13231 // Creates a full fledged settings object into target 13232 // with both ajaxSettings and settings fields. 13233 // If target is omitted, writes into ajaxSettings. 13234 ajaxSetup: function( target, settings ) { 13235 return settings ? 13236 13237 // Building a settings object 13238 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : 13239 13240 // Extending ajaxSettings 13241 ajaxExtend( jQuery.ajaxSettings, target ); 13242 }, 13243 13244 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 13245 ajaxTransport: addToPrefiltersOrTransports( transports ), 13246 13247 // Main method 13248 ajax: function( url, options ) { 13249 13250 // If url is an object, simulate pre-1.5 signature 13251 if ( typeof url === "object" ) { 13252 options = url; 13253 url = undefined; 13254 } 13255 13256 // Force options to be an object 13257 options = options || {}; 13258 13259 var transport, 13260 13261 // URL without anti-cache param 13262 cacheURL, 13263 13264 // Response headers 13265 responseHeadersString, 13266 responseHeaders, 13267 13268 // timeout handle 13269 timeoutTimer, 13270 13271 // Url cleanup var 13272 urlAnchor, 13273 13274 // Request state (becomes false upon send and true upon completion) 13275 completed, 13276 13277 // To know if global events are to be dispatched 13278 fireGlobals, 13279 13280 // Loop variable 13281 i, 13282 13283 // uncached part of the url 13284 uncached, 13285 13286 // Create the final options object 13287 s = jQuery.ajaxSetup( {}, options ), 13288 13289 // Callbacks context 13290 callbackContext = s.context || s, 13291 13292 // Context for global events is callbackContext if it is a DOM node or jQuery collection 13293 globalEventContext = s.context && 13294 ( callbackContext.nodeType || callbackContext.jquery ) ? 13295 jQuery( callbackContext ) : 13296 jQuery.event, 13297 13298 // Deferreds 13299 deferred = jQuery.Deferred(), 13300 completeDeferred = jQuery.Callbacks( "once memory" ), 13301 13302 // Status-dependent callbacks 13303 statusCode = s.statusCode || {}, 13304 13305 // Headers (they are sent all at once) 13306 requestHeaders = {}, 13307 requestHeadersNames = {}, 13308 13309 // Default abort message 13310 strAbort = "canceled", 13311 13312 // Fake xhr 13313 jqXHR = { 13314 readyState: 0, 13315 13316 // Builds headers hashtable if needed 13317 getResponseHeader: function( key ) { 13318 var match; 13319 if ( completed ) { 13320 if ( !responseHeaders ) { 13321 responseHeaders = {}; 13322 while ( ( match = rheaders.exec( responseHeadersString ) ) ) { 13323 responseHeaders[ match[ 1 ].toLowerCase() + " " ] = 13324 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) 13325 .concat( match[ 2 ] ); 13326 } 13327 } 13328 match = responseHeaders[ key.toLowerCase() + " " ]; 13329 } 13330 return match == null ? null : match.join( ", " ); 13331 }, 13332 13333 // Raw string 13334 getAllResponseHeaders: function() { 13335 return completed ? responseHeadersString : null; 13336 }, 13337 13338 // Caches the header 13339 setRequestHeader: function( name, value ) { 13340 if ( completed == null ) { 13341 name = requestHeadersNames[ name.toLowerCase() ] = 13342 requestHeadersNames[ name.toLowerCase() ] || name; 13343 requestHeaders[ name ] = value; 13344 } 13345 return this; 13346 }, 13347 13348 // Overrides response content-type header 13349 overrideMimeType: function( type ) { 13350 if ( completed == null ) { 13351 s.mimeType = type; 13352 } 13353 return this; 13354 }, 13355 13356 // Status-dependent callbacks 13357 statusCode: function( map ) { 13358 var code; 13359 if ( map ) { 13360 if ( completed ) { 13361 13362 // Execute the appropriate callbacks 13363 jqXHR.always( map[ jqXHR.status ] ); 13364 } else { 13365 13366 // Lazy-add the new callbacks in a way that preserves old ones 13367 for ( code in map ) { 13368 statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; 13369 } 13370 } 13371 } 13372 return this; 13373 }, 13374 13375 // Cancel the request 13376 abort: function( statusText ) { 13377 var finalText = statusText || strAbort; 13378 if ( transport ) { 13379 transport.abort( finalText ); 13380 } 13381 done( 0, finalText ); 13382 return this; 13383 } 13384 }; 13385 13386 // Attach deferreds 13387 deferred.promise( jqXHR ); 13388 13389 // Add protocol if not provided (prefilters might expect it) 13390 // Handle falsy url in the settings object (trac-10093: consistency with old signature) 13391 // We also use the url parameter if available 13392 s.url = ( ( url || s.url || location.href ) + "" ) 13393 .replace( rprotocol, location.protocol + "//" ); 13394 13395 // Alias method option to type as per ticket trac-12004 13396 s.type = options.method || options.type || s.method || s.type; 13397 13398 // Extract dataTypes list 13399 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; 13400 13401 // A cross-domain request is in order when the origin doesn't match the current origin. 13402 if ( s.crossDomain == null ) { 13403 urlAnchor = document.createElement( "a" ); 13404 13405 // Support: IE <=8 - 11, Edge 12 - 15 13406 // IE throws exception on accessing the href property if url is malformed, 13407 // e.g. http://example.com:80x/ 13408 try { 13409 urlAnchor.href = s.url; 13410 13411 // Support: IE <=8 - 11 only 13412 // Anchor's host property isn't correctly set when s.url is relative 13413 urlAnchor.href = urlAnchor.href; 13414 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== 13415 urlAnchor.protocol + "//" + urlAnchor.host; 13416 } catch ( e ) { 13417 13418 // If there is an error parsing the URL, assume it is crossDomain, 13419 // it can be rejected by the transport if it is invalid 13420 s.crossDomain = true; 13421 } 13422 } 13423 13424 // Convert data if not already a string 13425 if ( s.data && s.processData && typeof s.data !== "string" ) { 13426 s.data = jQuery.param( s.data, s.traditional ); 13427 } 13428 13429 // Apply prefilters 13430 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 13431 13432 // If request was aborted inside a prefilter, stop there 13433 if ( completed ) { 13434 return jqXHR; 13435 } 13436 13437 // We can fire global events as of now if asked to 13438 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) 13439 fireGlobals = jQuery.event && s.global; 13440 13441 // Watch for a new set of requests 13442 if ( fireGlobals && jQuery.active++ === 0 ) { 13443 jQuery.event.trigger( "ajaxStart" ); 13444 } 13445 13446 // Uppercase the type 13447 s.type = s.type.toUpperCase(); 13448 13449 // Determine if request has content 13450 s.hasContent = !rnoContent.test( s.type ); 13451 13452 // Save the URL in case we're toying with the If-Modified-Since 13453 // and/or If-None-Match header later on 13454 // Remove hash to simplify url manipulation 13455 cacheURL = s.url.replace( rhash, "" ); 13456 13457 // More options handling for requests with no content 13458 if ( !s.hasContent ) { 13459 13460 // Remember the hash so we can put it back 13461 uncached = s.url.slice( cacheURL.length ); 13462 13463 // If data is available and should be processed, append data to url 13464 if ( s.data && ( s.processData || typeof s.data === "string" ) ) { 13465 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; 13466 13467 // trac-9682: remove data so that it's not used in an eventual retry 13468 delete s.data; 13469 } 13470 13471 // Add or update anti-cache param if needed 13472 if ( s.cache === false ) { 13473 cacheURL = cacheURL.replace( rantiCache, "$1" ); 13474 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + 13475 uncached; 13476 } 13477 13478 // Put hash and anti-cache on the URL that will be requested (gh-1732) 13479 s.url = cacheURL + uncached; 13480 13481 // Change '%20' to '+' if this is encoded form body content (gh-2658) 13482 } else if ( s.data && s.processData && 13483 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { 13484 s.data = s.data.replace( r20, "+" ); 13485 } 13486 13487 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 13488 if ( s.ifModified ) { 13489 if ( jQuery.lastModified[ cacheURL ] ) { 13490 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); 13491 } 13492 if ( jQuery.etag[ cacheURL ] ) { 13493 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); 13494 } 13495 } 13496 13497 // Set the correct header, if data is being sent 13498 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 13499 jqXHR.setRequestHeader( "Content-Type", s.contentType ); 13500 } 13501 13502 // Set the Accepts header for the server, depending on the dataType 13503 jqXHR.setRequestHeader( 13504 "Accept", 13505 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? 13506 s.accepts[ s.dataTypes[ 0 ] ] + 13507 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 13508 s.accepts[ "*" ] 13509 ); 13510 13511 // Check for headers option 13512 for ( i in s.headers ) { 13513 jqXHR.setRequestHeader( i, s.headers[ i ] ); 13514 } 13515 13516 // Allow custom headers/mimetypes and early abort 13517 if ( s.beforeSend && 13518 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { 13519 13520 // Abort if not done already and return 13521 return jqXHR.abort(); 13522 } 13523 13524 // Aborting is no longer a cancellation 13525 strAbort = "abort"; 13526 13527 // Install callbacks on deferreds 13528 completeDeferred.add( s.complete ); 13529 jqXHR.done( s.success ); 13530 jqXHR.fail( s.error ); 13531 13532 // Get transport 13533 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 13534 13535 // If no transport, we auto-abort 13536 if ( !transport ) { 13537 done( -1, "No Transport" ); 13538 } else { 13539 jqXHR.readyState = 1; 13540 13541 // Send global event 13542 if ( fireGlobals ) { 13543 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 13544 } 13545 13546 // If request was aborted inside ajaxSend, stop there 13547 if ( completed ) { 13548 return jqXHR; 13549 } 13550 13551 // Timeout 13552 if ( s.async && s.timeout > 0 ) { 13553 timeoutTimer = window.setTimeout( function() { 13554 jqXHR.abort( "timeout" ); 13555 }, s.timeout ); 13556 } 13557 13558 try { 13559 completed = false; 13560 transport.send( requestHeaders, done ); 13561 } catch ( e ) { 13562 13563 // Rethrow post-completion exceptions 13564 if ( completed ) { 13565 throw e; 13566 } 13567 13568 // Propagate others as results 13569 done( -1, e ); 13570 } 13571 } 13572 13573 // Callback for when everything is done 13574 function done( status, nativeStatusText, responses, headers ) { 13575 var isSuccess, success, error, response, modified, 13576 statusText = nativeStatusText; 13577 13578 // Ignore repeat invocations 13579 if ( completed ) { 13580 return; 13581 } 13582 13583 completed = true; 13584 13585 // Clear timeout if it exists 13586 if ( timeoutTimer ) { 13587 window.clearTimeout( timeoutTimer ); 13588 } 13589 13590 // Dereference transport for early garbage collection 13591 // (no matter how long the jqXHR object will be used) 13592 transport = undefined; 13593 13594 // Cache response headers 13595 responseHeadersString = headers || ""; 13596 13597 // Set readyState 13598 jqXHR.readyState = status > 0 ? 4 : 0; 13599 13600 // Determine if successful 13601 isSuccess = status >= 200 && status < 300 || status === 304; 13602 13603 // Get response data 13604 if ( responses ) { 13605 response = ajaxHandleResponses( s, jqXHR, responses ); 13606 } 13607 13608 // Use a noop converter for missing script but not if jsonp 13609 if ( !isSuccess && 13610 jQuery.inArray( "script", s.dataTypes ) > -1 && 13611 jQuery.inArray( "json", s.dataTypes ) < 0 ) { 13612 s.converters[ "text script" ] = function() {}; 13613 } 13614 13615 // Convert no matter what (that way responseXXX fields are always set) 13616 response = ajaxConvert( s, response, jqXHR, isSuccess ); 13617 13618 // If successful, handle type chaining 13619 if ( isSuccess ) { 13620 13621 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 13622 if ( s.ifModified ) { 13623 modified = jqXHR.getResponseHeader( "Last-Modified" ); 13624 if ( modified ) { 13625 jQuery.lastModified[ cacheURL ] = modified; 13626 } 13627 modified = jqXHR.getResponseHeader( "etag" ); 13628 if ( modified ) { 13629 jQuery.etag[ cacheURL ] = modified; 13630 } 13631 } 13632 13633 // if no content 13634 if ( status === 204 || s.type === "HEAD" ) { 13635 statusText = "nocontent"; 13636 13637 // if not modified 13638 } else if ( status === 304 ) { 13639 statusText = "notmodified"; 13640 13641 // If we have data, let's convert it 13642 } else { 13643 statusText = response.state; 13644 success = response.data; 13645 error = response.error; 13646 isSuccess = !error; 13647 } 13648 } else { 13649 13650 // Extract error from statusText and normalize for non-aborts 13651 error = statusText; 13652 if ( status || !statusText ) { 13653 statusText = "error"; 13654 if ( status < 0 ) { 13655 status = 0; 13656 } 13657 } 13658 } 13659 13660 // Set data for the fake xhr object 13661 jqXHR.status = status; 13662 jqXHR.statusText = ( nativeStatusText || statusText ) + ""; 13663 13664 // Success/Error 13665 if ( isSuccess ) { 13666 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 13667 } else { 13668 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 13669 } 13670 13671 // Status-dependent callbacks 13672 jqXHR.statusCode( statusCode ); 13673 statusCode = undefined; 13674 13675 if ( fireGlobals ) { 13676 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", 13677 [ jqXHR, s, isSuccess ? success : error ] ); 13678 } 13679 13680 // Complete 13681 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); 13682 13683 if ( fireGlobals ) { 13684 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 13685 13686 // Handle the global AJAX counter 13687 if ( !( --jQuery.active ) ) { 13688 jQuery.event.trigger( "ajaxStop" ); 13689 } 13690 } 13691 } 13692 13693 return jqXHR; 13694 }, 13695 13696 getJSON: function( url, data, callback ) { 13697 return jQuery.get( url, data, callback, "json" ); 13698 }, 13699 13700 getScript: function( url, callback ) { 13701 return jQuery.get( url, undefined, callback, "script" ); 13702 } 13703} ); 13704 13705jQuery.each( [ "get", "post" ], function( _i, method ) { 13706 jQuery[ method ] = function( url, data, callback, type ) { 13707 13708 // Shift arguments if data argument was omitted 13709 if ( isFunction( data ) ) { 13710 type = type || callback; 13711 callback = data; 13712 data = undefined; 13713 } 13714 13715 // The url can be an options object (which then must have .url) 13716 return jQuery.ajax( jQuery.extend( { 13717 url: url, 13718 type: method, 13719 dataType: type, 13720 data: data, 13721 success: callback 13722 }, jQuery.isPlainObject( url ) && url ) ); 13723 }; 13724} ); 13725 13726jQuery.ajaxPrefilter( function( s ) { 13727 var i; 13728 for ( i in s.headers ) { 13729 if ( i.toLowerCase() === "content-type" ) { 13730 s.contentType = s.headers[ i ] || ""; 13731 } 13732 } 13733} ); 13734 13735 13736jQuery._evalUrl = function( url, options, doc ) { 13737 return jQuery.ajax( { 13738 url: url, 13739 13740 // Make this explicit, since user can override this through ajaxSetup (trac-11264) 13741 type: "GET", 13742 dataType: "script", 13743 cache: true, 13744 async: false, 13745 global: false, 13746 13747 // Only evaluate the response if it is successful (gh-4126) 13748 // dataFilter is not invoked for failure responses, so using it instead 13749 // of the default converter is kludgy but it works. 13750 converters: { 13751 "text script": function() {} 13752 }, 13753 dataFilter: function( response ) { 13754 jQuery.globalEval( response, options, doc ); 13755 } 13756 } ); 13757}; 13758 13759 13760jQuery.fn.extend( { 13761 wrapAll: function( html ) { 13762 var wrap; 13763 13764 if ( this[ 0 ] ) { 13765 if ( isFunction( html ) ) { 13766 html = html.call( this[ 0 ] ); 13767 } 13768 13769 // The elements to wrap the target around 13770 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 13771 13772 if ( this[ 0 ].parentNode ) { 13773 wrap.insertBefore( this[ 0 ] ); 13774 } 13775 13776 wrap.map( function() { 13777 var elem = this; 13778 13779 while ( elem.firstElementChild ) { 13780 elem = elem.firstElementChild; 13781 } 13782 13783 return elem; 13784 } ).append( this ); 13785 } 13786 13787 return this; 13788 }, 13789 13790 wrapInner: function( html ) { 13791 if ( isFunction( html ) ) { 13792 return this.each( function( i ) { 13793 jQuery( this ).wrapInner( html.call( this, i ) ); 13794 } ); 13795 } 13796 13797 return this.each( function() { 13798 var self = jQuery( this ), 13799 contents = self.contents(); 13800 13801 if ( contents.length ) { 13802 contents.wrapAll( html ); 13803 13804 } else { 13805 self.append( html ); 13806 } 13807 } ); 13808 }, 13809 13810 wrap: function( html ) { 13811 var htmlIsFunction = isFunction( html ); 13812 13813 return this.each( function( i ) { 13814 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); 13815 } ); 13816 }, 13817 13818 unwrap: function( selector ) { 13819 this.parent( selector ).not( "body" ).each( function() { 13820 jQuery( this ).replaceWith( this.childNodes ); 13821 } ); 13822 return this; 13823 } 13824} ); 13825 13826 13827jQuery.expr.pseudos.hidden = function( elem ) { 13828 return !jQuery.expr.pseudos.visible( elem ); 13829}; 13830jQuery.expr.pseudos.visible = function( elem ) { 13831 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 13832}; 13833 13834 13835 13836 13837jQuery.ajaxSettings.xhr = function() { 13838 try { 13839 return new window.XMLHttpRequest(); 13840 } catch ( e ) {} 13841}; 13842 13843var xhrSuccessStatus = { 13844 13845 // File protocol always yields status code 0, assume 200 13846 0: 200, 13847 13848 // Support: IE <=9 only 13849 // trac-1450: sometimes IE returns 1223 when it should be 204 13850 1223: 204 13851 }, 13852 xhrSupported = jQuery.ajaxSettings.xhr(); 13853 13854support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); 13855support.ajax = xhrSupported = !!xhrSupported; 13856 13857jQuery.ajaxTransport( function( options ) { 13858 var callback, errorCallback; 13859 13860 // Cross domain only allowed if supported through XMLHttpRequest 13861 if ( support.cors || xhrSupported && !options.crossDomain ) { 13862 return { 13863 send: function( headers, complete ) { 13864 var i, 13865 xhr = options.xhr(); 13866 13867 xhr.open( 13868 options.type, 13869 options.url, 13870 options.async, 13871 options.username, 13872 options.password 13873 ); 13874 13875 // Apply custom fields if provided 13876 if ( options.xhrFields ) { 13877 for ( i in options.xhrFields ) { 13878 xhr[ i ] = options.xhrFields[ i ]; 13879 } 13880 } 13881 13882 // Override mime type if needed 13883 if ( options.mimeType && xhr.overrideMimeType ) { 13884 xhr.overrideMimeType( options.mimeType ); 13885 } 13886 13887 // X-Requested-With header 13888 // For cross-domain requests, seeing as conditions for a preflight are 13889 // akin to a jigsaw puzzle, we simply never set it to be sure. 13890 // (it can always be set on a per-request basis or even using ajaxSetup) 13891 // For same-domain requests, won't change header if already provided. 13892 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { 13893 headers[ "X-Requested-With" ] = "XMLHttpRequest"; 13894 } 13895 13896 // Set headers 13897 for ( i in headers ) { 13898 xhr.setRequestHeader( i, headers[ i ] ); 13899 } 13900 13901 // Callback 13902 callback = function( type ) { 13903 return function() { 13904 if ( callback ) { 13905 callback = errorCallback = xhr.onload = 13906 xhr.onerror = xhr.onabort = xhr.ontimeout = 13907 xhr.onreadystatechange = null; 13908 13909 if ( type === "abort" ) { 13910 xhr.abort(); 13911 } else if ( type === "error" ) { 13912 13913 // Support: IE <=9 only 13914 // On a manual native abort, IE9 throws 13915 // errors on any property access that is not readyState 13916 if ( typeof xhr.status !== "number" ) { 13917 complete( 0, "error" ); 13918 } else { 13919 complete( 13920 13921 // File: protocol always yields status 0; see trac-8605, trac-14207 13922 xhr.status, 13923 xhr.statusText 13924 ); 13925 } 13926 } else { 13927 complete( 13928 xhrSuccessStatus[ xhr.status ] || xhr.status, 13929 xhr.statusText, 13930 13931 // Support: IE <=9 only 13932 // IE9 has no XHR2 but throws on binary (trac-11426) 13933 // For XHR2 non-text, let the caller handle it (gh-2498) 13934 ( xhr.responseType || "text" ) !== "text" || 13935 typeof xhr.responseText !== "string" ? 13936 { binary: xhr.response } : 13937 { text: xhr.responseText }, 13938 xhr.getAllResponseHeaders() 13939 ); 13940 } 13941 } 13942 }; 13943 }; 13944 13945 // Listen to events 13946 xhr.onload = callback(); 13947 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); 13948 13949 // Support: IE 9 only 13950 // Use onreadystatechange to replace onabort 13951 // to handle uncaught aborts 13952 if ( xhr.onabort !== undefined ) { 13953 xhr.onabort = errorCallback; 13954 } else { 13955 xhr.onreadystatechange = function() { 13956 13957 // Check readyState before timeout as it changes 13958 if ( xhr.readyState === 4 ) { 13959 13960 // Allow onerror to be called first, 13961 // but that will not handle a native abort 13962 // Also, save errorCallback to a variable 13963 // as xhr.onerror cannot be accessed 13964 window.setTimeout( function() { 13965 if ( callback ) { 13966 errorCallback(); 13967 } 13968 } ); 13969 } 13970 }; 13971 } 13972 13973 // Create the abort callback 13974 callback = callback( "abort" ); 13975 13976 try { 13977 13978 // Do send the request (this may raise an exception) 13979 xhr.send( options.hasContent && options.data || null ); 13980 } catch ( e ) { 13981 13982 // trac-14683: Only rethrow if this hasn't been notified as an error yet 13983 if ( callback ) { 13984 throw e; 13985 } 13986 } 13987 }, 13988 13989 abort: function() { 13990 if ( callback ) { 13991 callback(); 13992 } 13993 } 13994 }; 13995 } 13996} ); 13997 13998 13999 14000 14001// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) 14002jQuery.ajaxPrefilter( function( s ) { 14003 if ( s.crossDomain ) { 14004 s.contents.script = false; 14005 } 14006} ); 14007 14008// Install script dataType 14009jQuery.ajaxSetup( { 14010 accepts: { 14011 script: "text/javascript, application/javascript, " + 14012 "application/ecmascript, application/x-ecmascript" 14013 }, 14014 contents: { 14015 script: /\b(?:java|ecma)script\b/ 14016 }, 14017 converters: { 14018 "text script": function( text ) { 14019 jQuery.globalEval( text ); 14020 return text; 14021 } 14022 } 14023} ); 14024 14025// Handle cache's special case and crossDomain 14026jQuery.ajaxPrefilter( "script", function( s ) { 14027 if ( s.cache === undefined ) { 14028 s.cache = false; 14029 } 14030 if ( s.crossDomain ) { 14031 s.type = "GET"; 14032 } 14033} ); 14034 14035// Bind script tag hack transport 14036jQuery.ajaxTransport( "script", function( s ) { 14037 14038 // This transport only deals with cross domain or forced-by-attrs requests 14039 if ( s.crossDomain || s.scriptAttrs ) { 14040 var script, callback; 14041 return { 14042 send: function( _, complete ) { 14043 script = jQuery( "<script>" ) 14044 .attr( s.scriptAttrs || {} ) 14045 .prop( { charset: s.scriptCharset, src: s.url } ) 14046 .on( "load error", callback = function( evt ) { 14047 script.remove(); 14048 callback = null; 14049 if ( evt ) { 14050 complete( evt.type === "error" ? 404 : 200, evt.type ); 14051 } 14052 } ); 14053 14054 // Use native DOM manipulation to avoid our domManip AJAX trickery 14055 document.head.appendChild( script[ 0 ] ); 14056 }, 14057 abort: function() { 14058 if ( callback ) { 14059 callback(); 14060 } 14061 } 14062 }; 14063 } 14064} ); 14065 14066 14067 14068 14069var oldCallbacks = [], 14070 rjsonp = /(=)\?(?=&|$)|\?\?/; 14071 14072// Default jsonp settings 14073jQuery.ajaxSetup( { 14074 jsonp: "callback", 14075 jsonpCallback: function() { 14076 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); 14077 this[ callback ] = true; 14078 return callback; 14079 } 14080} ); 14081 14082// Detect, normalize options and install callbacks for jsonp requests 14083jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 14084 14085 var callbackName, overwritten, responseContainer, 14086 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 14087 "url" : 14088 typeof s.data === "string" && 14089 ( s.contentType || "" ) 14090 .indexOf( "application/x-www-form-urlencoded" ) === 0 && 14091 rjsonp.test( s.data ) && "data" 14092 ); 14093 14094 // Handle iff the expected data type is "jsonp" or we have a parameter to set 14095 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 14096 14097 // Get callback name, remembering preexisting value associated with it 14098 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? 14099 s.jsonpCallback() : 14100 s.jsonpCallback; 14101 14102 // Insert callback into url or form data 14103 if ( jsonProp ) { 14104 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 14105 } else if ( s.jsonp !== false ) { 14106 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 14107 } 14108 14109 // Use data converter to retrieve json after script execution 14110 s.converters[ "script json" ] = function() { 14111 if ( !responseContainer ) { 14112 jQuery.error( callbackName + " was not called" ); 14113 } 14114 return responseContainer[ 0 ]; 14115 }; 14116 14117 // Force json dataType 14118 s.dataTypes[ 0 ] = "json"; 14119 14120 // Install callback 14121 overwritten = window[ callbackName ]; 14122 window[ callbackName ] = function() { 14123 responseContainer = arguments; 14124 }; 14125 14126 // Clean-up function (fires after converters) 14127 jqXHR.always( function() { 14128 14129 // If previous value didn't exist - remove it 14130 if ( overwritten === undefined ) { 14131 jQuery( window ).removeProp( callbackName ); 14132 14133 // Otherwise restore preexisting value 14134 } else { 14135 window[ callbackName ] = overwritten; 14136 } 14137 14138 // Save back as free 14139 if ( s[ callbackName ] ) { 14140 14141 // Make sure that re-using the options doesn't screw things around 14142 s.jsonpCallback = originalSettings.jsonpCallback; 14143 14144 // Save the callback name for future use 14145 oldCallbacks.push( callbackName ); 14146 } 14147 14148 // Call if it was a function and we have a response 14149 if ( responseContainer && isFunction( overwritten ) ) { 14150 overwritten( responseContainer[ 0 ] ); 14151 } 14152 14153 responseContainer = overwritten = undefined; 14154 } ); 14155 14156 // Delegate to script 14157 return "script"; 14158 } 14159} ); 14160 14161 14162 14163 14164// Support: Safari 8 only 14165// In Safari 8 documents created via document.implementation.createHTMLDocument 14166// collapse sibling forms: the second one becomes a child of the first one. 14167// Because of that, this security measure has to be disabled in Safari 8. 14168// https://bugs.webkit.org/show_bug.cgi?id=137337 14169support.createHTMLDocument = ( function() { 14170 var body = document.implementation.createHTMLDocument( "" ).body; 14171 body.innerHTML = "<form></form><form></form>"; 14172 return body.childNodes.length === 2; 14173} )(); 14174 14175 14176// Argument "data" should be string of html 14177// context (optional): If specified, the fragment will be created in this context, 14178// defaults to document 14179// keepScripts (optional): If true, will include scripts passed in the html string 14180jQuery.parseHTML = function( data, context, keepScripts ) { 14181 if ( typeof data !== "string" ) { 14182 return []; 14183 } 14184 if ( typeof context === "boolean" ) { 14185 keepScripts = context; 14186 context = false; 14187 } 14188 14189 var base, parsed, scripts; 14190 14191 if ( !context ) { 14192 14193 // Stop scripts or inline event handlers from being executed immediately 14194 // by using document.implementation 14195 if ( support.createHTMLDocument ) { 14196 context = document.implementation.createHTMLDocument( "" ); 14197 14198 // Set the base href for the created document 14199 // so any parsed elements with URLs 14200 // are based on the document's URL (gh-2965) 14201 base = context.createElement( "base" ); 14202 base.href = document.location.href; 14203 context.head.appendChild( base ); 14204 } else { 14205 context = document; 14206 } 14207 } 14208 14209 parsed = rsingleTag.exec( data ); 14210 scripts = !keepScripts && []; 14211 14212 // Single tag 14213 if ( parsed ) { 14214 return [ context.createElement( parsed[ 1 ] ) ]; 14215 } 14216 14217 parsed = buildFragment( [ data ], context, scripts ); 14218 14219 if ( scripts && scripts.length ) { 14220 jQuery( scripts ).remove(); 14221 } 14222 14223 return jQuery.merge( [], parsed.childNodes ); 14224}; 14225 14226 14227/** 14228 * Load a url into a page 14229 */ 14230jQuery.fn.load = function( url, params, callback ) { 14231 var selector, type, response, 14232 self = this, 14233 off = url.indexOf( " " ); 14234 14235 if ( off > -1 ) { 14236 selector = stripAndCollapse( url.slice( off ) ); 14237 url = url.slice( 0, off ); 14238 } 14239 14240 // If it's a function 14241 if ( isFunction( params ) ) { 14242 14243 // We assume that it's the callback 14244 callback = params; 14245 params = undefined; 14246 14247 // Otherwise, build a param string 14248 } else if ( params && typeof params === "object" ) { 14249 type = "POST"; 14250 } 14251 14252 // If we have elements to modify, make the request 14253 if ( self.length > 0 ) { 14254 jQuery.ajax( { 14255 url: url, 14256 14257 // If "type" variable is undefined, then "GET" method will be used. 14258 // Make value of this field explicit since 14259 // user can override it through ajaxSetup method 14260 type: type || "GET", 14261 dataType: "html", 14262 data: params 14263 } ).done( function( responseText ) { 14264 14265 // Save response for use in complete callback 14266 response = arguments; 14267 14268 self.html( selector ? 14269 14270 // If a selector was specified, locate the right elements in a dummy div 14271 // Exclude scripts to avoid IE 'Permission Denied' errors 14272 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 14273 14274 // Otherwise use the full result 14275 responseText ); 14276 14277 // If the request succeeds, this function gets "data", "status", "jqXHR" 14278 // but they are ignored because response was set above. 14279 // If it fails, this function gets "jqXHR", "status", "error" 14280 } ).always( callback && function( jqXHR, status ) { 14281 self.each( function() { 14282 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 14283 } ); 14284 } ); 14285 } 14286 14287 return this; 14288}; 14289 14290 14291 14292 14293jQuery.expr.pseudos.animated = function( elem ) { 14294 return jQuery.grep( jQuery.timers, function( fn ) { 14295 return elem === fn.elem; 14296 } ).length; 14297}; 14298 14299 14300 14301 14302jQuery.offset = { 14303 setOffset: function( elem, options, i ) { 14304 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, 14305 position = jQuery.css( elem, "position" ), 14306 curElem = jQuery( elem ), 14307 props = {}; 14308 14309 // Set position first, in-case top/left are set even on static elem 14310 if ( position === "static" ) { 14311 elem.style.position = "relative"; 14312 } 14313 14314 curOffset = curElem.offset(); 14315 curCSSTop = jQuery.css( elem, "top" ); 14316 curCSSLeft = jQuery.css( elem, "left" ); 14317 calculatePosition = ( position === "absolute" || position === "fixed" ) && 14318 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; 14319 14320 // Need to be able to calculate position if either 14321 // top or left is auto and position is either absolute or fixed 14322 if ( calculatePosition ) { 14323 curPosition = curElem.position(); 14324 curTop = curPosition.top; 14325 curLeft = curPosition.left; 14326 14327 } else { 14328 curTop = parseFloat( curCSSTop ) || 0; 14329 curLeft = parseFloat( curCSSLeft ) || 0; 14330 } 14331 14332 if ( isFunction( options ) ) { 14333 14334 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) 14335 options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); 14336 } 14337 14338 if ( options.top != null ) { 14339 props.top = ( options.top - curOffset.top ) + curTop; 14340 } 14341 if ( options.left != null ) { 14342 props.left = ( options.left - curOffset.left ) + curLeft; 14343 } 14344 14345 if ( "using" in options ) { 14346 options.using.call( elem, props ); 14347 14348 } else { 14349 curElem.css( props ); 14350 } 14351 } 14352}; 14353 14354jQuery.fn.extend( { 14355 14356 // offset() relates an element's border box to the document origin 14357 offset: function( options ) { 14358 14359 // Preserve chaining for setter 14360 if ( arguments.length ) { 14361 return options === undefined ? 14362 this : 14363 this.each( function( i ) { 14364 jQuery.offset.setOffset( this, options, i ); 14365 } ); 14366 } 14367 14368 var rect, win, 14369 elem = this[ 0 ]; 14370 14371 if ( !elem ) { 14372 return; 14373 } 14374 14375 // Return zeros for disconnected and hidden (display: none) elements (gh-2310) 14376 // Support: IE <=11 only 14377 // Running getBoundingClientRect on a 14378 // disconnected node in IE throws an error 14379 if ( !elem.getClientRects().length ) { 14380 return { top: 0, left: 0 }; 14381 } 14382 14383 // Get document-relative position by adding viewport scroll to viewport-relative gBCR 14384 rect = elem.getBoundingClientRect(); 14385 win = elem.ownerDocument.defaultView; 14386 return { 14387 top: rect.top + win.pageYOffset, 14388 left: rect.left + win.pageXOffset 14389 }; 14390 }, 14391 14392 // position() relates an element's margin box to its offset parent's padding box 14393 // This corresponds to the behavior of CSS absolute positioning 14394 position: function() { 14395 if ( !this[ 0 ] ) { 14396 return; 14397 } 14398 14399 var offsetParent, offset, doc, 14400 elem = this[ 0 ], 14401 parentOffset = { top: 0, left: 0 }; 14402 14403 // position:fixed elements are offset from the viewport, which itself always has zero offset 14404 if ( jQuery.css( elem, "position" ) === "fixed" ) { 14405 14406 // Assume position:fixed implies availability of getBoundingClientRect 14407 offset = elem.getBoundingClientRect(); 14408 14409 } else { 14410 offset = this.offset(); 14411 14412 // Account for the *real* offset parent, which can be the document or its root element 14413 // when a statically positioned element is identified 14414 doc = elem.ownerDocument; 14415 offsetParent = elem.offsetParent || doc.documentElement; 14416 while ( offsetParent && 14417 ( offsetParent === doc.body || offsetParent === doc.documentElement ) && 14418 jQuery.css( offsetParent, "position" ) === "static" ) { 14419 14420 offsetParent = offsetParent.parentNode; 14421 } 14422 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { 14423 14424 // Incorporate borders into its offset, since they are outside its content origin 14425 parentOffset = jQuery( offsetParent ).offset(); 14426 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); 14427 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); 14428 } 14429 } 14430 14431 // Subtract parent offsets and element margins 14432 return { 14433 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), 14434 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) 14435 }; 14436 }, 14437 14438 // This method will return documentElement in the following cases: 14439 // 1) For the element inside the iframe without offsetParent, this method will return 14440 // documentElement of the parent window 14441 // 2) For the hidden or detached element 14442 // 3) For body or html element, i.e. in case of the html node - it will return itself 14443 // 14444 // but those exceptions were never presented as a real life use-cases 14445 // and might be considered as more preferable results. 14446 // 14447 // This logic, however, is not guaranteed and can change at any point in the future 14448 offsetParent: function() { 14449 return this.map( function() { 14450 var offsetParent = this.offsetParent; 14451 14452 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { 14453 offsetParent = offsetParent.offsetParent; 14454 } 14455 14456 return offsetParent || documentElement; 14457 } ); 14458 } 14459} ); 14460 14461// Create scrollLeft and scrollTop methods 14462jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { 14463 var top = "pageYOffset" === prop; 14464 14465 jQuery.fn[ method ] = function( val ) { 14466 return access( this, function( elem, method, val ) { 14467 14468 // Coalesce documents and windows 14469 var win; 14470 if ( isWindow( elem ) ) { 14471 win = elem; 14472 } else if ( elem.nodeType === 9 ) { 14473 win = elem.defaultView; 14474 } 14475 14476 if ( val === undefined ) { 14477 return win ? win[ prop ] : elem[ method ]; 14478 } 14479 14480 if ( win ) { 14481 win.scrollTo( 14482 !top ? val : win.pageXOffset, 14483 top ? val : win.pageYOffset 14484 ); 14485 14486 } else { 14487 elem[ method ] = val; 14488 } 14489 }, method, val, arguments.length ); 14490 }; 14491} ); 14492 14493// Support: Safari <=7 - 9.1, Chrome <=37 - 49 14494// Add the top/left cssHooks using jQuery.fn.position 14495// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 14496// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 14497// getComputedStyle returns percent when specified for top/left/bottom/right; 14498// rather than make the css module depend on the offset module, just check for it here 14499jQuery.each( [ "top", "left" ], function( _i, prop ) { 14500 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, 14501 function( elem, computed ) { 14502 if ( computed ) { 14503 computed = curCSS( elem, prop ); 14504 14505 // If curCSS returns percentage, fallback to offset 14506 return rnumnonpx.test( computed ) ? 14507 jQuery( elem ).position()[ prop ] + "px" : 14508 computed; 14509 } 14510 } 14511 ); 14512} ); 14513 14514 14515// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 14516jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 14517 jQuery.each( { 14518 padding: "inner" + name, 14519 content: type, 14520 "": "outer" + name 14521 }, function( defaultExtra, funcName ) { 14522 14523 // Margin is only for outerHeight, outerWidth 14524 jQuery.fn[ funcName ] = function( margin, value ) { 14525 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 14526 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 14527 14528 return access( this, function( elem, type, value ) { 14529 var doc; 14530 14531 if ( isWindow( elem ) ) { 14532 14533 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) 14534 return funcName.indexOf( "outer" ) === 0 ? 14535 elem[ "inner" + name ] : 14536 elem.document.documentElement[ "client" + name ]; 14537 } 14538 14539 // Get document width or height 14540 if ( elem.nodeType === 9 ) { 14541 doc = elem.documentElement; 14542 14543 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 14544 // whichever is greatest 14545 return Math.max( 14546 elem.body[ "scroll" + name ], doc[ "scroll" + name ], 14547 elem.body[ "offset" + name ], doc[ "offset" + name ], 14548 doc[ "client" + name ] 14549 ); 14550 } 14551 14552 return value === undefined ? 14553 14554 // Get width or height on the element, requesting but not forcing parseFloat 14555 jQuery.css( elem, type, extra ) : 14556 14557 // Set width or height on the element 14558 jQuery.style( elem, type, value, extra ); 14559 }, type, chainable ? margin : undefined, chainable ); 14560 }; 14561 } ); 14562} ); 14563 14564 14565jQuery.each( [ 14566 "ajaxStart", 14567 "ajaxStop", 14568 "ajaxComplete", 14569 "ajaxError", 14570 "ajaxSuccess", 14571 "ajaxSend" 14572], function( _i, type ) { 14573 jQuery.fn[ type ] = function( fn ) { 14574 return this.on( type, fn ); 14575 }; 14576} ); 14577 14578 14579 14580 14581jQuery.fn.extend( { 14582 14583 bind: function( types, data, fn ) { 14584 return this.on( types, null, data, fn ); 14585 }, 14586 unbind: function( types, fn ) { 14587 return this.off( types, null, fn ); 14588 }, 14589 14590 delegate: function( selector, types, data, fn ) { 14591 return this.on( types, selector, data, fn ); 14592 }, 14593 undelegate: function( selector, types, fn ) { 14594 14595 // ( namespace ) or ( selector, types [, fn] ) 14596 return arguments.length === 1 ? 14597 this.off( selector, "**" ) : 14598 this.off( types, selector || "**", fn ); 14599 }, 14600 14601 hover: function( fnOver, fnOut ) { 14602 return this 14603 .on( "mouseenter", fnOver ) 14604 .on( "mouseleave", fnOut || fnOver ); 14605 } 14606} ); 14607 14608jQuery.each( 14609 ( "blur focus focusin focusout resize scroll click dblclick " + 14610 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 14611 "change select submit keydown keypress keyup contextmenu" ).split( " " ), 14612 function( _i, name ) { 14613 14614 // Handle event binding 14615 jQuery.fn[ name ] = function( data, fn ) { 14616 return arguments.length > 0 ? 14617 this.on( name, null, data, fn ) : 14618 this.trigger( name ); 14619 }; 14620 } 14621); 14622 14623 14624 14625 14626// Support: Android <=4.0 only 14627// Make sure we trim BOM and NBSP 14628// Require that the "whitespace run" starts from a non-whitespace 14629// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. 14630var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; 14631 14632// Bind a function to a context, optionally partially applying any 14633// arguments. 14634// jQuery.proxy is deprecated to promote standards (specifically Function#bind) 14635// However, it is not slated for removal any time soon 14636jQuery.proxy = function( fn, context ) { 14637 var tmp, args, proxy; 14638 14639 if ( typeof context === "string" ) { 14640 tmp = fn[ context ]; 14641 context = fn; 14642 fn = tmp; 14643 } 14644 14645 // Quick check to determine if target is callable, in the spec 14646 // this throws a TypeError, but we will just return undefined. 14647 if ( !isFunction( fn ) ) { 14648 return undefined; 14649 } 14650 14651 // Simulated bind 14652 args = slice.call( arguments, 2 ); 14653 proxy = function() { 14654 return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); 14655 }; 14656 14657 // Set the guid of unique handler to the same of original handler, so it can be removed 14658 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 14659 14660 return proxy; 14661}; 14662 14663jQuery.holdReady = function( hold ) { 14664 if ( hold ) { 14665 jQuery.readyWait++; 14666 } else { 14667 jQuery.ready( true ); 14668 } 14669}; 14670jQuery.isArray = Array.isArray; 14671jQuery.parseJSON = JSON.parse; 14672jQuery.nodeName = nodeName; 14673jQuery.isFunction = isFunction; 14674jQuery.isWindow = isWindow; 14675jQuery.camelCase = camelCase; 14676jQuery.type = toType; 14677 14678jQuery.now = Date.now; 14679 14680jQuery.isNumeric = function( obj ) { 14681 14682 // As of jQuery 3.0, isNumeric is limited to 14683 // strings and numbers (primitives or objects) 14684 // that can be coerced to finite numbers (gh-2662) 14685 var type = jQuery.type( obj ); 14686 return ( type === "number" || type === "string" ) && 14687 14688 // parseFloat NaNs numeric-cast false positives ("") 14689 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 14690 // subtraction forces infinities to NaN 14691 !isNaN( obj - parseFloat( obj ) ); 14692}; 14693 14694jQuery.trim = function( text ) { 14695 return text == null ? 14696 "" : 14697 ( text + "" ).replace( rtrim, "$1" ); 14698}; 14699 14700 14701 14702// Register as a named AMD module, since jQuery can be concatenated with other 14703// files that may use define, but not via a proper concatenation script that 14704// understands anonymous AMD modules. A named AMD is safest and most robust 14705// way to register. Lowercase jquery is used because AMD module names are 14706// derived from file names, and jQuery is normally delivered in a lowercase 14707// file name. Do this after creating the global so that if an AMD module wants 14708// to call noConflict to hide this version of jQuery, it will work. 14709 14710// Note that for maximum portability, libraries that are not jQuery should 14711// declare themselves as anonymous modules, and avoid setting a global if an 14712// AMD loader is present. jQuery is a special case. For more information, see 14713// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 14714 14715if ( true ) { 14716 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { 14717 return jQuery; 14718 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), 14719 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 14720} 14721 14722 14723 14724 14725var 14726 14727 // Map over jQuery in case of overwrite 14728 _jQuery = window.jQuery, 14729 14730 // Map over the $ in case of overwrite 14731 _$ = window.$; 14732 14733jQuery.noConflict = function( deep ) { 14734 if ( window.$ === jQuery ) { 14735 window.$ = _$; 14736 } 14737 14738 if ( deep && window.jQuery === jQuery ) { 14739 window.jQuery = _jQuery; 14740 } 14741 14742 return jQuery; 14743}; 14744 14745// Expose jQuery and $ identifiers, even in AMD 14746// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557) 14747// and CommonJS for browser emulators (trac-13566) 14748if ( typeof noGlobal === "undefined" ) { 14749 window.jQuery = window.$ = jQuery; 14750} 14751 14752 14753 14754 14755return jQuery; 14756} ); 14757 14758 14759/***/ }), 14760
vendor: 28,573 bytes, lines 14761-15567
14761/***/ "./node_modules/vanilla-lazyload/dist/lazyload.js": 14762/*!********************************************************!*\ 14763 !*** ./node_modules/vanilla-lazyload/dist/lazyload.js ***! 14764 \********************************************************/ 14765/***/ (function(module) { 14766 14767(function (global, factory) { 14768 true ? module.exports = factory() : 14769 0; 14770}(this, (function () { 'use strict'; 14771 14772 function _extends() { 14773 _extends = Object.assign || function (target) { 14774 for (var i = 1; i < arguments.length; i++) { 14775 var source = arguments[i]; 14776 for (var key in source) { 14777 if (Object.prototype.hasOwnProperty.call(source, key)) { 14778 target[key] = source[key]; 14779 } 14780 } 14781 } 14782 return target; 14783 }; 14784 return _extends.apply(this, arguments); 14785 } 14786 14787 var runningOnBrowser = typeof window !== "undefined"; 14788 var isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent); 14789 var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window; 14790 var supportsClassList = runningOnBrowser && "classList" in document.createElement("p"); 14791 var isHiDpi = runningOnBrowser && window.devicePixelRatio > 1; 14792 14793 var defaultSettings = { 14794 elements_selector: ".lazy", 14795 container: isBot || runningOnBrowser ? document : null, 14796 threshold: 300, 14797 thresholds: null, 14798 data_src: "src", 14799 data_srcset: "srcset", 14800 data_sizes: "sizes", 14801 data_bg: "bg", 14802 data_bg_hidpi: "bg-hidpi", 14803 data_bg_multi: "bg-multi", 14804 data_bg_multi_hidpi: "bg-multi-hidpi", 14805 data_bg_set: "bg-set", 14806 data_poster: "poster", 14807 class_applied: "applied", 14808 class_loading: "loading", 14809 class_loaded: "loaded", 14810 class_error: "error", 14811 class_entered: "entered", 14812 class_exited: "exited", 14813 unobserve_completed: true, 14814 unobserve_entered: false, 14815 cancel_on_exit: true, 14816 callback_enter: null, 14817 callback_exit: null, 14818 callback_applied: null, 14819 callback_loading: null, 14820 callback_loaded: null, 14821 callback_error: null, 14822 callback_finish: null, 14823 callback_cancel: null, 14824 use_native: false, 14825 restore_on_error: false 14826 }; 14827 var getExtendedSettings = function getExtendedSettings(customSettings) { 14828 return _extends({}, defaultSettings, customSettings); 14829 }; 14830 14831 /* Creates instance and notifies it through the window element */ 14832 var createInstance = function createInstance(classObj, options) { 14833 var event; 14834 var eventString = "LazyLoad::Initialized"; 14835 var instance = new classObj(options); 14836 try { 14837 // Works in modern browsers 14838 event = new CustomEvent(eventString, { 14839 detail: { 14840 instance: instance 14841 } 14842 }); 14843 } catch (err) { 14844 // Works in Internet Explorer (all versions) 14845 event = document.createEvent("CustomEvent"); 14846 event.initCustomEvent(eventString, false, false, { 14847 instance: instance 14848 }); 14849 } 14850 window.dispatchEvent(event); 14851 }; 14852 14853 /* Auto initialization of one or more instances of LazyLoad, depending on the 14854 options passed in (plain object or an array) */ 14855 var autoInitialize = function autoInitialize(classObj, options) { 14856 if (!options) { 14857 return; 14858 } 14859 if (!options.length) { 14860 // Plain object 14861 createInstance(classObj, options); 14862 } else { 14863 // Array of objects 14864 for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) { 14865 createInstance(classObj, optionsItem); 14866 } 14867 } 14868 }; 14869 14870 var SRC = "src"; 14871 var SRCSET = "srcset"; 14872 var SIZES = "sizes"; 14873 var POSTER = "poster"; 14874 var ORIGINALS = "llOriginalAttrs"; 14875 var DATA = "data"; 14876 14877 var statusLoading = "loading"; 14878 var statusLoaded = "loaded"; 14879 var statusApplied = "applied"; 14880 var statusEntered = "entered"; 14881 var statusError = "error"; 14882 var statusNative = "native"; 14883 14884 var dataPrefix = "data-"; 14885 var statusDataName = "ll-status"; 14886 var getData = function getData(element, attribute) { 14887 return element.getAttribute(dataPrefix + attribute); 14888 }; 14889 var setData = function setData(element, attribute, value) { 14890 var attrName = dataPrefix + attribute; 14891 if (value === null) { 14892 element.removeAttribute(attrName); 14893 return; 14894 } 14895 element.setAttribute(attrName, value); 14896 }; 14897 var getStatus = function getStatus(element) { 14898 return getData(element, statusDataName); 14899 }; 14900 var setStatus = function setStatus(element, status) { 14901 return setData(element, statusDataName, status); 14902 }; 14903 var resetStatus = function resetStatus(element) { 14904 return setStatus(element, null); 14905 }; 14906 var hasEmptyStatus = function hasEmptyStatus(element) { 14907 return getStatus(element) === null; 14908 }; 14909 var hasStatusLoading = function hasStatusLoading(element) { 14910 return getStatus(element) === statusLoading; 14911 }; 14912 var hasStatusError = function hasStatusError(element) { 14913 return getStatus(element) === statusError; 14914 }; 14915 var hasStatusNative = function hasStatusNative(element) { 14916 return getStatus(element) === statusNative; 14917 }; 14918 var statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError]; 14919 var hadStartedLoading = function hadStartedLoading(element) { 14920 return statusesAfterLoading.indexOf(getStatus(element)) >= 0; 14921 }; 14922 14923 var safeCallback = function safeCallback(callback, arg1, arg2, arg3) { 14924 if (!callback || typeof callback !== 'function') { 14925 return; 14926 } 14927 if (arg3 !== undefined) { 14928 callback(arg1, arg2, arg3); 14929 return; 14930 } 14931 if (arg2 !== undefined) { 14932 callback(arg1, arg2); 14933 return; 14934 } 14935 callback(arg1); 14936 }; 14937 14938 var addClass = function addClass(element, className) { 14939 if (className === "") { 14940 return; 14941 } 14942 if (supportsClassList) { 14943 element.classList.add(className); 14944 return; 14945 } 14946 element.className += (element.className ? " " : "") + className; 14947 }; 14948 var removeClass = function removeClass(element, className) { 14949 if (className === "") { 14950 return; 14951 } 14952 if (supportsClassList) { 14953 element.classList.remove(className); 14954 return; 14955 } 14956 element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, ""); 14957 }; 14958 14959 var addTempImage = function addTempImage(element) { 14960 element.llTempImage = document.createElement("IMG"); 14961 }; 14962 var deleteTempImage = function deleteTempImage(element) { 14963 delete element.llTempImage; 14964 }; 14965 var getTempImage = function getTempImage(element) { 14966 return element.llTempImage; 14967 }; 14968 14969 var unobserve = function unobserve(element, instance) { 14970 if (!instance) return; 14971 var observer = instance._observer; 14972 if (!observer) return; 14973 observer.unobserve(element); 14974 }; 14975 var resetObserver = function resetObserver(observer) { 14976 observer.disconnect(); 14977 }; 14978 var unobserveEntered = function unobserveEntered(element, settings, instance) { 14979 if (settings.unobserve_entered) unobserve(element, instance); 14980 }; 14981 14982 var updateLoadingCount = function updateLoadingCount(instance, delta) { 14983 if (!instance) return; 14984 instance.loadingCount += delta; 14985 }; 14986 var decreaseToLoadCount = function decreaseToLoadCount(instance) { 14987 if (!instance) return; 14988 instance.toLoadCount -= 1; 14989 }; 14990 var setToLoadCount = function setToLoadCount(instance, value) { 14991 if (!instance) return; 14992 instance.toLoadCount = value; 14993 }; 14994 var isSomethingLoading = function isSomethingLoading(instance) { 14995 return instance.loadingCount > 0; 14996 }; 14997 var haveElementsToLoad = function haveElementsToLoad(instance) { 14998 return instance.toLoadCount > 0; 14999 }; 15000 15001 var getSourceTags = function getSourceTags(parentTag) { 15002 var sourceTags = []; 15003 for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) { 15004 if (childTag.tagName === "SOURCE") { 15005 sourceTags.push(childTag); 15006 } 15007 } 15008 return sourceTags; 15009 }; 15010 var forEachPictureSource = function forEachPictureSource(element, fn) { 15011 var parent = element.parentNode; 15012 if (!parent || parent.tagName !== "PICTURE") { 15013 return; 15014 } 15015 var sourceTags = getSourceTags(parent); 15016 sourceTags.forEach(fn); 15017 }; 15018 var forEachVideoSource = function forEachVideoSource(element, fn) { 15019 var sourceTags = getSourceTags(element); 15020 sourceTags.forEach(fn); 15021 }; 15022 15023 var attrsSrc = [SRC]; 15024 var attrsSrcPoster = [SRC, POSTER]; 15025 var attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES]; 15026 var attrsData = [DATA]; 15027 var hasOriginalAttrs = function hasOriginalAttrs(element) { 15028 return !!element[ORIGINALS]; 15029 }; 15030 var getOriginalAttrs = function getOriginalAttrs(element) { 15031 return element[ORIGINALS]; 15032 }; 15033 var deleteOriginalAttrs = function deleteOriginalAttrs(element) { 15034 return delete element[ORIGINALS]; 15035 }; 15036 15037 // ## SAVE ## 15038 15039 var setOriginalsObject = function setOriginalsObject(element, attributes) { 15040 if (hasOriginalAttrs(element)) { 15041 return; 15042 } 15043 var originals = {}; 15044 attributes.forEach(function (attribute) { 15045 originals[attribute] = element.getAttribute(attribute); 15046 }); 15047 element[ORIGINALS] = originals; 15048 }; 15049 var saveOriginalBackgroundStyle = function saveOriginalBackgroundStyle(element) { 15050 if (hasOriginalAttrs(element)) { 15051 return; 15052 } 15053 element[ORIGINALS] = { 15054 backgroundImage: element.style.backgroundImage 15055 }; 15056 }; 15057 15058 // ## RESTORE ## 15059 15060 var setOrResetAttribute = function setOrResetAttribute(element, attrName, value) { 15061 if (!value) { 15062 element.removeAttribute(attrName); 15063 return; 15064 } 15065 element.setAttribute(attrName, value); 15066 }; 15067 var restoreOriginalAttrs = function restoreOriginalAttrs(element, attributes) { 15068 if (!hasOriginalAttrs(element)) { 15069 return; 15070 } 15071 var originals = getOriginalAttrs(element); 15072 attributes.forEach(function (attribute) { 15073 setOrResetAttribute(element, attribute, originals[attribute]); 15074 }); 15075 }; 15076 var restoreOriginalBgImage = function restoreOriginalBgImage(element) { 15077 if (!hasOriginalAttrs(element)) { 15078 return; 15079 } 15080 var originals = getOriginalAttrs(element); 15081 element.style.backgroundImage = originals.backgroundImage; 15082 }; 15083 15084 var manageApplied = function manageApplied(element, settings, instance) { 15085 addClass(element, settings.class_applied); 15086 setStatus(element, statusApplied); 15087 // Instance is not provided when loading is called from static class 15088 if (!instance) return; 15089 if (settings.unobserve_completed) { 15090 // Unobserve now because we can't do it on load 15091 unobserve(element, settings); 15092 } 15093 safeCallback(settings.callback_applied, element, instance); 15094 }; 15095 var manageLoading = function manageLoading(element, settings, instance) { 15096 addClass(element, settings.class_loading); 15097 setStatus(element, statusLoading); 15098 // Instance is not provided when loading is called from static class 15099 if (!instance) return; 15100 updateLoadingCount(instance, +1); 15101 safeCallback(settings.callback_loading, element, instance); 15102 }; 15103 var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) { 15104 if (!value) { 15105 return; 15106 } 15107 element.setAttribute(attrName, value); 15108 }; 15109 var setImageAttributes = function setImageAttributes(element, settings) { 15110 setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes)); 15111 setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset)); 15112 setAttributeIfValue(element, SRC, getData(element, settings.data_src)); 15113 }; 15114 var setSourcesImg = function setSourcesImg(imgEl, settings) { 15115 forEachPictureSource(imgEl, function (sourceTag) { 15116 setOriginalsObject(sourceTag, attrsSrcSrcsetSizes); 15117 setImageAttributes(sourceTag, settings); 15118 }); 15119 setOriginalsObject(imgEl, attrsSrcSrcsetSizes); 15120 setImageAttributes(imgEl, settings); 15121 }; 15122 var setSourcesIframe = function setSourcesIframe(iframe, settings) { 15123 setOriginalsObject(iframe, attrsSrc); 15124 setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src)); 15125 }; 15126 var setSourcesVideo = function setSourcesVideo(videoEl, settings) { 15127 forEachVideoSource(videoEl, function (sourceEl) { 15128 setOriginalsObject(sourceEl, attrsSrc); 15129 setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src)); 15130 }); 15131 setOriginalsObject(videoEl, attrsSrcPoster); 15132 setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster)); 15133 setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src)); 15134 videoEl.load(); 15135 }; 15136 var setSourcesObject = function setSourcesObject(object, settings) { 15137 setOriginalsObject(object, attrsData); 15138 setAttributeIfValue(object, DATA, getData(object, settings.data_src)); 15139 }; 15140 var setBackground = function setBackground(element, settings, instance) { 15141 var bg1xValue = getData(element, settings.data_bg); 15142 var bgHiDpiValue = getData(element, settings.data_bg_hidpi); 15143 var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; 15144 if (!bgDataValue) return; 15145 element.style.backgroundImage = "url(\"".concat(bgDataValue, "\")"); 15146 getTempImage(element).setAttribute(SRC, bgDataValue); 15147 manageLoading(element, settings, instance); 15148 }; 15149 15150 // NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg 15151 // BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM 15152 // COULD BE A GRADIENT BACKGROUND IMAGE 15153 var setMultiBackground = function setMultiBackground(element, settings, instance) { 15154 var bg1xValue = getData(element, settings.data_bg_multi); 15155 var bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi); 15156 var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; 15157 if (!bgDataValue) { 15158 return; 15159 } 15160 element.style.backgroundImage = bgDataValue; 15161 manageApplied(element, settings, instance); 15162 }; 15163 var setImgsetBackground = function setImgsetBackground(element, settings, instance) { 15164 var bgImgSetDataValue = getData(element, settings.data_bg_set); 15165 if (!bgImgSetDataValue) { 15166 return; 15167 } 15168 var imgSetValues = bgImgSetDataValue.split("|"); 15169 var bgImageValues = imgSetValues.map(function (value) { 15170 return "image-set(".concat(value, ")"); 15171 }); 15172 element.style.backgroundImage = bgImageValues.join(); 15173 // Temporary fix for Chromeium with the -webkit- prefix 15174 if (element.style.backgroundImage === "") { 15175 bgImageValues = imgSetValues.map(function (value) { 15176 return "-webkit-image-set(".concat(value, ")"); 15177 }); 15178 element.style.backgroundImage = bgImageValues.join(); 15179 } 15180 manageApplied(element, settings, instance); 15181 }; 15182 var setSourcesFunctions = { 15183 IMG: setSourcesImg, 15184 IFRAME: setSourcesIframe, 15185 VIDEO: setSourcesVideo, 15186 OBJECT: setSourcesObject 15187 }; 15188 var setSourcesNative = function setSourcesNative(element, settings) { 15189 var setSourcesFunction = setSourcesFunctions[element.tagName]; 15190 if (!setSourcesFunction) { 15191 return; 15192 } 15193 setSourcesFunction(element, settings); 15194 }; 15195 var setSources = function setSources(element, settings, instance) { 15196 var setSourcesFunction = setSourcesFunctions[element.tagName]; 15197 if (!setSourcesFunction) { 15198 return; 15199 } 15200 setSourcesFunction(element, settings); 15201 manageLoading(element, settings, instance); 15202 }; 15203 15204 var elementsWithLoadEvent = ["IMG", "IFRAME", "VIDEO", "OBJECT"]; 15205 var hasLoadEvent = function hasLoadEvent(element) { 15206 return elementsWithLoadEvent.indexOf(element.tagName) > -1; 15207 }; 15208 var checkFinish = function checkFinish(settings, instance) { 15209 if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) { 15210 safeCallback(settings.callback_finish, instance); 15211 } 15212 }; 15213 var addEventListener = function addEventListener(element, eventName, handler) { 15214 element.addEventListener(eventName, handler); 15215 element.llEvLisnrs[eventName] = handler; 15216 }; 15217 var removeEventListener = function removeEventListener(element, eventName, handler) { 15218 element.removeEventListener(eventName, handler); 15219 }; 15220 var hasEventListeners = function hasEventListeners(element) { 15221 return !!element.llEvLisnrs; 15222 }; 15223 var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) { 15224 if (!hasEventListeners(element)) element.llEvLisnrs = {}; 15225 var loadEventName = element.tagName === "VIDEO" ? "loadeddata" : "load"; 15226 addEventListener(element, loadEventName, loadHandler); 15227 addEventListener(element, "error", errorHandler); 15228 }; 15229 var removeEventListeners = function removeEventListeners(element) { 15230 if (!hasEventListeners(element)) { 15231 return; 15232 } 15233 var eventListeners = element.llEvLisnrs; 15234 for (var eventName in eventListeners) { 15235 var handler = eventListeners[eventName]; 15236 removeEventListener(element, eventName, handler); 15237 } 15238 delete element.llEvLisnrs; 15239 }; 15240 var doneHandler = function doneHandler(element, settings, instance) { 15241 deleteTempImage(element); 15242 updateLoadingCount(instance, -1); 15243 decreaseToLoadCount(instance); 15244 removeClass(element, settings.class_loading); 15245 if (settings.unobserve_completed) { 15246 unobserve(element, instance); 15247 } 15248 }; 15249 var loadHandler = function loadHandler(event, element, settings, instance) { 15250 var goingNative = hasStatusNative(element); 15251 doneHandler(element, settings, instance); 15252 addClass(element, settings.class_loaded); 15253 setStatus(element, statusLoaded); 15254 safeCallback(settings.callback_loaded, element, instance); 15255 if (!goingNative) checkFinish(settings, instance); 15256 }; 15257 var errorHandler = function errorHandler(event, element, settings, instance) { 15258 var goingNative = hasStatusNative(element); 15259 doneHandler(element, settings, instance); 15260 addClass(element, settings.class_error); 15261 setStatus(element, statusError); 15262 safeCallback(settings.callback_error, element, instance); 15263 if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes); 15264 if (!goingNative) checkFinish(settings, instance); 15265 }; 15266 var addOneShotEventListeners = function addOneShotEventListeners(element, settings, instance) { 15267 var elementToListenTo = getTempImage(element) || element; 15268 if (hasEventListeners(elementToListenTo)) { 15269 // This happens when loading is retried twice 15270 return; 15271 } 15272 var _loadHandler = function _loadHandler(event) { 15273 loadHandler(event, element, settings, instance); 15274 removeEventListeners(elementToListenTo); 15275 }; 15276 var _errorHandler = function _errorHandler(event) { 15277 errorHandler(event, element, settings, instance); 15278 removeEventListeners(elementToListenTo); 15279 }; 15280 addEventListeners(elementToListenTo, _loadHandler, _errorHandler); 15281 }; 15282 15283 var loadBackground = function loadBackground(element, settings, instance) { 15284 addTempImage(element); 15285 addOneShotEventListeners(element, settings, instance); 15286 saveOriginalBackgroundStyle(element); 15287 setBackground(element, settings, instance); 15288 setMultiBackground(element, settings, instance); 15289 setImgsetBackground(element, settings, instance); 15290 }; 15291 var loadRegular = function loadRegular(element, settings, instance) { 15292 addOneShotEventListeners(element, settings, instance); 15293 setSources(element, settings, instance); 15294 }; 15295 var load = function load(element, settings, instance) { 15296 if (hasLoadEvent(element)) { 15297 loadRegular(element, settings, instance); 15298 } else { 15299 loadBackground(element, settings, instance); 15300 } 15301 }; 15302 var loadNative = function loadNative(element, settings, instance) { 15303 element.setAttribute("loading", "lazy"); 15304 addOneShotEventListeners(element, settings, instance); 15305 setSourcesNative(element, settings); 15306 setStatus(element, statusNative); 15307 }; 15308 15309 var removeImageAttributes = function removeImageAttributes(element) { 15310 element.removeAttribute(SRC); 15311 element.removeAttribute(SRCSET); 15312 element.removeAttribute(SIZES); 15313 }; 15314 var resetSourcesImg = function resetSourcesImg(element) { 15315 forEachPictureSource(element, function (sourceTag) { 15316 removeImageAttributes(sourceTag); 15317 }); 15318 removeImageAttributes(element); 15319 }; 15320 15321 var restoreImg = function restoreImg(imgEl) { 15322 forEachPictureSource(imgEl, function (sourceEl) { 15323 restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes); 15324 }); 15325 restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes); 15326 }; 15327 var restoreVideo = function restoreVideo(videoEl) { 15328 forEachVideoSource(videoEl, function (sourceEl) { 15329 restoreOriginalAttrs(sourceEl, attrsSrc); 15330 }); 15331 restoreOriginalAttrs(videoEl, attrsSrcPoster); 15332 videoEl.load(); 15333 }; 15334 var restoreIframe = function restoreIframe(iframeEl) { 15335 restoreOriginalAttrs(iframeEl, attrsSrc); 15336 }; 15337 var restoreObject = function restoreObject(objectEl) { 15338 restoreOriginalAttrs(objectEl, attrsData); 15339 }; 15340 var restoreFunctions = { 15341 IMG: restoreImg, 15342 IFRAME: restoreIframe, 15343 VIDEO: restoreVideo, 15344 OBJECT: restoreObject 15345 }; 15346 var restoreAttributes = function restoreAttributes(element) { 15347 var restoreFunction = restoreFunctions[element.tagName]; 15348 if (!restoreFunction) { 15349 restoreOriginalBgImage(element); 15350 return; 15351 } 15352 restoreFunction(element); 15353 }; 15354 var resetClasses = function resetClasses(element, settings) { 15355 if (hasEmptyStatus(element) || hasStatusNative(element)) { 15356 return; 15357 } 15358 removeClass(element, settings.class_entered); 15359 removeClass(element, settings.class_exited); 15360 removeClass(element, settings.class_applied); 15361 removeClass(element, settings.class_loading); 15362 removeClass(element, settings.class_loaded); 15363 removeClass(element, settings.class_error); 15364 }; 15365 var restore = function restore(element, settings) { 15366 restoreAttributes(element); 15367 resetClasses(element, settings); 15368 resetStatus(element); 15369 deleteOriginalAttrs(element); 15370 }; 15371 15372 var cancelLoading = function cancelLoading(element, entry, settings, instance) { 15373 if (!settings.cancel_on_exit) return; 15374 if (!hasStatusLoading(element)) return; 15375 if (element.tagName !== "IMG") return; //Works only on images 15376 removeEventListeners(element); 15377 resetSourcesImg(element); 15378 restoreImg(element); 15379 removeClass(element, settings.class_loading); 15380 updateLoadingCount(instance, -1); 15381 resetStatus(element); 15382 safeCallback(settings.callback_cancel, element, entry, instance); 15383 }; 15384 15385 var onEnter = function onEnter(element, entry, settings, instance) { 15386 var dontLoad = hadStartedLoading(element); /* Save status 15387 before setting it, to prevent loading it again. Fixes #526. */ 15388 setStatus(element, statusEntered); 15389 addClass(element, settings.class_entered); 15390 removeClass(element, settings.class_exited); 15391 unobserveEntered(element, settings, instance); 15392 safeCallback(settings.callback_enter, element, entry, instance); 15393 if (dontLoad) return; 15394 load(element, settings, instance); 15395 }; 15396 var onExit = function onExit(element, entry, settings, instance) { 15397 if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing 15398 addClass(element, settings.class_exited); 15399 cancelLoading(element, entry, settings, instance); 15400 safeCallback(settings.callback_exit, element, entry, instance); 15401 }; 15402 15403 var tagsWithNativeLazy = ["IMG", "IFRAME", "VIDEO"]; 15404 var shouldUseNative = function shouldUseNative(settings) { 15405 return settings.use_native && "loading" in HTMLImageElement.prototype; 15406 }; 15407 var loadAllNative = function loadAllNative(elements, settings, instance) { 15408 elements.forEach(function (element) { 15409 if (tagsWithNativeLazy.indexOf(element.tagName) === -1) { 15410 return; 15411 } 15412 loadNative(element, settings, instance); 15413 }); 15414 setToLoadCount(instance, 0); 15415 }; 15416 15417 var isIntersecting = function isIntersecting(entry) { 15418 return entry.isIntersecting || entry.intersectionRatio > 0; 15419 }; 15420 var getObserverSettings = function getObserverSettings(settings) { 15421 return { 15422 root: settings.container === document ? null : settings.container, 15423 rootMargin: settings.thresholds || settings.threshold + "px" 15424 }; 15425 }; 15426 var intersectionHandler = function intersectionHandler(entries, settings, instance) { 15427 entries.forEach(function (entry) { 15428 return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance); 15429 }); 15430 }; 15431 var observeElements = function observeElements(observer, elements) { 15432 elements.forEach(function (element) { 15433 observer.observe(element); 15434 }); 15435 }; 15436 var updateObserver = function updateObserver(observer, elementsToObserve) { 15437 resetObserver(observer); 15438 observeElements(observer, elementsToObserve); 15439 }; 15440 var setObserver = function setObserver(settings, instance) { 15441 if (!supportsIntersectionObserver || shouldUseNative(settings)) { 15442 return; 15443 } 15444 instance._observer = new IntersectionObserver(function (entries) { 15445 intersectionHandler(entries, settings, instance); 15446 }, getObserverSettings(settings)); 15447 }; 15448 15449 var toArray = function toArray(nodeSet) { 15450 return Array.prototype.slice.call(nodeSet); 15451 }; 15452 var queryElements = function queryElements(settings) { 15453 return settings.container.querySelectorAll(settings.elements_selector); 15454 }; 15455 var excludeManagedElements = function excludeManagedElements(elements) { 15456 return toArray(elements).filter(hasEmptyStatus); 15457 }; 15458 var hasError = function hasError(element) { 15459 return hasStatusError(element); 15460 }; 15461 var filterErrorElements = function filterErrorElements(elements) { 15462 return toArray(elements).filter(hasError); 15463 }; 15464 var getElementsToLoad = function getElementsToLoad(elements, settings) { 15465 return excludeManagedElements(elements || queryElements(settings)); 15466 }; 15467 15468 var retryLazyLoad = function retryLazyLoad(settings, instance) { 15469 var errorElements = filterErrorElements(queryElements(settings)); 15470 errorElements.forEach(function (element) { 15471 removeClass(element, settings.class_error); 15472 resetStatus(element); 15473 }); 15474 instance.update(); 15475 }; 15476 var setOnlineCheck = function setOnlineCheck(settings, instance) { 15477 if (!runningOnBrowser) { 15478 return; 15479 } 15480 instance._onlineHandler = function () { 15481 retryLazyLoad(settings, instance); 15482 }; 15483 window.addEventListener("online", instance._onlineHandler); 15484 }; 15485 var resetOnlineCheck = function resetOnlineCheck(instance) { 15486 if (!runningOnBrowser) { 15487 return; 15488 } 15489 window.removeEventListener("online", instance._onlineHandler); 15490 }; 15491 15492 var LazyLoad = function LazyLoad(customSettings, elements) { 15493 var settings = getExtendedSettings(customSettings); 15494 this._settings = settings; 15495 this.loadingCount = 0; 15496 setObserver(settings, this); 15497 setOnlineCheck(settings, this); 15498 this.update(elements); 15499 }; 15500 LazyLoad.prototype = { 15501 update: function update(givenNodeset) { 15502 var settings = this._settings; 15503 var elementsToLoad = getElementsToLoad(givenNodeset, settings); 15504 setToLoadCount(this, elementsToLoad.length); 15505 if (isBot || !supportsIntersectionObserver) { 15506 this.loadAll(elementsToLoad); 15507 return; 15508 } 15509 if (shouldUseNative(settings)) { 15510 loadAllNative(elementsToLoad, settings, this); 15511 return; 15512 } 15513 updateObserver(this._observer, elementsToLoad); 15514 }, 15515 destroy: function destroy() { 15516 // Observer 15517 if (this._observer) { 15518 this._observer.disconnect(); 15519 } 15520 // Clean handlers 15521 resetOnlineCheck(this); 15522 // Clean custom attributes on elements 15523 queryElements(this._settings).forEach(function (element) { 15524 deleteOriginalAttrs(element); 15525 }); 15526 // Delete all internal props 15527 delete this._observer; 15528 delete this._settings; 15529 delete this._onlineHandler; 15530 delete this.loadingCount; 15531 delete this.toLoadCount; 15532 }, 15533 loadAll: function loadAll(elements) { 15534 var _this = this; 15535 var settings = this._settings; 15536 var elementsToLoad = getElementsToLoad(elements, settings); 15537 elementsToLoad.forEach(function (element) { 15538 unobserve(element, _this); 15539 load(element, settings, _this); 15540 }); 15541 }, 15542 restoreAll: function restoreAll() { 15543 var settings = this._settings; 15544 queryElements(settings).forEach(function (element) { 15545 restore(element, settings); 15546 }); 15547 } 15548 }; 15549 LazyLoad.load = function (element, customSettings) { 15550 var settings = getExtendedSettings(customSettings); 15551 load(element, settings); 15552 }; 15553 LazyLoad.resetStatus = function (element) { 15554 resetStatus(element); 15555 }; 15556 15557 // Automatic instances creation if required (useful for async script loading) 15558 if (runningOnBrowser) { 15559 autoInitialize(LazyLoad, window.lazyLoadOptions); 15560 } 15561 15562 return LazyLoad; 15563 15564}))); 15565 15566 15567/***/ })
15567 15568 15569/******/ }); 15570/************************************************************************/ 15571/******/ // The module cache 15572/******/ var __webpack_module_cache__ = {}; 15573/******/ 15574/******/ // The require function 15575/******/ function __webpack_require__(moduleId) { 15576/******/ // Check if module is in cache 15577/******/ var cachedModule = __webpack_module_cache__[moduleId]; 15578/******/ if (cachedModule !== undefined) { 15579/******/ return cachedModule.exports; 15580/******/ } 15581/******/ // Create a new module (and put it into the cache) 15582/******/ var module = __webpack_module_cache__[moduleId] = { 15583/******/ // no module.id needed 15584/******/ // no module.loaded needed 15585/******/ exports: {} 15586/******/ }; 15587/******/ 15588/******/ // Execute the module function 15589/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 15590/******/ 15591/******/ // Return the exports of the module 15592/******/ return module.exports; 15593/******/ } 15594/******/ 15595/************************************************************************/ 15596/******/ /* webpack/runtime/compat get default export */ 15597/******/ !function() { 15598/******/ // getDefaultExport function for compatibility with non-harmony modules 15599/******/ __webpack_require__.n = function(module) { 15600/******/ var getter = module && module.__esModule ? 15601/******/ function() { return module['default']; } : 15602/******/ function() { return module; }; 15603/******/ __webpack_require__.d(getter, { a: getter }); 15604/******/ return getter; 15605/******/ }; 15606/******/ }(); 15607/******/ 15608/******/ /* webpack/runtime/define property getters */ 15609/******/ !function() { 15610/******/ // define getter functions for harmony exports 15611/******/ __webpack_require__.d = function(exports, definition) { 15612/******/ for(var key in definition) { 15613/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 15614/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 15615/******/ } 15616/******/ } 15617/******/ }; 15618/******/ }(); 15619/******/ 15620/******/ /* webpack/runtime/global */ 15621/******/ !function() { 15622/******/ __webpack_require__.g = (function() { 15623/******/ if (typeof globalThis === 'object') return globalThis; 15624/******/ try { 15625/******/ return this || new Function('return this')(); 15626/******/ } catch (e) { 15627/******/ if (typeof window === 'object') return window; 15628/******/ } 15629/******/ })(); 15630/******/ }(); 15631/******/ 15632/******/ /* webpack/runtime/hasOwnProperty shorthand */ 15633/******/ !function() { 15634/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 15635/******/ }(); 15636/******/ 15637/******/ /* webpack/runtime/make namespace object */ 15638/******/ !function() { 15639/******/ // define __esModule on exports 15640/******/ __webpack_require__.r = function(exports) { 15641/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 15642/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 15643/******/ } 15644/******/ Object.defineProperty(exports, '__esModule', { value: true }); 15645/******/ }; 15646/******/ }(); 15647/******/ 15648/************************************************************************/ 15649var __webpack_exports__ = {}; 15650// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 15651!function() { 15652"use strict"; 15653/*!***************************!*\ 15654 !*** ./src/js/general.js ***! 15655 \***************************/ 15656__webpack_require__.r(__webpack_exports__); 15657/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js"); 15658/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__); 15659/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js"); 15660/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__); 15661/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); 15662/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2__); 15663/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); 15664/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__); 15665/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); 15666/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__); 15667/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js"); 15668/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__); 15669/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); 15670/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__); 15671/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); 15672/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__); 15673/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! jquery-inview/jquery.inview */ "./node_modules/jquery-inview/jquery.inview.js"); 15674/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8__); 15675/* harmony import */ var vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vanilla-lazyload/dist/lazyload */ "./node_modules/vanilla-lazyload/dist/lazyload.js"); 15676/* harmony import */ var vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9__); 15677/* harmony import */ var headroom_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! headroom.js */ "./node_modules/headroom.js/dist/headroom.js"); 15678/* harmony import */ var headroom_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(headroom_js__WEBPACK_IMPORTED_MODULE_10__); 15679 15680 15681 15682 15683 15684 15685 15686 15687var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); 15688 15689 15690 15691var clickEvent = ''; 15692if ('ontouchstart' in window) { 15693 clickEvent = 'touchstart'; 15694} else { 15695 clickEvent = 'click tap'; 15696} 15697$(function () { 15698 initInviewAnimate(); 15699 initHeadroom(); 15700 initLazyLoad(); 15701 handleHeaderMenuToggling(); 15702 initMobileDrawer(); 15703 initAnchorScroll(); 15704 customView(); 15705}); 15706$(window).on('load', function () { 15707 fixCF7MultiSubmit(); 15708}); 15709$(window).on('scroll', function () { 15710 var ua = window.navigator.userAgent; 15711 var isIE = /MSIE|Trident/.test(ua); 15712 if (!isIE) { 15713 checkActiveSection(); 15714 } 15715 $(".menu li.active").blur(); 15716}); 15717function initHeadroom() { 15718 var headerElements = document.getElementsByClassName("site-header"), 15719 headerElementsNo = headerElements.length; 15720 if (headerElementsNo > 0) { 15721 for (var i = 0; i < headerElementsNo; i++) { 15722 var headroom = new (headroom_js__WEBPACK_IMPORTED_MODULE_10___default())(headerElements[i]); 15723 headroom.init(); 15724 } 15725 } 15726 if (/\/news\//.test(window.location.href)) { 15727 $('.news').addClass('news-single'); 15728 } 15729 if (/\/jobs\//.test(window.location.href)) { 15730 $('.jobs').addClass('jobs-single'); 15731 } 15732} 15733function customView() { 15734 function isScrolledIntoView(elem) { 15735 var docViewTop = $(window).scrollTop(), 15736 docViewBottom = docViewTop + $(window).height(), 15737 elemTop = $(elem).offset().top, 15738 elemBottom = elemTop + $(elem).height(); 15739 //Is more than half of the element visible 15740 return elemTop + (elemBottom - elemTop) / 4.5 >= docViewTop && elemTop + (elemBottom - elemTop) / 4.5 <= docViewBottom; 15741 } 15742 if ($(window).width() < 960) { 15743 $('.custom-inview').each(function () { 15744 if (isScrolledIntoView(this) === true) { 15745 $(this).addClass('inview-active'); 15746 } 15747 }); 15748 $(window).on('scroll', function () { 15749 $('.custom-inview').each(function () { 15750 if (isScrolledIntoView(this) === true) { 15751 $(this).addClass('inview-active'); 15752 } 15753 }); 15754 }); 15755 } else { 15756 $(window).on('scroll', function () { 15757 $('.custom-inview').each(function () { 15758 if (isScrolledIntoView(this) === true) { 15759 $(this).addClass('inview-active'); 15760 } 15761 }); 15762 }); 15763 } 15764 if (/\/news\//.test(window.location.href)) { 15765 $('.custom-inview').each(function () { 15766 if (isScrolledIntoView(this) === true) { 15767 $(this).addClass('inview-active'); 15768 } 15769 }); 15770 $(window).on('scroll', function () { 15771 $('.custom-inview').each(function () { 15772 if (isScrolledIntoView(this) === true) { 15773 $(this).addClass('inview-active'); 15774 } 15775 }); 15776 }); 15777 } 15778} 15779function initLazyLoad() { 15780 var lazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({ 15781 elements_selector: '.lazy', 15782 load_delay: 300 15783 }); 15784 var variableSrc = 'src-desktop'; 15785 if ($(window).width() < 768) { 15786 variableSrc = 'src-mobile'; 15787 } 15788 var bgLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({ 15789 elements_selector: '.lazy-bg', 15790 data_bg: variableSrc, 15791 load_delay: 300 15792 }); 15793 var imgLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({ 15794 elements_selector: '.lazy-img', 15795 data_src: variableSrc, 15796 load_delay: 300 15797 }); 15798 var heroLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({ 15799 elements_selector: '.lazy-hero', 15800 data_bg: variableSrc, 15801 load_delay: 0 15802 }); 15803 heroLazy.loadAll(); 15804} 15805function initInviewAnimate() { 15806 var inviewElements = $(".inview-animate--fade").add(".inview-animate--move-up").add(".inview-animate--move-down").add(".inview-animate--move-left").add(".inview-animate--move-right") 15807 //.add( ".custom-inview" ) 15808 .add(".inview-animate--scale"); 15809 inviewElements.each(function () { 15810 var thisInviewElement = $(this); 15811 thisInviewElement.bind('inview', function (event, visible) { 15812 if (visible == true) { 15813 thisInviewElement.addClass('inview-active'); 15814 } 15815 }); 15816 }); 15817} 15818function handleHeaderMenuToggling() { 15819 var header = $(".site-header"), 15820 headerMenu = $(".site-header__nav-wrap"), 15821 headerBurger = $(".site-header__nav-trigger, .site-drawer__menu-toggle-close"); 15822 if (headerMenu.length) { 15823 headerBurger.on("click", function () { 15824 var index = 0; 15825 $('body').toggleClass('noscroll'); 15826 $(this).toggleClass("active"); 15827 headerMenu.toggleClass("menu-active menu-closed"); 15828 header.toggleClass("nav-active"); 15829 }); 15830 } 15831 $('.menu-item a').on('click', function (e) { 15832 $('body,html').removeClass('noscroll'); 15833 $('.site-header__nav').removeClass("active"); 15834 $('.site-header__mobile-trigger').removeClass("active"); 15835 }); 15836} 15837function initMobileDrawer() { 15838 $('.site-header__mobile-trigger a').on('click', function (e) { 15839 e.preventDefault(); 15840 $('.site-header__nav').toggleClass('active'); 15841 $('.site-header__mobile-trigger').toggleClass('active'); 15842 $('body, html').toggleClass('noscroll'); 15843 }); 15844} 15845function fixCF7MultiSubmit() { 15846 $('input.wpcf7-submit[type="submit"]').on('click', function () { 15847 var disabled = $(this).attr('data-disabled'); 15848 if (disabled && disabled == 'disabled') { 15849 return false;
15850 } else { 15851 $(this).attr('data-disabled', 'disabled').addClass('hide-text'); 15852 return true; 15853 } 15854 }); 15855 $('.wpcf7').bind('wpcf7submit', function () { 15856 $(this).find('input.wpcf7-submit[type="submit"]').attr('data-disabled', 'enabled').removeClass('hide-text'); 15857 }); 15858} 15859function initAnchorScroll() { 15860 // Select all links with hashes 15861 $('a[href*="/#"]') 15862 // Remove links that don't actually link to anything 15863 .not('[href="#"]').not('[href="#0"]').on('click', function (event) { 15864 // On-page links 15865 if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 15866 // Figure out element to scroll to 15867 var target = $(this.hash); 15868 target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 15869 // Does a scroll target exist? 15870 if (target.length) { 15871 $('.nav-primary .active').removeClass('active'); 15872 $(this).parent().addClass('active'); 15873 // Only prevent default if animation is actually gonna happen 15874 event.preventDefault(); 15875 $('html, body').animate({ 15876 scrollTop: target.offset().top 15877 }, 1000, function () { 15878 // Callback after animation 15879 // Must change focus! 15880 var $target = $(target); 15881 $target.focus(); 15882 if ($target.is(":focus")) { 15883 // Checking if the target was focused 15884 return false; 15885 } else { 15886 $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable 15887 $target.focus(); // Set focus again 15888 } 15889 ; 15890 }); 15891 } 15892 } 15893 }); 15894} 15895function checkActiveSection() { 15896 var windowTop = $(window).scrollTop(); 15897 var isMobile = $(window).width() < 992; 15898 $('[data-scroll]').each(function (index, elem) { 15899 var offsetTop = $(elem).offset().top, 15900 outerHeight = $(this).outerHeight(true); 15901 if (windowTop > offsetTop - (isMobile ? 150 : 450) && windowTop < offsetTop + Math.abs(outerHeight)) { 15902 var elemId = $(elem).data('scroll'); 15903 $(".menu li.active").removeClass('active'); 15904 $(".menu li a[href='/#" + elemId + "']").parent().addClass('active'); 15905 } else if ($(window).scrollTop() + $(window).height() > $(document).height() - 350) { 15906 $(".menu li.active").removeClass('active'); 15907 $(".menu li a[href='/#contact']").parent().addClass('active'); 15908 } 15909 if ($(window).scrollTop() < (isMobile ? 200 : 400)) { 15910 $(".menu li a[href='/#paq-approach']").parent().removeClass('active'); 15911 } 15912 }); 15913} 15914 15915/* menu active on specified url */ 15916document.addEventListener('DOMContentLoaded', function () { 15917 var currentUrl = window.location.href; 15918 var anchors = document.querySelectorAll('.menu-item a'); // Select all anchor tags inside menu items 15919 15920 if (currentUrl.includes('/news-archive')) { 15921 anchors.forEach(function (anchor) { 15922 if (anchor.getAttribute('href') === '/#news-and-media') { 15923 // Check if href matches 15924 var parentMenuItem = anchor.closest('.menu-item'); // Find the closest parent <li> 15925 if (parentMenuItem) { 15926 parentMenuItem.classList.add('page-active'); // Add active class to the parent <li> 15927 } 15928 } 15929 }); 15930 } 15931}); 15932}(); 15933/******/ })() 15934; 15935//# sourceMappingURL=general.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.